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