410 Include variables from conf.d
Use case
Create list of variables from files in the directory conf.d. Use the role vbotka.freebsd.lib
tasks al_include_confd_vars_list.yml
- name: Create list of vars from files in directory conf.d
vars:
al_include_confd_dir: "{{ playbook_dir }}/conf.d"
ansible.builtin.import_role:
name: vbotka.freebsd.lib
tasks_from: al_include_confd_vars_list
Tree
shell > tree .
.
├── ansible.cfg
├── conf.d
│ ├── devel.yml
│ ├── production.yml
│ └── qa.yml
├── hosts
└── pb.yml
Synopsis
At the managed node:
Create a list of variables’ values from files in the controller’s directory
conf.dDisplay the created list.
Requirements
role vbotka.freebsd.lib
Notes
The variables’ names are not collected. The resulting list comprises the variables’ values only.
Note
vbotka.freebsd.lib is the role lib in the collection vbotka.freebsd
vbotka.ansible_lib is the role ansible_lib in the namespace vbotka
Please make sure the versions are the same before you switch between them.
ansible.cfg
[defaults]
inventory = $PWD/hosts
gathering = explicit
callback_result_format = yaml
display_skipped_hosts = false
[connection]
pipelining = true
Inventory hosts
iocage_04 ansible_host=10.1.0.29
[iocage]
iocage_04
[iocage:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent
conf.d
conf.d/devel.yml
obj:
team: devel
users: [charlie, david]
conf.d/production.yml
obj:
team: production
users: [alice, bob]
conf.d/qa.yml
obj1:
team: qa1
users: [mallory, ted]
obj2:
team: qa2
users: [darth, wendy]
Expected results
al_include_confd_vars_list_type: plain
al_include_confd_vars_list:
- team: production
users: [alice, bob]
- team: qa1
users: [mallory, ted]
- team: qa2
users: [darth, wendy]
- team: devel
users: [charlie, david]
al_include_confd_vars_list_type: fname
al_include_confd_vars_list:
- fname: production
vars:
- team: production
users: [alice, bob]
- fname: qa
vars:
- team: qa1
users: [mallory, ted]
- team: qa2
users: [darth, wendy]
- fname: devel
vars:
- team: devel
users: [charlie, david]
Playbook pb.yml
- name: Test vbotka.freebsd.lib al_include_confd_vars_list
hosts: all
tasks:
- name: List type | plain
vars:
al_include_confd_dir: "{{ playbook_dir }}/conf.d"
al_include_confd_vars_list_type: plain
run_once: true
block:
- name: Create list of vars from files in directory conf.d
ansible.builtin.import_role:
name: vbotka.freebsd.lib
tasks_from: al_include_confd_vars_list
- debug:
msg: |
al_include_confd_vars_list_type: {{ al_include_confd_vars_list_type }}
al_include_confd_vars_list:
{{ al_include_confd_vars_list | to_yaml(indent=2) | indent(2) }}
- name: List type | fname
vars:
al_include_confd_dir: "{{ playbook_dir }}/conf.d"
al_include_confd_vars_list_type: fname
run_once: true
block:
- name: Create list of vars from files in directory conf.d
ansible.builtin.import_role:
name: vbotka.freebsd.lib
tasks_from: al_include_confd_vars_list
- debug:
msg: |
al_include_confd_vars_list_type: {{ al_include_confd_vars_list_type }}
al_include_confd_vars_list:
{{ al_include_confd_vars_list | to_yaml(indent=2) | indent(2) }}
Playbook output - Display variables
(env) > ansible-playbook pb.yml
PLAY [Test vbotka.freebsd.lib al_include_confd_vars_list] **********************
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Find configuration files.] ***
ok: [iocage_04 -> localhost]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create list of configuration files.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Find configuration links.] ***
ok: [iocage_04 -> localhost]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Add list of configuration links.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create empty al_include_confd_vars_list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create plain list of vars.] ***
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_plain.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/production.yml)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_plain.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/qa.yml)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_plain.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/devel.yml)
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Include production.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Add vars to list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Include qa.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Add vars to list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Include devel.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_plain: Add vars to list.] ***
ok: [iocage_04]
TASK [debug] *******************************************************************
ok: [iocage_04] =>
msg: |-
al_include_confd_vars_list_type: plain
al_include_confd_vars_list:
- team: production
users: [alice, bob]
- team: qa1
users: [mallory, ted]
- team: qa2
users: [darth, wendy]
- team: devel
users: [charlie, david]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Find configuration files.] ***
ok: [iocage_04 -> localhost]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create list of configuration files.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Find configuration links.] ***
ok: [iocage_04 -> localhost]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Add list of configuration links.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create empty al_include_confd_vars_list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list: Create list of vars incl. fname] ***
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_fname.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/production.yml)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_fname.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/qa.yml)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/lib/tasks/fn/al_include_confd_vars_list_fname.yml for iocage_04 => (item=/export/scratch/collections/ansible_collections/vbotka/freebsd/docs/source/examples/410/conf.d/devel.yml)
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Create al_local_fname] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Include production.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Add fname and vars to list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Create al_local_fname] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Include qa.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Add fname and vars to list.] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Create al_local_fname] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Include devel.yml] ***
ok: [iocage_04]
TASK [vbotka.freebsd.lib : Al_include_confd_vars_list_fname: Add fname and vars to list.] ***
ok: [iocage_04]
TASK [debug] *******************************************************************
ok: [iocage_04] =>
msg: |-
al_include_confd_vars_list_type: fname
al_include_confd_vars_list:
- fname: production
vars:
- team: production
users: [alice, bob]
- fname: qa
vars:
- team: qa1
users: [mallory, ted]
- team: qa2
users: [darth, wendy]
- fname: devel
vars:
- team: devel
users: [charlie, david]
PLAY RECAP *********************************************************************
iocage_04 : ok=33 changed=0 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0