Presumably you've got csv files coming from somewhere else that you want to 
use to drive things?

If not, I'd suggest to you see if you can use 
group_vars http://docs.ansible.com/ansible/intro_inventory.html#group-variables 
to set variables for specific groups.  Bear in mind you can have multiple 
groups and you can have groups which are specific to just one inventory 
file or are shared, so they can be pretty flexible.

I think using group_vars would 'go with the grain' better than using the 
lookups, and give you more readable playbooks.

Probably not what you wanted to hear, but hope it helps,

Jon


On Monday, October 3, 2016 at 10:18:15 AM UTC+1, 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') }}"
>     # with_lines: "/usr/bin/awk -F',' '!/^#/ && !/^$/ { print $1 }' 
> groups.csv"
>     # with_items: "{{ groups_out.stdout_lines }}"
>     with_lines: "{{ groups_out.stdout_lines }}"
>
>  Using with_lines and groups_out.stdout_lines gives me:
>
> TASK [Process groups] 
> **********************************************************
> /bin/sh: accounts: command not found
> fatal: [localhost]: FAILED! => {"failed": true, "msg": 
> "lookup_plugin.lines(accounts) 
> returned 127"}
>
> Using with_items or with_lines and the awk command directly gives me:
>
> TASK [Process groups] 
> **********************************************************
> failed: [localhost] (item=accounts) => {"failed": true, "item": "accounts"
> , "msg": "argument system is of type <type 'list'> and we were unable to 
> convert to bool"}
> failed: [localhost] (item=engineering) => {"failed": true, "item": 
> "engineering", "msg": "argument system is of type <type 'list'> and we 
> were unable to convert to bool"}
>
> Removing the loop and just specifying a key, in the following output 
> "accounts" was used:
>
> TASK [Process groups] 
> **********************************************************
> fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": 
> "argument 
> system is of type <type 'list'> and we were unable to convert to bool"}
>
> Ultimately I'd like to use csv files to define config although I'm not 
> sure i'm going about this the right way.
>
> Asil
>
>

-- 
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/2a1571a9-56cc-4953-bb51-fb1aa10eca6f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to