Hi

Thanks, but that seems to be making the play conditional on whether there
are any 'web' hosts in the play.
What I am looking for is a way to access those group_vars regardless of
whether there are any such hosts in the play.



On Fri, 16 Sept 2022 at 13:19, Todd Lewis <[email protected]> wrote:

> Better:
>     groups['web'] | default([]) | length
>
> On Friday, September 16, 2022 at 6:50:22 AM UTC-4 Todd Lewis wrote:
>
>> Can you add
>>     when: groups['web'] | length
>> onto the "populate secret for use elsewhere" task?
>>
>> On Friday, September 16, 2022 at 5:34:37 AM UTC-4 [email protected]
>> wrote:
>>
>>> Hi
>>>
>>> I have a playbook that contains several plays. One play is performing
>>> API related tasks in AWS, so it's using the local connection and localhost.
>>> The plays after that targets real hosts.
>>> Pseudo code:
>>>
>>> - name: do API related work
>>>   hosts: localhost
>>>   connection: local
>>>   become: false
>>>   gather_facts: false
>>>   tags: api
>>>   tasks:
>>>     - name: populate secret for use elsewhere
>>>       community.aws.aws_secret:
>>>         name: foopass
>>>         secret: "{{ hostvars[groups['web'][0]].foopass }}"
>>>
>>> - name: deploy web servers
>>>   hosts: web
>>>   tasks:
>>>     - name: save secret
>>>       copy:
>>>         dest: foopass.txt
>>>         content: "{{ foopass }}"
>>>
>>>
>>> This play works, but I don't know how to selectively run the API play if
>>> there are no web servers in the play (as they might not exist yet).
>>> If I try '-i localhost, --connection local', then the API task doesn't
>>> find any hostvars for a 'web' host:
>>>
>>> TASK [populate secret for use elsewhere]
>>> ***************************************************************************************************************
>>> fatal: [localhost]: FAILED! =>
>>>   msg: '{{ hostvars[groups[''web''][0]].foopass }}: ''dict object'' has
>>> no attribute ''web'''
>>>
>>> This seems to make sense. But how would I go about accessing those vars?
>>> Is it possible at all to access variables for hosts that are NOT in the
>>> current play?
>>>
>>> FYI the variable is not gathered (again, because the web host is not yet
>>> there), it is defined in group_vars/web/main.yml - so it is there on disk.
>>>
>>> Thanks!
>>>
>>> Dick Visser
>>>
>>>
>>> --
> 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/c75c3488-9e4b-4c71-97a1-8ff249585605n%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/c75c3488-9e4b-4c71-97a1-8ff249585605n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAF8BbLbaMQ9fXdOyVF-Djjc8%2BgRBEL41JtLvY69F%2ByuG28SYoA%40mail.gmail.com.

Reply via email to