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