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.

Reply via email to