Sorry, I misread your example and missed that the variable you want to
look up is a dictionary and that you want to access a key within that
dictionary. In that case you need to look up just the var and access
the key on the result of the lookup:
- hosts: localhost
gather_facts: yes
vars:
Fedora:
key: value
tasks:
- debug:
msg: "{{ lookup('vars', ansible_distribution)['key'] }}"
On Thu, Jun 25, 2020 at 1:47 PM Willem Bos <[email protected]> wrote:
>
> Hi Martin,
>
> Thanks, but I'm not sure varnames is useful to me.
>
> I know what the variable is called, but don't know how to construct it
> programmatically (as the Ansible manual calls it). Taking the example code
> from the documentation results in an empty list:
>
> ...
> - debug:
> msg: "{{ lookup('varnames', ansible_distribution + '.hostkeys') }}"
> ...
> TASK [debug] *******
> ok: [localhost] => {
> "msg": []
> }
> ...
>
> Regards,
> Willem.
>
>
> On Wednesday, June 24, 2020 at 2:39:52 PM UTC+2, Martin Krizek wrote:
>>
>> You can use the varnames lookup to get variable names that match given
>> pattern: https://docs.ansible.com/ansible/latest/plugins/lookup/varnames.html
>>
>> On Wed, Jun 24, 2020 at 12:33 PM Willem Bos <[email protected]> wrote:
>> >
>> > Hi,
>> >
>> > The playbook below should generate a file with the content:
>> > a,b
>> > ssh_host_key
>> > ssh_rsa_host_key
>> >
>> > However, the way I construct the variable names results in either
>> > syntax/templating errors or 'variable name does not exists'.
>> >
>> > ---
>> > - hosts: localhost
>> > connection: local
>> >
>> > vars:
>> > CentOS:
>> > ciphers: "a,b"
>> > hostkeys:
>> > - "ssh_host_key"
>> > - "ssh_rsa_host_key"
>> > tasks:
>> > - copy:
>> > dest: "{{ playbook_dir }}/test.out"
>> > content: |
>> >
>> > # This works:
>> > {{ CentOS.ciphers }}
>> >
>> > # This results in 'No variable found with this name':
>> > {# Ciphers {{ lookup('vars', ansible_distribution + '.ciphers') }}
>> >
>> > # Templating errors:
>> > {% for hostkey in {{ lookup('vars', ansible_distribution +
>> > '.hostkeys') }} %}
>> > {{ hostkey }}
>> > {% endfor %}
>> >
>> > # Templating errors:
>> > {% for hostkey in {{
>> > hostvars[inventory_hostname][ansible_distribution + '.hostkeys'] }} %}
>> > {{ hostkey }}
>> > {% endfor %}
>> >
>> >
>> > What is the proper way to 'assemble' the variable names? Or is there a
>> > better way of doing this?
>> >
>> > Regards,
>> > Willem.
>> >
>> > --
>> > 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 view this discussion on the web visit
>> > https://groups.google.com/d/msgid/ansible-project/76b24a20-1c5b-46ea-a197-f1c390fcd0f7o%40googlegroups.com.
>>
> --
> 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 view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/97e0166f-d015-4097-a870-1a207b14c7a5o%40googlegroups.com.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CADDq2ENwdysRsoXDSF6KyYutPhte8Mc7G3j4pZE1o9DXeMBWKQ%40mail.gmail.com.