On Mon, 1 Jul 2024 06:17:26 -0700 (PDT) "andregr...@gmail.com" <andregronwal...@gmail.com> wrote:
> ... put group-information into each host ... per host to > control if a playbook may or may not work on a host The playbook name is not available to the inventory plugins. The below solution provides the inventory plugin with the playbook name in the extra variable. The allowed hosts are listed in a dictionary in group_vars. * Create a dictionary with the lists of the allowed hosts shell> cat inventory/alllinux/01-hosts.yml alllinux: hosts: test_01: test_02: test_03: vars: play_allow: default: [] playbook_01: [test_01, test_02] playbook_02: [test_02, test_03] For example, the below playbook shall run on the hosts test_01 and test_02 only shell> cat playbook_01.yml - name: playbook_01 hosts: my_hosts tasks: - debug: msg: Start play * Use the inventory plugin *constructed* and create the group *my_hosts* shell> cat inventory/alllinux/02-constructed.yml plugin: ansible.builtin.constructed use_extra_vars: true use_vars_plugins: true compose: my_hosts_allow: play_allow[my_play|d('default')] groups: my_hosts: inventory_hostname in my_hosts_allow * Unfortunately, the name of the playbook is not available in the inventory plugins. Therefor, you have to provide it explicitly. For example, in the extra vars *my_play* shell> ansible-playbook -i inventory/alllinux -e my_play=playbook_01 playbook_01.yml gives abridged ok: [test_01] => msg: Start play ok: [test_02] => msg: Start play HTH, -- Vladimir Botka -- 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 ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/20240701212715.68ce7c50%40gmail.com.
pgpeFZSch24wO.pgp
Description: OpenPGP digital signature