From af3b719b73cb1805c10cf6d6343e7eded63dc186 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Fri, 12 Nov 2021 20:46:51 +0000 Subject: [PATCH] Move group_vars to an inventory directory The group variables originally in ansible/group_vars/ were playbook group variables, due to being adjacent to the playbooks. Typically they provided default values for global variables in the all group, as well as some more specific groups. This has worked fairly well, but results in (at least) a couple of problems. 1. The default variable precedence rules mean that these playbook group variables have a higher precedence than inventory group variables (for a given group). This can make it challenging to override playbook group variables in the inventory in Kayobe configuration. 2. Any playbook run by Kayobe must be in the same directory as the playbook group variables in order to use them. Given that they include variables required for connectivity such as ansible_host and ansible_user, this is quite critical. For Kayobe custom playbooks, we work around this by symlinking to the group_vars directory from the directory containing the custom playbook. This is not an elegant workaround, and has assumptions about the relative paths of the Kayobe configuration and virtual environment in which Kayobe is installed. Story: 2010280 Task: 46233 Change-Id: Ifea5c7e73f6f410f96a7398bfd349d1f631d9fc0 --- ansible/{ => inventory}/group_vars/all/apt | 0 .../{ => inventory}/group_vars/all/bifrost | 0 ansible/{ => inventory}/group_vars/all/bmc | 0 .../{ => inventory}/group_vars/all/compute | 0 .../group_vars/all/controllers | 0 .../group_vars/all/dell-switch-bmp | 0 ansible/{ => inventory}/group_vars/all/dnf | 0 ansible/{ => inventory}/group_vars/all/dns | 0 ansible/{ => inventory}/group_vars/all/docker | 0 .../group_vars/all/docker-registry | 0 .../{ => inventory}/group_vars/all/globals | 0 .../{ => inventory}/group_vars/all/grafana | 0 ansible/{ => inventory}/group_vars/all/idrac | 0 .../{ => inventory}/group_vars/all/infra-vms | 0 .../{ => inventory}/group_vars/all/inspector | 0 ansible/{ => inventory}/group_vars/all/ipa | 0 ansible/{ => inventory}/group_vars/all/ironic | 0 ansible/{ => inventory}/group_vars/all/kolla | 0 .../{ => inventory}/group_vars/all/monasca | 0 .../{ => inventory}/group_vars/all/monitoring | 0 .../{ => inventory}/group_vars/all/network | 0 .../{ => inventory}/group_vars/all/neutron | 0 ansible/{ => inventory}/group_vars/all/nova | 0 ansible/{ => inventory}/group_vars/all/opensm | 0 .../{ => inventory}/group_vars/all/openstack | 0 .../{ => inventory}/group_vars/all/overcloud | 0 .../group_vars/all/overcloud-dib | 0 ansible/{ => inventory}/group_vars/all/pip | 0 ansible/{ => inventory}/group_vars/all/proxy | 0 ansible/{ => inventory}/group_vars/all/seed | 0 .../group_vars/all/seed-hypervisor | 0 .../{ => inventory}/group_vars/all/seed-vm | 0 ansible/{ => inventory}/group_vars/all/ssh | 0 .../{ => inventory}/group_vars/all/storage | 0 ansible/{ => inventory}/group_vars/all/swift | 0 .../group_vars/all/switches/arista | 0 .../group_vars/all/switches/config | 0 .../group_vars/all/switches/dell | 0 .../group_vars/all/switches/dell-powerconnect | 0 .../group_vars/all/switches/junos | 0 .../group_vars/all/switches/mellanox | 0 ansible/{ => inventory}/group_vars/all/time | 0 ansible/{ => inventory}/group_vars/all/users | 0 .../group_vars/compute/ansible-user | 0 .../{ => inventory}/group_vars/compute/bios | 0 .../group_vars/compute/firewall | 0 .../{ => inventory}/group_vars/compute/luks | 0 .../{ => inventory}/group_vars/compute/lvm | 0 .../{ => inventory}/group_vars/compute/mdadm | 0 .../group_vars/compute/network | 0 .../{ => inventory}/group_vars/compute/raid | 0 .../{ => inventory}/group_vars/compute/sysctl | 0 .../{ => inventory}/group_vars/compute/tuned | 0 .../{ => inventory}/group_vars/compute/users | 0 .../group_vars/controllers/ansible-user | 0 .../group_vars/controllers/bios | 0 .../group_vars/controllers/firewall | 0 .../group_vars/controllers/luks | 0 .../group_vars/controllers/lvm | 0 .../group_vars/controllers/mdadm | 0 .../group_vars/controllers/network | 0 .../group_vars/controllers/raid | 0 .../group_vars/controllers/sysctl | 0 .../group_vars/controllers/tuned | 0 .../group_vars/controllers/users | 0 .../group_vars/infra-vms/ansible-host | 0 .../group_vars/infra-vms/ansible-user | 0 .../group_vars/infra-vms/firewall | 0 .../{ => inventory}/group_vars/infra-vms/luks | 0 .../{ => inventory}/group_vars/infra-vms/lvm | 0 .../group_vars/infra-vms/mdadm | 0 .../group_vars/infra-vms/network | 0 .../group_vars/infra-vms/sysctl | 0 .../group_vars/infra-vms/tuned | 0 .../group_vars/infra-vms/users | 0 .../group_vars/monitoring/ansible-user | 0 .../group_vars/monitoring/bios | 0 .../group_vars/monitoring/firewall | 0 .../group_vars/monitoring/luks | 0 .../{ => inventory}/group_vars/monitoring/lvm | 0 .../group_vars/monitoring/mdadm | 0 .../group_vars/monitoring/network | 0 .../group_vars/monitoring/raid | 0 .../group_vars/monitoring/sysctl | 0 .../group_vars/monitoring/tuned | 0 .../group_vars/monitoring/users | 0 .../group_vars/overcloud/ansible-host | 0 .../group_vars/seed-hypervisor/ansible-host | 0 .../group_vars/seed-hypervisor/ansible-user | 0 .../group_vars/seed-hypervisor/firewall | 0 .../group_vars/seed-hypervisor/luks | 0 .../group_vars/seed-hypervisor/lvm | 0 .../group_vars/seed-hypervisor/mdadm | 0 .../group_vars/seed-hypervisor/network | 0 .../group_vars/seed-hypervisor/snat | 0 .../group_vars/seed-hypervisor/sysctl | 0 .../group_vars/seed-hypervisor/tuned | 0 .../group_vars/seed-hypervisor/users | 0 .../group_vars/seed/ansible-host | 0 .../group_vars/seed/ansible-user | 0 .../{ => inventory}/group_vars/seed/firewall | 0 ansible/{ => inventory}/group_vars/seed/luks | 0 ansible/{ => inventory}/group_vars/seed/lvm | 0 ansible/{ => inventory}/group_vars/seed/mdadm | 0 .../{ => inventory}/group_vars/seed/network | 0 ansible/{ => inventory}/group_vars/seed/snat | 0 .../{ => inventory}/group_vars/seed/sysctl | 0 ansible/{ => inventory}/group_vars/seed/tuned | 0 ansible/{ => inventory}/group_vars/seed/users | 0 .../group_vars/storage/ansible-user | 0 .../{ => inventory}/group_vars/storage/bios | 0 .../group_vars/storage/firewall | 0 .../{ => inventory}/group_vars/storage/luks | 0 .../{ => inventory}/group_vars/storage/lvm | 0 .../{ => inventory}/group_vars/storage/mdadm | 0 .../group_vars/storage/network | 0 .../{ => inventory}/group_vars/storage/raid | 0 .../{ => inventory}/group_vars/storage/sysctl | 0 .../{ => inventory}/group_vars/storage/tuned | 0 .../{ => inventory}/group_vars/storage/users | 0 .../configuration/reference/infra-vms.rst | 2 +- doc/source/configuration/reference/kayobe.rst | 20 ++++++++++--------- doc/source/configuration/reference/kolla.rst | 2 +- doc/source/contributor/development.rst | 2 +- .../control-plane-service-placement.rst | 8 ++++---- doc/source/custom-ansible-playbooks.rst | 1 - kayobe/ansible.py | 7 ++++--- kayobe/tests/unit/test_ansible.py | 14 +++++++++++++ ...inventory-group-vars-cef39cb6f3803ee7.yaml | 18 +++++++++++++++++ tools/test-ansible.sh | 4 ++-- 130 files changed, 56 insertions(+), 22 deletions(-) rename ansible/{ => inventory}/group_vars/all/apt (100%) rename ansible/{ => inventory}/group_vars/all/bifrost (100%) rename ansible/{ => inventory}/group_vars/all/bmc (100%) rename ansible/{ => inventory}/group_vars/all/compute (100%) rename ansible/{ => inventory}/group_vars/all/controllers (100%) rename ansible/{ => inventory}/group_vars/all/dell-switch-bmp (100%) rename ansible/{ => inventory}/group_vars/all/dnf (100%) rename ansible/{ => inventory}/group_vars/all/dns (100%) rename ansible/{ => inventory}/group_vars/all/docker (100%) rename ansible/{ => inventory}/group_vars/all/docker-registry (100%) rename ansible/{ => inventory}/group_vars/all/globals (100%) rename ansible/{ => inventory}/group_vars/all/grafana (100%) rename ansible/{ => inventory}/group_vars/all/idrac (100%) rename ansible/{ => inventory}/group_vars/all/infra-vms (100%) rename ansible/{ => inventory}/group_vars/all/inspector (100%) rename ansible/{ => inventory}/group_vars/all/ipa (100%) rename ansible/{ => inventory}/group_vars/all/ironic (100%) rename ansible/{ => inventory}/group_vars/all/kolla (100%) rename ansible/{ => inventory}/group_vars/all/monasca (100%) rename ansible/{ => inventory}/group_vars/all/monitoring (100%) rename ansible/{ => inventory}/group_vars/all/network (100%) rename ansible/{ => inventory}/group_vars/all/neutron (100%) rename ansible/{ => inventory}/group_vars/all/nova (100%) rename ansible/{ => inventory}/group_vars/all/opensm (100%) rename ansible/{ => inventory}/group_vars/all/openstack (100%) rename ansible/{ => inventory}/group_vars/all/overcloud (100%) rename ansible/{ => inventory}/group_vars/all/overcloud-dib (100%) rename ansible/{ => inventory}/group_vars/all/pip (100%) rename ansible/{ => inventory}/group_vars/all/proxy (100%) rename ansible/{ => inventory}/group_vars/all/seed (100%) rename ansible/{ => inventory}/group_vars/all/seed-hypervisor (100%) rename ansible/{ => inventory}/group_vars/all/seed-vm (100%) rename ansible/{ => inventory}/group_vars/all/ssh (100%) rename ansible/{ => inventory}/group_vars/all/storage (100%) rename ansible/{ => inventory}/group_vars/all/swift (100%) rename ansible/{ => inventory}/group_vars/all/switches/arista (100%) rename ansible/{ => inventory}/group_vars/all/switches/config (100%) rename ansible/{ => inventory}/group_vars/all/switches/dell (100%) rename ansible/{ => inventory}/group_vars/all/switches/dell-powerconnect (100%) rename ansible/{ => inventory}/group_vars/all/switches/junos (100%) rename ansible/{ => inventory}/group_vars/all/switches/mellanox (100%) rename ansible/{ => inventory}/group_vars/all/time (100%) rename ansible/{ => inventory}/group_vars/all/users (100%) rename ansible/{ => inventory}/group_vars/compute/ansible-user (100%) rename ansible/{ => inventory}/group_vars/compute/bios (100%) rename ansible/{ => inventory}/group_vars/compute/firewall (100%) rename ansible/{ => inventory}/group_vars/compute/luks (100%) rename ansible/{ => inventory}/group_vars/compute/lvm (100%) rename ansible/{ => inventory}/group_vars/compute/mdadm (100%) rename ansible/{ => inventory}/group_vars/compute/network (100%) rename ansible/{ => inventory}/group_vars/compute/raid (100%) rename ansible/{ => inventory}/group_vars/compute/sysctl (100%) rename ansible/{ => inventory}/group_vars/compute/tuned (100%) rename ansible/{ => inventory}/group_vars/compute/users (100%) rename ansible/{ => inventory}/group_vars/controllers/ansible-user (100%) rename ansible/{ => inventory}/group_vars/controllers/bios (100%) rename ansible/{ => inventory}/group_vars/controllers/firewall (100%) rename ansible/{ => inventory}/group_vars/controllers/luks (100%) rename ansible/{ => inventory}/group_vars/controllers/lvm (100%) rename ansible/{ => inventory}/group_vars/controllers/mdadm (100%) rename ansible/{ => inventory}/group_vars/controllers/network (100%) rename ansible/{ => inventory}/group_vars/controllers/raid (100%) rename ansible/{ => inventory}/group_vars/controllers/sysctl (100%) rename ansible/{ => inventory}/group_vars/controllers/tuned (100%) rename ansible/{ => inventory}/group_vars/controllers/users (100%) rename ansible/{ => inventory}/group_vars/infra-vms/ansible-host (100%) rename ansible/{ => inventory}/group_vars/infra-vms/ansible-user (100%) rename ansible/{ => inventory}/group_vars/infra-vms/firewall (100%) rename ansible/{ => inventory}/group_vars/infra-vms/luks (100%) rename ansible/{ => inventory}/group_vars/infra-vms/lvm (100%) rename ansible/{ => inventory}/group_vars/infra-vms/mdadm (100%) rename ansible/{ => inventory}/group_vars/infra-vms/network (100%) rename ansible/{ => inventory}/group_vars/infra-vms/sysctl (100%) rename ansible/{ => inventory}/group_vars/infra-vms/tuned (100%) rename ansible/{ => inventory}/group_vars/infra-vms/users (100%) rename ansible/{ => inventory}/group_vars/monitoring/ansible-user (100%) rename ansible/{ => inventory}/group_vars/monitoring/bios (100%) rename ansible/{ => inventory}/group_vars/monitoring/firewall (100%) rename ansible/{ => inventory}/group_vars/monitoring/luks (100%) rename ansible/{ => inventory}/group_vars/monitoring/lvm (100%) rename ansible/{ => inventory}/group_vars/monitoring/mdadm (100%) rename ansible/{ => inventory}/group_vars/monitoring/network (100%) rename ansible/{ => inventory}/group_vars/monitoring/raid (100%) rename ansible/{ => inventory}/group_vars/monitoring/sysctl (100%) rename ansible/{ => inventory}/group_vars/monitoring/tuned (100%) rename ansible/{ => inventory}/group_vars/monitoring/users (100%) rename ansible/{ => inventory}/group_vars/overcloud/ansible-host (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/ansible-host (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/ansible-user (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/firewall (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/luks (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/lvm (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/mdadm (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/network (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/snat (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/sysctl (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/tuned (100%) rename ansible/{ => inventory}/group_vars/seed-hypervisor/users (100%) rename ansible/{ => inventory}/group_vars/seed/ansible-host (100%) rename ansible/{ => inventory}/group_vars/seed/ansible-user (100%) rename ansible/{ => inventory}/group_vars/seed/firewall (100%) rename ansible/{ => inventory}/group_vars/seed/luks (100%) rename ansible/{ => inventory}/group_vars/seed/lvm (100%) rename ansible/{ => inventory}/group_vars/seed/mdadm (100%) rename ansible/{ => inventory}/group_vars/seed/network (100%) rename ansible/{ => inventory}/group_vars/seed/snat (100%) rename ansible/{ => inventory}/group_vars/seed/sysctl (100%) rename ansible/{ => inventory}/group_vars/seed/tuned (100%) rename ansible/{ => inventory}/group_vars/seed/users (100%) rename ansible/{ => inventory}/group_vars/storage/ansible-user (100%) rename ansible/{ => inventory}/group_vars/storage/bios (100%) rename ansible/{ => inventory}/group_vars/storage/firewall (100%) rename ansible/{ => inventory}/group_vars/storage/luks (100%) rename ansible/{ => inventory}/group_vars/storage/lvm (100%) rename ansible/{ => inventory}/group_vars/storage/mdadm (100%) rename ansible/{ => inventory}/group_vars/storage/network (100%) rename ansible/{ => inventory}/group_vars/storage/raid (100%) rename ansible/{ => inventory}/group_vars/storage/sysctl (100%) rename ansible/{ => inventory}/group_vars/storage/tuned (100%) rename ansible/{ => inventory}/group_vars/storage/users (100%) create mode 100644 releasenotes/notes/inventory-group-vars-cef39cb6f3803ee7.yaml diff --git a/ansible/group_vars/all/apt b/ansible/inventory/group_vars/all/apt similarity index 100% rename from ansible/group_vars/all/apt rename to ansible/inventory/group_vars/all/apt diff --git a/ansible/group_vars/all/bifrost b/ansible/inventory/group_vars/all/bifrost similarity index 100% rename from ansible/group_vars/all/bifrost rename to ansible/inventory/group_vars/all/bifrost diff --git a/ansible/group_vars/all/bmc b/ansible/inventory/group_vars/all/bmc similarity index 100% rename from ansible/group_vars/all/bmc rename to ansible/inventory/group_vars/all/bmc diff --git a/ansible/group_vars/all/compute b/ansible/inventory/group_vars/all/compute similarity index 100% rename from ansible/group_vars/all/compute rename to ansible/inventory/group_vars/all/compute diff --git a/ansible/group_vars/all/controllers b/ansible/inventory/group_vars/all/controllers similarity index 100% rename from ansible/group_vars/all/controllers rename to ansible/inventory/group_vars/all/controllers diff --git a/ansible/group_vars/all/dell-switch-bmp b/ansible/inventory/group_vars/all/dell-switch-bmp similarity index 100% rename from ansible/group_vars/all/dell-switch-bmp rename to ansible/inventory/group_vars/all/dell-switch-bmp diff --git a/ansible/group_vars/all/dnf b/ansible/inventory/group_vars/all/dnf similarity index 100% rename from ansible/group_vars/all/dnf rename to ansible/inventory/group_vars/all/dnf diff --git a/ansible/group_vars/all/dns b/ansible/inventory/group_vars/all/dns similarity index 100% rename from ansible/group_vars/all/dns rename to ansible/inventory/group_vars/all/dns diff --git a/ansible/group_vars/all/docker b/ansible/inventory/group_vars/all/docker similarity index 100% rename from ansible/group_vars/all/docker rename to ansible/inventory/group_vars/all/docker diff --git a/ansible/group_vars/all/docker-registry b/ansible/inventory/group_vars/all/docker-registry similarity index 100% rename from ansible/group_vars/all/docker-registry rename to ansible/inventory/group_vars/all/docker-registry diff --git a/ansible/group_vars/all/globals b/ansible/inventory/group_vars/all/globals similarity index 100% rename from ansible/group_vars/all/globals rename to ansible/inventory/group_vars/all/globals diff --git a/ansible/group_vars/all/grafana b/ansible/inventory/group_vars/all/grafana similarity index 100% rename from ansible/group_vars/all/grafana rename to ansible/inventory/group_vars/all/grafana diff --git a/ansible/group_vars/all/idrac b/ansible/inventory/group_vars/all/idrac similarity index 100% rename from ansible/group_vars/all/idrac rename to ansible/inventory/group_vars/all/idrac diff --git a/ansible/group_vars/all/infra-vms b/ansible/inventory/group_vars/all/infra-vms similarity index 100% rename from ansible/group_vars/all/infra-vms rename to ansible/inventory/group_vars/all/infra-vms diff --git a/ansible/group_vars/all/inspector b/ansible/inventory/group_vars/all/inspector similarity index 100% rename from ansible/group_vars/all/inspector rename to ansible/inventory/group_vars/all/inspector diff --git a/ansible/group_vars/all/ipa b/ansible/inventory/group_vars/all/ipa similarity index 100% rename from ansible/group_vars/all/ipa rename to ansible/inventory/group_vars/all/ipa diff --git a/ansible/group_vars/all/ironic b/ansible/inventory/group_vars/all/ironic similarity index 100% rename from ansible/group_vars/all/ironic rename to ansible/inventory/group_vars/all/ironic diff --git a/ansible/group_vars/all/kolla b/ansible/inventory/group_vars/all/kolla similarity index 100% rename from ansible/group_vars/all/kolla rename to ansible/inventory/group_vars/all/kolla diff --git a/ansible/group_vars/all/monasca b/ansible/inventory/group_vars/all/monasca similarity index 100% rename from ansible/group_vars/all/monasca rename to ansible/inventory/group_vars/all/monasca diff --git a/ansible/group_vars/all/monitoring b/ansible/inventory/group_vars/all/monitoring similarity index 100% rename from ansible/group_vars/all/monitoring rename to ansible/inventory/group_vars/all/monitoring diff --git a/ansible/group_vars/all/network b/ansible/inventory/group_vars/all/network similarity index 100% rename from ansible/group_vars/all/network rename to ansible/inventory/group_vars/all/network diff --git a/ansible/group_vars/all/neutron b/ansible/inventory/group_vars/all/neutron similarity index 100% rename from ansible/group_vars/all/neutron rename to ansible/inventory/group_vars/all/neutron diff --git a/ansible/group_vars/all/nova b/ansible/inventory/group_vars/all/nova similarity index 100% rename from ansible/group_vars/all/nova rename to ansible/inventory/group_vars/all/nova diff --git a/ansible/group_vars/all/opensm b/ansible/inventory/group_vars/all/opensm similarity index 100% rename from ansible/group_vars/all/opensm rename to ansible/inventory/group_vars/all/opensm diff --git a/ansible/group_vars/all/openstack b/ansible/inventory/group_vars/all/openstack similarity index 100% rename from ansible/group_vars/all/openstack rename to ansible/inventory/group_vars/all/openstack diff --git a/ansible/group_vars/all/overcloud b/ansible/inventory/group_vars/all/overcloud similarity index 100% rename from ansible/group_vars/all/overcloud rename to ansible/inventory/group_vars/all/overcloud diff --git a/ansible/group_vars/all/overcloud-dib b/ansible/inventory/group_vars/all/overcloud-dib similarity index 100% rename from ansible/group_vars/all/overcloud-dib rename to ansible/inventory/group_vars/all/overcloud-dib diff --git a/ansible/group_vars/all/pip b/ansible/inventory/group_vars/all/pip similarity index 100% rename from ansible/group_vars/all/pip rename to ansible/inventory/group_vars/all/pip diff --git a/ansible/group_vars/all/proxy b/ansible/inventory/group_vars/all/proxy similarity index 100% rename from ansible/group_vars/all/proxy rename to ansible/inventory/group_vars/all/proxy diff --git a/ansible/group_vars/all/seed b/ansible/inventory/group_vars/all/seed similarity index 100% rename from ansible/group_vars/all/seed rename to ansible/inventory/group_vars/all/seed diff --git a/ansible/group_vars/all/seed-hypervisor b/ansible/inventory/group_vars/all/seed-hypervisor similarity index 100% rename from ansible/group_vars/all/seed-hypervisor rename to ansible/inventory/group_vars/all/seed-hypervisor diff --git a/ansible/group_vars/all/seed-vm b/ansible/inventory/group_vars/all/seed-vm similarity index 100% rename from ansible/group_vars/all/seed-vm rename to ansible/inventory/group_vars/all/seed-vm diff --git a/ansible/group_vars/all/ssh b/ansible/inventory/group_vars/all/ssh similarity index 100% rename from ansible/group_vars/all/ssh rename to ansible/inventory/group_vars/all/ssh diff --git a/ansible/group_vars/all/storage b/ansible/inventory/group_vars/all/storage similarity index 100% rename from ansible/group_vars/all/storage rename to ansible/inventory/group_vars/all/storage diff --git a/ansible/group_vars/all/swift b/ansible/inventory/group_vars/all/swift similarity index 100% rename from ansible/group_vars/all/swift rename to ansible/inventory/group_vars/all/swift diff --git a/ansible/group_vars/all/switches/arista b/ansible/inventory/group_vars/all/switches/arista similarity index 100% rename from ansible/group_vars/all/switches/arista rename to ansible/inventory/group_vars/all/switches/arista diff --git a/ansible/group_vars/all/switches/config b/ansible/inventory/group_vars/all/switches/config similarity index 100% rename from ansible/group_vars/all/switches/config rename to ansible/inventory/group_vars/all/switches/config diff --git a/ansible/group_vars/all/switches/dell b/ansible/inventory/group_vars/all/switches/dell similarity index 100% rename from ansible/group_vars/all/switches/dell rename to ansible/inventory/group_vars/all/switches/dell diff --git a/ansible/group_vars/all/switches/dell-powerconnect b/ansible/inventory/group_vars/all/switches/dell-powerconnect similarity index 100% rename from ansible/group_vars/all/switches/dell-powerconnect rename to ansible/inventory/group_vars/all/switches/dell-powerconnect diff --git a/ansible/group_vars/all/switches/junos b/ansible/inventory/group_vars/all/switches/junos similarity index 100% rename from ansible/group_vars/all/switches/junos rename to ansible/inventory/group_vars/all/switches/junos diff --git a/ansible/group_vars/all/switches/mellanox b/ansible/inventory/group_vars/all/switches/mellanox similarity index 100% rename from ansible/group_vars/all/switches/mellanox rename to ansible/inventory/group_vars/all/switches/mellanox diff --git a/ansible/group_vars/all/time b/ansible/inventory/group_vars/all/time similarity index 100% rename from ansible/group_vars/all/time rename to ansible/inventory/group_vars/all/time diff --git a/ansible/group_vars/all/users b/ansible/inventory/group_vars/all/users similarity index 100% rename from ansible/group_vars/all/users rename to ansible/inventory/group_vars/all/users diff --git a/ansible/group_vars/compute/ansible-user b/ansible/inventory/group_vars/compute/ansible-user similarity index 100% rename from ansible/group_vars/compute/ansible-user rename to ansible/inventory/group_vars/compute/ansible-user diff --git a/ansible/group_vars/compute/bios b/ansible/inventory/group_vars/compute/bios similarity index 100% rename from ansible/group_vars/compute/bios rename to ansible/inventory/group_vars/compute/bios diff --git a/ansible/group_vars/compute/firewall b/ansible/inventory/group_vars/compute/firewall similarity index 100% rename from ansible/group_vars/compute/firewall rename to ansible/inventory/group_vars/compute/firewall diff --git a/ansible/group_vars/compute/luks b/ansible/inventory/group_vars/compute/luks similarity index 100% rename from ansible/group_vars/compute/luks rename to ansible/inventory/group_vars/compute/luks diff --git a/ansible/group_vars/compute/lvm b/ansible/inventory/group_vars/compute/lvm similarity index 100% rename from ansible/group_vars/compute/lvm rename to ansible/inventory/group_vars/compute/lvm diff --git a/ansible/group_vars/compute/mdadm b/ansible/inventory/group_vars/compute/mdadm similarity index 100% rename from ansible/group_vars/compute/mdadm rename to ansible/inventory/group_vars/compute/mdadm diff --git a/ansible/group_vars/compute/network b/ansible/inventory/group_vars/compute/network similarity index 100% rename from ansible/group_vars/compute/network rename to ansible/inventory/group_vars/compute/network diff --git a/ansible/group_vars/compute/raid b/ansible/inventory/group_vars/compute/raid similarity index 100% rename from ansible/group_vars/compute/raid rename to ansible/inventory/group_vars/compute/raid diff --git a/ansible/group_vars/compute/sysctl b/ansible/inventory/group_vars/compute/sysctl similarity index 100% rename from ansible/group_vars/compute/sysctl rename to ansible/inventory/group_vars/compute/sysctl diff --git a/ansible/group_vars/compute/tuned b/ansible/inventory/group_vars/compute/tuned similarity index 100% rename from ansible/group_vars/compute/tuned rename to ansible/inventory/group_vars/compute/tuned diff --git a/ansible/group_vars/compute/users b/ansible/inventory/group_vars/compute/users similarity index 100% rename from ansible/group_vars/compute/users rename to ansible/inventory/group_vars/compute/users diff --git a/ansible/group_vars/controllers/ansible-user b/ansible/inventory/group_vars/controllers/ansible-user similarity index 100% rename from ansible/group_vars/controllers/ansible-user rename to ansible/inventory/group_vars/controllers/ansible-user diff --git a/ansible/group_vars/controllers/bios b/ansible/inventory/group_vars/controllers/bios similarity index 100% rename from ansible/group_vars/controllers/bios rename to ansible/inventory/group_vars/controllers/bios diff --git a/ansible/group_vars/controllers/firewall b/ansible/inventory/group_vars/controllers/firewall similarity index 100% rename from ansible/group_vars/controllers/firewall rename to ansible/inventory/group_vars/controllers/firewall diff --git a/ansible/group_vars/controllers/luks b/ansible/inventory/group_vars/controllers/luks similarity index 100% rename from ansible/group_vars/controllers/luks rename to ansible/inventory/group_vars/controllers/luks diff --git a/ansible/group_vars/controllers/lvm b/ansible/inventory/group_vars/controllers/lvm similarity index 100% rename from ansible/group_vars/controllers/lvm rename to ansible/inventory/group_vars/controllers/lvm diff --git a/ansible/group_vars/controllers/mdadm b/ansible/inventory/group_vars/controllers/mdadm similarity index 100% rename from ansible/group_vars/controllers/mdadm rename to ansible/inventory/group_vars/controllers/mdadm diff --git a/ansible/group_vars/controllers/network b/ansible/inventory/group_vars/controllers/network similarity index 100% rename from ansible/group_vars/controllers/network rename to ansible/inventory/group_vars/controllers/network diff --git a/ansible/group_vars/controllers/raid b/ansible/inventory/group_vars/controllers/raid similarity index 100% rename from ansible/group_vars/controllers/raid rename to ansible/inventory/group_vars/controllers/raid diff --git a/ansible/group_vars/controllers/sysctl b/ansible/inventory/group_vars/controllers/sysctl similarity index 100% rename from ansible/group_vars/controllers/sysctl rename to ansible/inventory/group_vars/controllers/sysctl diff --git a/ansible/group_vars/controllers/tuned b/ansible/inventory/group_vars/controllers/tuned similarity index 100% rename from ansible/group_vars/controllers/tuned rename to ansible/inventory/group_vars/controllers/tuned diff --git a/ansible/group_vars/controllers/users b/ansible/inventory/group_vars/controllers/users similarity index 100% rename from ansible/group_vars/controllers/users rename to ansible/inventory/group_vars/controllers/users diff --git a/ansible/group_vars/infra-vms/ansible-host b/ansible/inventory/group_vars/infra-vms/ansible-host similarity index 100% rename from ansible/group_vars/infra-vms/ansible-host rename to ansible/inventory/group_vars/infra-vms/ansible-host diff --git a/ansible/group_vars/infra-vms/ansible-user b/ansible/inventory/group_vars/infra-vms/ansible-user similarity index 100% rename from ansible/group_vars/infra-vms/ansible-user rename to ansible/inventory/group_vars/infra-vms/ansible-user diff --git a/ansible/group_vars/infra-vms/firewall b/ansible/inventory/group_vars/infra-vms/firewall similarity index 100% rename from ansible/group_vars/infra-vms/firewall rename to ansible/inventory/group_vars/infra-vms/firewall diff --git a/ansible/group_vars/infra-vms/luks b/ansible/inventory/group_vars/infra-vms/luks similarity index 100% rename from ansible/group_vars/infra-vms/luks rename to ansible/inventory/group_vars/infra-vms/luks diff --git a/ansible/group_vars/infra-vms/lvm b/ansible/inventory/group_vars/infra-vms/lvm similarity index 100% rename from ansible/group_vars/infra-vms/lvm rename to ansible/inventory/group_vars/infra-vms/lvm diff --git a/ansible/group_vars/infra-vms/mdadm b/ansible/inventory/group_vars/infra-vms/mdadm similarity index 100% rename from ansible/group_vars/infra-vms/mdadm rename to ansible/inventory/group_vars/infra-vms/mdadm diff --git a/ansible/group_vars/infra-vms/network b/ansible/inventory/group_vars/infra-vms/network similarity index 100% rename from ansible/group_vars/infra-vms/network rename to ansible/inventory/group_vars/infra-vms/network diff --git a/ansible/group_vars/infra-vms/sysctl b/ansible/inventory/group_vars/infra-vms/sysctl similarity index 100% rename from ansible/group_vars/infra-vms/sysctl rename to ansible/inventory/group_vars/infra-vms/sysctl diff --git a/ansible/group_vars/infra-vms/tuned b/ansible/inventory/group_vars/infra-vms/tuned similarity index 100% rename from ansible/group_vars/infra-vms/tuned rename to ansible/inventory/group_vars/infra-vms/tuned diff --git a/ansible/group_vars/infra-vms/users b/ansible/inventory/group_vars/infra-vms/users similarity index 100% rename from ansible/group_vars/infra-vms/users rename to ansible/inventory/group_vars/infra-vms/users diff --git a/ansible/group_vars/monitoring/ansible-user b/ansible/inventory/group_vars/monitoring/ansible-user similarity index 100% rename from ansible/group_vars/monitoring/ansible-user rename to ansible/inventory/group_vars/monitoring/ansible-user diff --git a/ansible/group_vars/monitoring/bios b/ansible/inventory/group_vars/monitoring/bios similarity index 100% rename from ansible/group_vars/monitoring/bios rename to ansible/inventory/group_vars/monitoring/bios diff --git a/ansible/group_vars/monitoring/firewall b/ansible/inventory/group_vars/monitoring/firewall similarity index 100% rename from ansible/group_vars/monitoring/firewall rename to ansible/inventory/group_vars/monitoring/firewall diff --git a/ansible/group_vars/monitoring/luks b/ansible/inventory/group_vars/monitoring/luks similarity index 100% rename from ansible/group_vars/monitoring/luks rename to ansible/inventory/group_vars/monitoring/luks diff --git a/ansible/group_vars/monitoring/lvm b/ansible/inventory/group_vars/monitoring/lvm similarity index 100% rename from ansible/group_vars/monitoring/lvm rename to ansible/inventory/group_vars/monitoring/lvm diff --git a/ansible/group_vars/monitoring/mdadm b/ansible/inventory/group_vars/monitoring/mdadm similarity index 100% rename from ansible/group_vars/monitoring/mdadm rename to ansible/inventory/group_vars/monitoring/mdadm diff --git a/ansible/group_vars/monitoring/network b/ansible/inventory/group_vars/monitoring/network similarity index 100% rename from ansible/group_vars/monitoring/network rename to ansible/inventory/group_vars/monitoring/network diff --git a/ansible/group_vars/monitoring/raid b/ansible/inventory/group_vars/monitoring/raid similarity index 100% rename from ansible/group_vars/monitoring/raid rename to ansible/inventory/group_vars/monitoring/raid diff --git a/ansible/group_vars/monitoring/sysctl b/ansible/inventory/group_vars/monitoring/sysctl similarity index 100% rename from ansible/group_vars/monitoring/sysctl rename to ansible/inventory/group_vars/monitoring/sysctl diff --git a/ansible/group_vars/monitoring/tuned b/ansible/inventory/group_vars/monitoring/tuned similarity index 100% rename from ansible/group_vars/monitoring/tuned rename to ansible/inventory/group_vars/monitoring/tuned diff --git a/ansible/group_vars/monitoring/users b/ansible/inventory/group_vars/monitoring/users similarity index 100% rename from ansible/group_vars/monitoring/users rename to ansible/inventory/group_vars/monitoring/users diff --git a/ansible/group_vars/overcloud/ansible-host b/ansible/inventory/group_vars/overcloud/ansible-host similarity index 100% rename from ansible/group_vars/overcloud/ansible-host rename to ansible/inventory/group_vars/overcloud/ansible-host diff --git a/ansible/group_vars/seed-hypervisor/ansible-host b/ansible/inventory/group_vars/seed-hypervisor/ansible-host similarity index 100% rename from ansible/group_vars/seed-hypervisor/ansible-host rename to ansible/inventory/group_vars/seed-hypervisor/ansible-host diff --git a/ansible/group_vars/seed-hypervisor/ansible-user b/ansible/inventory/group_vars/seed-hypervisor/ansible-user similarity index 100% rename from ansible/group_vars/seed-hypervisor/ansible-user rename to ansible/inventory/group_vars/seed-hypervisor/ansible-user diff --git a/ansible/group_vars/seed-hypervisor/firewall b/ansible/inventory/group_vars/seed-hypervisor/firewall similarity index 100% rename from ansible/group_vars/seed-hypervisor/firewall rename to ansible/inventory/group_vars/seed-hypervisor/firewall diff --git a/ansible/group_vars/seed-hypervisor/luks b/ansible/inventory/group_vars/seed-hypervisor/luks similarity index 100% rename from ansible/group_vars/seed-hypervisor/luks rename to ansible/inventory/group_vars/seed-hypervisor/luks diff --git a/ansible/group_vars/seed-hypervisor/lvm b/ansible/inventory/group_vars/seed-hypervisor/lvm similarity index 100% rename from ansible/group_vars/seed-hypervisor/lvm rename to ansible/inventory/group_vars/seed-hypervisor/lvm diff --git a/ansible/group_vars/seed-hypervisor/mdadm b/ansible/inventory/group_vars/seed-hypervisor/mdadm similarity index 100% rename from ansible/group_vars/seed-hypervisor/mdadm rename to ansible/inventory/group_vars/seed-hypervisor/mdadm diff --git a/ansible/group_vars/seed-hypervisor/network b/ansible/inventory/group_vars/seed-hypervisor/network similarity index 100% rename from ansible/group_vars/seed-hypervisor/network rename to ansible/inventory/group_vars/seed-hypervisor/network diff --git a/ansible/group_vars/seed-hypervisor/snat b/ansible/inventory/group_vars/seed-hypervisor/snat similarity index 100% rename from ansible/group_vars/seed-hypervisor/snat rename to ansible/inventory/group_vars/seed-hypervisor/snat diff --git a/ansible/group_vars/seed-hypervisor/sysctl b/ansible/inventory/group_vars/seed-hypervisor/sysctl similarity index 100% rename from ansible/group_vars/seed-hypervisor/sysctl rename to ansible/inventory/group_vars/seed-hypervisor/sysctl diff --git a/ansible/group_vars/seed-hypervisor/tuned b/ansible/inventory/group_vars/seed-hypervisor/tuned similarity index 100% rename from ansible/group_vars/seed-hypervisor/tuned rename to ansible/inventory/group_vars/seed-hypervisor/tuned diff --git a/ansible/group_vars/seed-hypervisor/users b/ansible/inventory/group_vars/seed-hypervisor/users similarity index 100% rename from ansible/group_vars/seed-hypervisor/users rename to ansible/inventory/group_vars/seed-hypervisor/users diff --git a/ansible/group_vars/seed/ansible-host b/ansible/inventory/group_vars/seed/ansible-host similarity index 100% rename from ansible/group_vars/seed/ansible-host rename to ansible/inventory/group_vars/seed/ansible-host diff --git a/ansible/group_vars/seed/ansible-user b/ansible/inventory/group_vars/seed/ansible-user similarity index 100% rename from ansible/group_vars/seed/ansible-user rename to ansible/inventory/group_vars/seed/ansible-user diff --git a/ansible/group_vars/seed/firewall b/ansible/inventory/group_vars/seed/firewall similarity index 100% rename from ansible/group_vars/seed/firewall rename to ansible/inventory/group_vars/seed/firewall diff --git a/ansible/group_vars/seed/luks b/ansible/inventory/group_vars/seed/luks similarity index 100% rename from ansible/group_vars/seed/luks rename to ansible/inventory/group_vars/seed/luks diff --git a/ansible/group_vars/seed/lvm b/ansible/inventory/group_vars/seed/lvm similarity index 100% rename from ansible/group_vars/seed/lvm rename to ansible/inventory/group_vars/seed/lvm diff --git a/ansible/group_vars/seed/mdadm b/ansible/inventory/group_vars/seed/mdadm similarity index 100% rename from ansible/group_vars/seed/mdadm rename to ansible/inventory/group_vars/seed/mdadm diff --git a/ansible/group_vars/seed/network b/ansible/inventory/group_vars/seed/network similarity index 100% rename from ansible/group_vars/seed/network rename to ansible/inventory/group_vars/seed/network diff --git a/ansible/group_vars/seed/snat b/ansible/inventory/group_vars/seed/snat similarity index 100% rename from ansible/group_vars/seed/snat rename to ansible/inventory/group_vars/seed/snat diff --git a/ansible/group_vars/seed/sysctl b/ansible/inventory/group_vars/seed/sysctl similarity index 100% rename from ansible/group_vars/seed/sysctl rename to ansible/inventory/group_vars/seed/sysctl diff --git a/ansible/group_vars/seed/tuned b/ansible/inventory/group_vars/seed/tuned similarity index 100% rename from ansible/group_vars/seed/tuned rename to ansible/inventory/group_vars/seed/tuned diff --git a/ansible/group_vars/seed/users b/ansible/inventory/group_vars/seed/users similarity index 100% rename from ansible/group_vars/seed/users rename to ansible/inventory/group_vars/seed/users diff --git a/ansible/group_vars/storage/ansible-user b/ansible/inventory/group_vars/storage/ansible-user similarity index 100% rename from ansible/group_vars/storage/ansible-user rename to ansible/inventory/group_vars/storage/ansible-user diff --git a/ansible/group_vars/storage/bios b/ansible/inventory/group_vars/storage/bios similarity index 100% rename from ansible/group_vars/storage/bios rename to ansible/inventory/group_vars/storage/bios diff --git a/ansible/group_vars/storage/firewall b/ansible/inventory/group_vars/storage/firewall similarity index 100% rename from ansible/group_vars/storage/firewall rename to ansible/inventory/group_vars/storage/firewall diff --git a/ansible/group_vars/storage/luks b/ansible/inventory/group_vars/storage/luks similarity index 100% rename from ansible/group_vars/storage/luks rename to ansible/inventory/group_vars/storage/luks diff --git a/ansible/group_vars/storage/lvm b/ansible/inventory/group_vars/storage/lvm similarity index 100% rename from ansible/group_vars/storage/lvm rename to ansible/inventory/group_vars/storage/lvm diff --git a/ansible/group_vars/storage/mdadm b/ansible/inventory/group_vars/storage/mdadm similarity index 100% rename from ansible/group_vars/storage/mdadm rename to ansible/inventory/group_vars/storage/mdadm diff --git a/ansible/group_vars/storage/network b/ansible/inventory/group_vars/storage/network similarity index 100% rename from ansible/group_vars/storage/network rename to ansible/inventory/group_vars/storage/network diff --git a/ansible/group_vars/storage/raid b/ansible/inventory/group_vars/storage/raid similarity index 100% rename from ansible/group_vars/storage/raid rename to ansible/inventory/group_vars/storage/raid diff --git a/ansible/group_vars/storage/sysctl b/ansible/inventory/group_vars/storage/sysctl similarity index 100% rename from ansible/group_vars/storage/sysctl rename to ansible/inventory/group_vars/storage/sysctl diff --git a/ansible/group_vars/storage/tuned b/ansible/inventory/group_vars/storage/tuned similarity index 100% rename from ansible/group_vars/storage/tuned rename to ansible/inventory/group_vars/storage/tuned diff --git a/ansible/group_vars/storage/users b/ansible/inventory/group_vars/storage/users similarity index 100% rename from ansible/group_vars/storage/users rename to ansible/inventory/group_vars/storage/users diff --git a/doc/source/configuration/reference/infra-vms.rst b/doc/source/configuration/reference/infra-vms.rst index baa46faca..0fd8e6013 100644 --- a/doc/source/configuration/reference/infra-vms.rst +++ b/doc/source/configuration/reference/infra-vms.rst @@ -39,7 +39,7 @@ can be added by setting ``infra_vm_network_interfaces_extra``. List of Kayobe applied defaults to required docker_container variables. Any of these variables can be overridden with a ``host_var``. -.. literalinclude:: ../../../../ansible/group_vars/all/infra-vms +.. literalinclude:: ../../../../ansible/inventory/group_vars/all/infra-vms :language: yaml Customisations diff --git a/doc/source/configuration/reference/kayobe.rst b/doc/source/configuration/reference/kayobe.rst index f478fbdfe..c442f90d0 100644 --- a/doc/source/configuration/reference/kayobe.rst +++ b/doc/source/configuration/reference/kayobe.rst @@ -44,19 +44,21 @@ and provide a mechanism we can use for providing site localisation and customisation of OpenStack in combination with some reasonable default values. For global configuration options, Kayobe typically uses the following patterns: -- Playbook group variables for the *all* group in - ``/ansible/group_vars/all/*`` set **global defaults**. These - files should not be modified. -- Playbook group variables for other groups in - ``/ansible/group_vars//*`` set **defaults for some subsets - of hosts**. These files should not be modified. +- Inventory group variables for the *all* group in + ``/ansible/inventory/group_vars/all/*`` set **global defaults**. + These files should not be modified. +- Inventory group variables for other groups in + ``/ansible/inventory/group_vars//*`` set **defaults for + some subsets of hosts**. These files should not be modified. - Extra-vars files in ``${KAYOBE_CONFIG_PATH}/*.yml`` set **custom values for global variables** and should be used to apply global site localisation and customisation. By default these variables are commented out. -Additionally, variables can be set on a per-host basis using inventory host -variables files in ``${KAYOBE_CONFIG_PATH}/inventory/host_vars/*``. It should -be noted that variables set in extra-vars files take precedence over per-host +Additionally, variables can be set on a per-group or per-host basis using +inventory group or host variables files in +``${KAYOBE_CONFIG_PATH}/inventory/group_vars/*`` or +``${KAYOBE_CONFIG_PATH}/inventory/host_vars/*`` respectively. It should be +noted that variables set in extra-vars files take precedence over per-host variables. .. _configuring-kayobe: diff --git a/doc/source/configuration/reference/kolla.rst b/doc/source/configuration/reference/kolla.rst index 5a35196cf..a4b4e4f4c 100644 --- a/doc/source/configuration/reference/kolla.rst +++ b/doc/source/configuration/reference/kolla.rst @@ -153,7 +153,7 @@ images that will be built: If a required image is not built when the corresponding flag is set, check the image sets defined in ``overcloud_container_image_sets`` in -``ansible/group_vars/all/kolla``. +``ansible/inventory/group_vars/all/kolla``. Image Customisation =================== diff --git a/doc/source/contributor/development.rst b/doc/source/contributor/development.rst index 6aede7401..e65f630e5 100644 --- a/doc/source/contributor/development.rst +++ b/doc/source/contributor/development.rst @@ -31,7 +31,7 @@ Kayobe's Ansible playbooks live in `ansible/*.yml typically execute roles in `ansible/roles/ `__. Global variable defaults are defined in group variable files in -`ansible/group_vars/all/ +`ansible/inventory/group_vars/all/ `__ and these typically map to commented out variables in the configuration files in `etc/kayobe/*.yml diff --git a/doc/source/control-plane-service-placement.rst b/doc/source/control-plane-service-placement.rst index fa634a22a..401c5adb9 100644 --- a/doc/source/control-plane-service-placement.rst +++ b/doc/source/control-plane-service-placement.rst @@ -46,10 +46,10 @@ Variables For Custom Server Roles Certain variables must be defined for hosts in the ``overcloud`` group. For hosts in the ``controllers`` group, many variables are mapped to other variables with a ``controller_`` prefix in files under -``ansible/group_vars/controllers/``. This is done in order that they may be set -in a global extra variables file, typically ``controllers.yml``, with defaults -set in ``ansible/group_vars/all/controllers``. A similar scheme is used for -hosts in the ``monitoring`` group. +``ansible/inventory/group_vars/controllers/``. This is done in order that they +may be set in a global extra variables file, typically ``controllers.yml``, +with defaults set in ``ansible/inventory/group_vars/all/controllers``. A +similar scheme is used for hosts in the ``monitoring`` group. .. table:: Overcloud host variables diff --git a/doc/source/custom-ansible-playbooks.rst b/doc/source/custom-ansible-playbooks.rst index 7941a0f79..0c6179367 100644 --- a/doc/source/custom-ansible-playbooks.rst +++ b/doc/source/custom-ansible-playbooks.rst @@ -61,7 +61,6 @@ plugins: cd ${KAYOBE_CONFIG_PATH}/ansible/ ln -s ../../../../kayobe/ansible/filter_plugins/ filter_plugins - ln -s ../../../../kayobe/ansible/group_vars/ group_vars ln -s ../../../../kayobe/ansible/test_plugins/ test_plugins These symlinks can even be committed to the kayobe-config Git repository. diff --git a/kayobe/ansible.py b/kayobe/ansible.py index d8dd80054..9d47a9243 100644 --- a/kayobe/ansible.py +++ b/kayobe/ansible.py @@ -91,10 +91,11 @@ def _get_kayobe_environment_path(parsed_args): def _get_inventories_paths(parsed_args, env_path): """Return the paths to the Kayobe inventories.""" + default_inventory = utils.get_data_files_path("ansible", "inventory") + inventories = [default_inventory] if parsed_args.inventory: - return parsed_args.inventory + inventories.extend(parsed_args.inventory) else: - inventories = [] shared_inventory = os.path.join(parsed_args.config_path, "inventory") if env_path: if os.path.exists(shared_inventory): @@ -106,7 +107,7 @@ def _get_inventories_paths(parsed_args, env_path): # Preserve existing behaviour: don't check if an inventory # directory exists when no environment is specified inventories.append(shared_inventory) - return inventories + return inventories def _validate_args(parsed_args, playbooks): diff --git a/kayobe/tests/unit/test_ansible.py b/kayobe/tests/unit/test_ansible.py index 5656ac378..7da686379 100644 --- a/kayobe/tests/unit/test_ansible.py +++ b/kayobe/tests/unit/test_ansible.py @@ -45,6 +45,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "-e", "@/etc/kayobe/vars-file1.yml", "-e", "@/etc/kayobe/vars-file2.yaml", @@ -85,6 +86,7 @@ class TestCase(unittest.TestCase): "ansible-playbook", "-vv", "--list-tasks", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/path/to/inventory", "-e", "@/path/to/config/vars-file1.yml", "-e", "@/path/to/config/vars-file2.yaml", @@ -137,6 +139,7 @@ class TestCase(unittest.TestCase): "ansible-playbook", "--list-tasks", "--vault-password-file", "/path/to/kayobe-vault-password-helper", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/path/to/inventory", "-e", "@/path/to/config/vars-file1.yml", "-e", "@/path/to/config/vars-file2.yaml", @@ -182,6 +185,7 @@ class TestCase(unittest.TestCase): expected_cmd = [ "ansible-playbook", "--vault-password-file", "/path/to/vault/pw", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", ] @@ -211,6 +215,7 @@ class TestCase(unittest.TestCase): expected_cmd = [ "ansible-playbook", "--vault-password-file", "/path/to/kayobe-vault-password-helper", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", ] @@ -261,6 +266,7 @@ class TestCase(unittest.TestCase): **kwargs) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "-e", "@/etc/kayobe/vars-file1.yml", "-e", "@/etc/kayobe/vars-file2.yaml", @@ -296,6 +302,7 @@ class TestCase(unittest.TestCase): limit="foo", ignore_limit=True) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "-e", "@/etc/kayobe/vars-file1.yml", "-e", "@/etc/kayobe/vars-file2.yaml", @@ -327,6 +334,7 @@ class TestCase(unittest.TestCase): **kwargs) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", "playbook2.yml", @@ -351,6 +359,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", ] @@ -379,6 +388,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", ] @@ -673,6 +683,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "--inventory", "/etc/kayobe/environments/foobar/inventory", "playbook1.yml", @@ -705,6 +716,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "--inventory", "/etc/kayobe/environments/test-env/inventory", "playbook1.yml", @@ -745,6 +757,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/inventory", "playbook1.yml", "playbook2.yml", @@ -784,6 +797,7 @@ class TestCase(unittest.TestCase): ansible.run_playbooks(parsed_args, ["playbook1.yml", "playbook2.yml"]) expected_cmd = [ "ansible-playbook", + "--inventory", utils.get_data_files_path("ansible", "inventory"), "--inventory", "/etc/kayobe/environments/test-env/inventory", "playbook1.yml", "playbook2.yml", diff --git a/releasenotes/notes/inventory-group-vars-cef39cb6f3803ee7.yaml b/releasenotes/notes/inventory-group-vars-cef39cb6f3803ee7.yaml new file mode 100644 index 000000000..e43ce0306 --- /dev/null +++ b/releasenotes/notes/inventory-group-vars-cef39cb6f3803ee7.yaml @@ -0,0 +1,18 @@ +--- +upgrade: + - | + Changes the Kayobe playbook group variables in ``ansible/group_vars/`` to + be inventory group variables in ``ansible/inventory/group_vars``. This has + two important consequences: + + 1. Inventory group variables have a lower precedence than playbook group + variables. This means that these variables can now be overridden by + group variables in the Kayobe configuration inventory. + + 2. The new inventory group variables are automatically used by all Kayobe + commands, and do not need to be in the same directory as the playbook + being executed. This means that the `previous workaround + `_ + for custom playbooks involving symlinking to the group_vars directory + from the directory containing the custom playbook is no longer + necessary. diff --git a/tools/test-ansible.sh b/tools/test-ansible.sh index 62f1904cf..35daa9300 100755 --- a/tools/test-ansible.sh +++ b/tools/test-ansible.sh @@ -10,9 +10,9 @@ export ANSIBLE_ACTION_PLUGINS="kayobe/plugins/action:~/.ansible/plugins/action:/ for playbook in ansible/roles/*/tests/main.yml; do # We declare extra variables to install the {{ openstack_branch }} version # of kolla-ansible. We should use {{ kolla_ansible_source_version }}, but - # adding ansible/group_vars/all/kolla would in turn require other + # adding ansible/inventory/group_vars/all/kolla would in turn require other # extra-vars files (like pip) and may cause unintended side effects. - if ! ansible-playbook --connection=local $playbook $* -e @ansible/group_vars/all/openstack; then + if ! ansible-playbook --connection=local $playbook $* -e @ansible/inventory/group_vars/all/openstack; then failed=$((failed + 1)) fi done