On 9/16/22 10:23 AM, Brian Coca wrote:
vars_files:
    - group_vars/web/main.yml
Do not load group_vars/host_vars directly, this is the job of the vars plugin,
you create duplicate entries and mask the actual expected values from
normal precedence resolution.
The vars_files thing was my suggestion, and I heartily endorse Brian's stance on this — i.e. to not to. "This works in my little test" and "this feels shaky" were too subtle. Just don't.

Reflecting further on the nature of the problem as you re-stated it:
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.
If you have a need to access these group variables' values even when there are no host members in the relevant group(s) in your inventory, then I assert that these values are improperly scoped. By that I mean their "true root" should not be that group, but rather some other source that's available to all the places that need it. For example

*---
# group_vars/all/web_centric_vars.yml
web_foopass: sEcrEtSauCE
...*

*---**
**# group_vars/web/main.yml**
**foopass: "{{ web_foopass }}"**
**...*

With those two files in place, your initial play becomes
*---
- 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: "{{ web_foopass }}"
...**
*
The later web-scoped play can use 'foopass' from the 'group_vars/web/main.yml' file. This should always work regardless of how many hosts – including zero – are in the 'web' group.

One could reasonably argue that, given 'web_foopass' in an 'all/*' file, there's no need for 'foopass' in a 'group_vars/web' file. However, a 'host_vars/web' file or some other higher precedence source my override the group_vars 'foopass' in certain circumstances. We don't know how much complexity you've left out, so do it the way that will make the most sense to the maintainers.

--
Todd

--
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/08d41c56-2379-f336-d69a-7bc48765f0e7%40gmail.com.

Reply via email to