On 03. okt. 2016 11:18, Asil Carlin wrote:
> Hi,
>
> I'm trying to use csvfile lookups to populate values in the groups module,
> but not having much luck. My csvfile:
>
> # groups.csv
> # name, gid [optional - leave blank], state [present|absent], system
> [yes|no]
> accounts,502,present,no
> engineering,504,present,no
>
> The playbook:
>
> ---
>
> - hosts: localhost
> become: True
> become_user: root
>
> tasks:
>
> - name: get groups
> command: /usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' groups.csv
> register: groups_out
>
> - 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') }}"
As you mention in a later post you are missing the delimiter, TAB is the
default.
And you key is literally "item" on all you lookup. To use the variable
item you'll have to concatenate like this.
lookup('csvfile', item + ' file=groups.csv delimiter=, col=n')
> # with_lines: "/usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }'
> groups.csv"
> # with_items: "{{ groups_out.stdout_lines }}"
> with_lines: "{{ groups_out.stdout_lines }}"
You can't only have a variable in with_items, it must be a command
https://docs.ansible.com/ansible/playbooks_loops.html#iterating-over-the-results-of-a-program-execution
>
> Using with_lines and groups_out.stdout_lines gives me:
>
> TASK [Process groups]
> **********************************************************
> /bin/sh: accounts: command not found
You don't have /bin/sh, that can be a problem, since default, Ansible is
depending on it.
--
Kai Stian Olstad