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.

Reply via email to