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/CAF8BbLbe3bAt4oj6_m0hnvL6r_zbhan3OwU7-Vy4M3ZmhRRu4Q%40mail.gmail.com.