* p.s. why ansible 1.7.2, it comes standard with Debian 8.5 (jessie)?
Err, :O I wanted to explain, why am I using, Ansible 1.7.2. and not
something new, since it comes standard with the Debian 8.5 distribution. I
know it is old. But that is not in my hand. Anyways.
On Thursday, July 7, 2016 at 7:08:11 PM UTC+2, Junaid Naseer wrote:
>
>
> - I am almost certain this is not possible in *Ansible* (at least not
> in version* 1.7.2*), but just to be thorough in my investigation,
> after exhausting all lookups on *google*, *stackoverflow*,
> *serverfault*, etc. I am posting it now here.
>
>
> - I have a list of usernames in a dictionary, something like this:
>
>
> keymap:
> userx:
> property1: xyz
> property2: abc
>
> usery:
> property1: xyz
> property2: abc
>
>
> - And then I have a set of files, essentially named like this in a
> folder:
>
>
> *$ /tmp/pub_keys/username_hostname*
>
>
> - I need to merge *all the keys for one user* from all the hosts into
> one authorized key.
> - So all keys from *userx* in one file, and all keys from *usery*
> in one file and so on.
> - To grab the keys from the files over all hosts, I tried with the
> following just to test, and it works fine.
> lookup('file', '/tmp/pub_keys/username_'+ansible_hostname+'.pub' )
> Next Step, was to try the following,
> - lookup('fileglob', '/tmp/pub_keys/username_'+'*'+'.pub').split(',')
> which also worked fine. So I can merge the keys, using the
> *authorized_keys* module, for ONE user.
> - This make my problem quite similar to this one:
>
> https://serverfault.com/questions/649721/how-can-i-have-a-nested-loop-with-a-fileglob-pattern
>
>
> - To get the list of all users, I need to use the *with_dict* module
> to get the usernames from the dictionary *keymap,* as named above.
> - But it seems there is no way to make *with_dict* and *with_file*
> work together.
> - I tried a number of permutations with *with_nested* and using *lookup
> with fileglob*, but to no avail. The entire list of all permutations
> tried is maybe too much to copy paste here.
> - I tried setting variables using *set_facts* and *vars* to avoid
> using the *with_dict* in the same play, but I could not get the vars
> defined in one play to be visible in a different play (my bad, I am an
> ansible n00b).
> - The only thing that I did not try is *with_subelements*. And
> anyways, I think it is not usable in my case, since I do not know
> beforehand 'the list of hosts for a given user', in the dictionary.
>
>
>
> - To expand on, what* *not working** means, (before I get burnt at the
> stake for saying, those words ), I explain below:
> - When I use a construct like the one listed here:
> https://docs.ansible.com/ansible/playbooks_loops.html#nested-loops,
> which in my case then becomes,
> -
>
> - name: give users access to multiple databases
> authorized_key: user="{{item.0}}" key="{{lookup('file', item.1)}}"
> with_nested:
> - {{users}}
> - key: "{{ lookup('fileglob',
> '/tmp/public_keys/'+item.key+'_'+ansible_hostname+'.pub').splitlines() }}"
>
> - The key returned in the above case, does not grab the list of files,
> but instead starts returning, the literal string *"{{
> lookup('fileglob',* ... and so on till the end of the string.
> - Replacing *fileglob* with *pipe* or *file*, did not get rid of the
> problem. It seems the problem stems from my (right or wrong) use of
> *with_nested*
>
>
>
> - Things that I avoided using, but will most certainly work: are
> using *python* and/or the *shell* to do delegate this work from
> ansible to bash or python. I was trying to solve this problem natively
> using ansible and ansible alone.
> -
>
> https://stackoverflow.com/questions/24250418/finding-file-name-in-files-section-of-current-ansible-role
>
>
> *tl,dr*
>
>
> Is it possible to use, *with_dict *together with *with_file* to achieve a
> nested-loop construct in *ansible 1.7.2*? It seems not.
> And especially so after reading the 2nd answer to this question:
> https://stackoverflow.com/questions/31566568/double-loop-ansible
>
>
>
> p.s. why ansible 1.7.2, it comes standard with Debian 8.5 (jessie)?
>
>
>
--
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/e5e303bf-8c4c-4d22-81a7-26c027189b1c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.