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
--
You received this message because you are subscribed to the Google Groups "Ansible
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/2ea04211-1cfc-3d22-3e99-c02fdf4c1aaf%40olstad.com.
For more options, visit https://groups.google.com/d/optout.