2016-09-30 16 views
2

私はさまざまなモジュールのコード行を減らす方法を試しています。スタンザを繰り返すことは意味がないようです。私は空白を埋めるのを助けるためにcsvfileルックアップを使いたいと思います。たとえば、次のCSVを考えてみましょう。アシスタント - csvfileルックアップで{{item}}を使用

# groups.csv 
# name, gid [optional - leave blank], state [present|absent], system [yes|no] 

accounts,502,present,no 
engineering,504,present,no 

したがって、すべてのグループ定義はCSV形式です。問題は、私が試しても問題を処理しています。グループモジュール内で検索を行うことができません。あなたがコードから見ることができるように

TASK [Process groups] ********************************************************** 
/bin/sh: accounts: command not found 
fatal: [localhost]: FAILED! => {"failed": true, "msg": "lookup_plugin.lines(accounts) returned 127"} 

が、私もwith_itemsとwith_lines使用を使用して試してみた:

--- 

- hosts: localhost 

    become: True 
    become_user: root 

    tasks: 

    - name: get groups 
    command: /usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' groups.csv 
    register: groups_out 

    - debug: var=groups_out.stdout_lines 


    - name: Process groups 
    group: > 
     name="{{ lookup('csvfile', 'item file=groups.csv col=0') }}" 
     gid="{{ lookup('csvfile', 'item file=groups.csv col=1') }}" 
     state="{{ lookup('csvfile', 'item file=groups.csv col=2') }}" 
     system="{{ lookup('csvfile', 'item file=groups.csv col=3') }}" 
    # with_lines: "/usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' groups.csv" 
    # with_items: "{{ groups_out.stdout_lines }}" 
    with_lines: "{{ groups_out.stdout_lines }}" 

その結果がこれです: だから最初は、私はこれをやってみたかったですawkコマンドを直接実行することができますが、グループモジュールは私にこれをやってもらえません。

Ansible 2.1.1.0私はこれを達成する方法を任意のアイデア

神社2.8 2.7.5 Pythonの 7 CentOSに上?予め

おかげで、

R以下

+0

何「/var/tmp/ansible.csv」ファイルのパーミッションであり、どのようなユーザーとのジャイブは「ansible」または「ansible・脚本」またはコマンドがされているものをユーザーに実行されていることを行いますとして実行? –

+0

それは事です - /var/tmp/ansible.csvというファイルはありません。/var/tmpは私のcwdです。 – Rowley

+0

'item + 'file -...を' 'item file = ...''に変更しました。 – Rowley

答えて

0

回答。彼らの支援のために、不可能なプロジェクトgooglegroupのJonとKaiに感謝します。

--- 

- hosts: localhost 

    become: True 
    become_user: root 

    tasks: 

    - name: get groups 
    command: /usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' /var/tmp/groups.csv 
    register: groups_out 

    - name: Process groups one 
    group: > 
     name={{ lookup('csvfile', item + ' file=groups.csv col=0 delimiter=,') }} 
     gid={{ lookup('csvfile', item + ' file=groups.csv col=1 delimiter=,') }} 
     state={{ lookup('csvfile', item + ' file=groups.csv col=2 delimiter=,') }} 
     system={{ lookup('csvfile', item + ' file=groups.csv col=3 delimiter=,') }} 
    with_items: "{{ groups_out.stdout_lines }}" 
    ignore_errors: True 

    - name: Process groups two 
    group: > 
     name={{ lookup('csvfile', item + ' file=groups.csv col=0 delimiter=,') }} 
     gid={{ lookup('csvfile', item + ' file=groups.csv col=1 delimiter=,') }} 
     state={{ lookup('csvfile', item + ' file=groups.csv col=2 delimiter=,') }} 
     system={{ lookup('csvfile', item + ' file=groups.csv col=3 delimiter=,') }} 
    with_lines: /usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' /var/tmp/groups.csv 
関連する問題