diff --git a/.gitreview b/.gitreview index 1920042..4e84bb6 100644 --- a/.gitreview +++ b/.gitreview @@ -2,4 +2,3 @@ host=review.opendev.org port=29418 project=openstack/kayobe-config-dev.git -defaultbranch=stable/rocky diff --git a/etc/kayobe/apt.yml b/etc/kayobe/apt.yml index 34bfdd2..e4bb5b1 100644 --- a/etc/kayobe/apt.yml +++ b/etc/kayobe/apt.yml @@ -30,7 +30,7 @@ # * types: whitespace-separated list of repository types, e.g. deb or deb-src # (optional, default is 'deb') # * url: URL of the repository -# * suites: whitespace-separated list of suites, e.g. focal (optional, default +# * suites: whitespace-separated list of suites, e.g. jammy (optional, default # is ansible_facts.distribution_release) # * components: whitespace-separated list of components, e.g. main (optional, # default is 'main') @@ -46,6 +46,17 @@ # Default is false. #apt_disable_sources_list: +# List of Apt auth configurations. Each item is a dict with the following keys: +# * machine: 'machine' entry in the auth file +# * login: 'login' entry in the auth file +# * password: 'password' entry in the auth file +# * filename: Name of a file in which to store the auth configuration. The +# extension should be '.conf'. +# * filename: Name of a file in /etc/apt/auth.conf.d in which to store +# the auth configuration. The extension should be ``.conf``. +# Default is an empty list. +#apt_auth: + ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/bifrost.yml b/etc/kayobe/bifrost.yml index a9eba19..123c53d 100644 --- a/etc/kayobe/bifrost.yml +++ b/etc/kayobe/bifrost.yml @@ -28,9 +28,7 @@ # DIB image OS release. Default is {{ os_release }}. #kolla_bifrost_dib_os_release: -# List of default DIB elements. Default is ["disable-selinux", -# "enable-serial-console", "vm"] when os_distribution is "centos", or -# ["enable-serial-console", "vm"] otherwise. +# List of default DIB elements. Default is ["enable-serial-console", "vm"]. #kolla_bifrost_dib_elements_default: # List of additional DIB elements. Default is none. @@ -71,6 +69,10 @@ # Default is none. #kolla_bifrost_deploy_image_rootfs: +# Custom cloud-init user-data passed to deploy of the deployment image. +# Default is an empty string. +#kolla_bifrost_deploy_image_user_data_content: + ############################################################################### # Ironic configuration. @@ -106,6 +108,12 @@ # Ironic inspector IPMI password to set. #kolla_bifrost_inspector_ipmi_password: +# Ironic inspector Redfish username to set. +#kolla_bifrost_inspector_redfish_username: + +# Ironic inspector Redfish password to set. +#kolla_bifrost_inspector_redfish_password: + # Ironic inspector network interface name on which to check for an LLDP switch # port description to use as the node's name. #kolla_bifrost_inspector_lldp_switch_port_interface: @@ -116,6 +124,9 @@ # Ironic inspector deployment ramdisk location. #kolla_bifrost_inspector_deploy_ramdisk: +# Ironic inspector legacy deployment kernel location. +#kolla_bifrost_inspector_legacy_deploy_kernel: + # Timeout of hardware inspection on overcloud nodes, in seconds. Default is # {{ inspector_inspection_timeout }}. #kolla_bifrost_inspection_timeout: diff --git a/etc/kayobe/compute.yml b/etc/kayobe/compute.yml index b1d8d65..c1ebf4b 100644 --- a/etc/kayobe/compute.yml +++ b/etc/kayobe/compute.yml @@ -63,26 +63,24 @@ ############################################################################### # Compute node LVM configuration. -# List of compute volume groups. See mrlesmithjr.manage-lvm role for +# List of compute volume groups. See mrlesmithjr.manage_lvm role for # format. #compute_lvm_groups: -# Default list of compute volume groups. See mrlesmithjr.manage-lvm role for +# Default list of compute volume groups. See mrlesmithjr.manage_lvm role for # format. #compute_lvm_groups_default: -# Additional list of compute volume groups. See mrlesmithjr.manage-lvm role +# Additional list of compute volume groups. See mrlesmithjr.manage_lvm role # for format. #compute_lvm_groups_extra: # Whether a 'data' LVM volume group should exist on compute hosts. By default -# this contains a 'docker-volumes' logical volume for Docker volume storage. It -# will also be used for Docker container and image storage if -# 'docker_storage_driver' is set to 'devicemapper'. Default is true if -# 'docker_storage_driver' is set to 'devicemapper', or false otherwise. +# this contains a 'docker-volumes' logical volume for Docker volume storage. +# Default is false. #compute_lvm_group_data_enabled: -# Compute LVM volume group for data. See mrlesmithjr.manage-lvm role for +# Compute LVM volume group for data. See mrlesmithjr.manage_lvm role for # format. #compute_lvm_group_data: @@ -179,6 +177,12 @@ # compute_qemu_conf_extra. #compute_qemu_conf: +# Whether to enable libvirt SASL authentication. Default is true. +#compute_libvirt_enable_sasl: + +# libvirt SASL password. Default is unset. +#compute_libvirt_sasl_password: + # Whether to enable a libvirt TLS listener. Default is false. #compute_libvirt_enable_tls: diff --git a/etc/kayobe/controllers.yml b/etc/kayobe/controllers.yml index 983251c..d974cc6 100644 --- a/etc/kayobe/controllers.yml +++ b/etc/kayobe/controllers.yml @@ -6,6 +6,25 @@ # to setup the Kayobe user account. Default is {{ os_distribution }}. #controller_bootstrap_user: +############################################################################### +# Controller groups. + +# Ansible inventory group in which Ironic conductor services are deployed. +# Default is 'controllers'. +#controller_ironic_conductor_group: + +# Ansible inventory group in which Ironic inspector services are deployed. +# Default is 'controllers'. +#controller_ironic_inspector_group: + +# Ansible inventory group in which control plane load balancer services are +# deployed. Default is 'network'. +#controller_loadbalancer_group: + +# Ansible inventory group in which network data plane services are deployed. +# Default is 'network'. +#controller_network_group: + ############################################################################### # Controller network interface configuration. @@ -72,26 +91,25 @@ ############################################################################### # Controller node LVM configuration. -# List of controller volume groups. See mrlesmithjr.manage-lvm role for +# List of controller volume groups. See mrlesmithjr.manage_lvm role for # format. #controller_lvm_groups: -# Default list of controller volume groups. See mrlesmithjr.manage-lvm role for +# Default list of controller volume groups. See mrlesmithjr.manage_lvm role for # format. #controller_lvm_groups_default: -# Additional list of controller volume groups. See mrlesmithjr.manage-lvm role +# Additional list of controller volume groups. See mrlesmithjr.manage_lvm role # for format. #controller_lvm_groups_extra: # Whether a 'data' LVM volume group should exist on controller hosts. By # default this contains a 'docker-volumes' logical volume for Docker volume -# storage. It will also be used for Docker container and image storage if -# 'docker_storage_driver' is set to 'devicemapper'. Default is true if -# 'docker_storage_driver' is set to 'devicemapper', or false otherwise. +# storage. +# Default is false. #controller_lvm_group_data_enabled: -# Controller LVM volume group for data. See mrlesmithjr.manage-lvm role for +# Controller LVM volume group for data. See mrlesmithjr.manage_lvm role for # format. #controller_lvm_group_data: diff --git a/etc/kayobe/docker.yml b/etc/kayobe/docker.yml index 5877e5b..a71d404 100644 --- a/etc/kayobe/docker.yml +++ b/etc/kayobe/docker.yml @@ -25,6 +25,11 @@ # Use a docker registry on the seed. docker_registry: 192.168.33.5:4000 +# Whether docker should be configured to use an insecure registry. +# Default is false, unless docker_registry_enabled is true and +# docker_registry_enable_tls is false. +#docker_registry_insecure: + # CA of docker registry #docker_registry_ca: diff --git a/etc/kayobe/globals.yml b/etc/kayobe/globals.yml index 9495a48..162e22a 100644 --- a/etc/kayobe/globals.yml +++ b/etc/kayobe/globals.yml @@ -4,8 +4,7 @@ ############################################################################### # Local path configuration (Ansible control host). -# Path to Kayobe configuration directory on Ansible control host, with an -# environment path appended if kayobe_environment is set. +# Path to Kayobe configuration directory on Ansible control host. #kayobe_config_path: # Name of Kayobe environment to use. Default is $KAYOBE_ENVIRONMENT, or an @@ -46,11 +45,11 @@ # OS distribution. # OS distribution name. Valid options are "centos", "rocky", "ubuntu". Default -# is "centos". +# is "rocky". os_distribution: "{{ lookup('pipe', '. /etc/os-release && echo $ID') | trim }}" -# OS release. Valid options are "8-stream" when os_distribution is "centos", or -# "8" when os_distribution is "rocky", or "focal" when os_distribution is +# OS release. Valid options are "9-stream" when os_distribution is "centos", or +# "9" when os_distribution is "rocky", or "jammy" when os_distribution is # "ubuntu". #os_release: @@ -65,6 +64,10 @@ os_distribution: "{{ lookup('pipe', '. /etc/os-release && echo $ID') | trim }}" # to not specify a gather subset. #kayobe_ansible_setup_gather_subset: +# Global maximum failure percentage. By default this is undefined, which is +# equivalent to a value of 100. +#kayobe_max_fail_percentage: + ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/grafana.yml b/etc/kayobe/grafana.yml index c86a26a..66d19c7 100644 --- a/etc/kayobe/grafana.yml +++ b/etc/kayobe/grafana.yml @@ -2,46 +2,9 @@ ############################################################################### # Grafana configuration. -# Grafana local admin user name. If you are deploying Monasca Grafana this -# should not conflict with an OpenStack user name. +# Grafana local admin user name. #grafana_local_admin_user_name: -# Path to git repo containing Grafana dashboards. Eg. -# https://github.com/stackhpc/grafana-reference-dashboards.git -#grafana_monitoring_node_dashboard_repo: - -# Dashboard repo version. Optional, defaults to 'HEAD'. -#grafana_monitoring_node_dashboard_repo_version: - -# Path to which Grafana dashboards will be cloned to a monitoring node -#grafana_monitoring_node_dashboard_repo_checkout_path: - -# The path, relative to the grafana_monitoring_node_dashboard_repo_checkout_path -# containing the dashboards. Eg. /prometheus/control_plane -#grafana_monitoring_node_dashboard_repo_path: - -# The Grafana organisation for the control plane. Note that for Monasca -# Grafana with domain support the format is: -# organisation_name@openstack_domain -#grafana_control_plane_organisation: - -# A dict of datasources to configure. See the stackhpc.grafana-conf role -# for all supported datasources. Example: -# -# grafana_datasources: -# monasca_api: -# port: 8082 -# host: monasca-api -# monasca_log_api: -# port: 5607 -# host: monasca-log-api -# elasticsearch: -# port: 9200 -# host: monasca-elasticsearch -# project_id: "some_id" -# -#grafana_datasources: - ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/infra-vms.yml b/etc/kayobe/infra-vms.yml index 3274ed8..a8f1fd9 100644 --- a/etc/kayobe/infra-vms.yml +++ b/etc/kayobe/infra-vms.yml @@ -30,12 +30,12 @@ #infra_vm_root_format: # Base image for the infra VM root volume. Default is -# "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img" +# "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" # when os_distribution is "ubuntu", or -# http://dl.rockylinux.org/pub/rocky/8.5/images/Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2 +# https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud.latest.x86_64.qcow2 # when os_distribution is "rocky", # or -# "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20210603.0.x86_64.qcow2" +# "https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-20221206.0.x86_64.qcow2" # otherwise. #infra_vm_root_image: @@ -92,26 +92,24 @@ ############################################################################### # Infrastructure VM node LVM configuration. -# List of infrastructure vm volume groups. See mrlesmithjr.manage-lvm role for +# List of infrastructure vm volume groups. See mrlesmithjr.manage_lvm role for # format. #infra_vm_lvm_groups: -# Default list of infrastructure vm volume groups. See mrlesmithjr.manage-lvm +# Default list of infrastructure vm volume groups. See mrlesmithjr.manage_lvm # role for format. #infra_vm_lvm_groups_default: -# Additional list of infrastructure vm volume groups. See mrlesmithjr.manage-lvm +# Additional list of infrastructure vm volume groups. See mrlesmithjr.manage_lvm # role for format. #infra_vm_lvm_groups_extra: # Whether a 'data' LVM volume group should exist on the infrastructure vm. By # default this contains a 'docker-volumes' logical volume for Docker volume -# storage. It will also be used for Docker container and image storage if -# 'docker_storage_driver' is set to 'devicemapper'. Default is true if -# 'docker_storage_driver' is set to 'devicemapper', or false otherwise. +# storage. Default is false. #infra_vm_lvm_group_data_enabled: -# Infrastructure VM LVM volume group for data. See mrlesmithjr.manage-lvm role +# Infrastructure VM LVM volume group for data. See mrlesmithjr.manage_lvm role # for format. #infra_vm_lvm_group_data: diff --git a/etc/kayobe/inspector.yml b/etc/kayobe/inspector.yml index a355373..123481a 100644 --- a/etc/kayobe/inspector.yml +++ b/etc/kayobe/inspector.yml @@ -58,6 +58,9 @@ ############################################################################### # Ironic inspector configuration. +# Ironic inspector option to enable IPMI rules. Set to 'True' by default. +#inspector_rules_ipmi_enabled: + # Ironic inspector IPMI username to set. #inspector_ipmi_username: @@ -72,6 +75,21 @@ # check for an LLDP switch port description to use as the node's name. #inspector_lldp_switch_port_interface_map: +# Ironic inspector uses IPMI by default enroll the baremetal nodes, however it +# is possible to use Redfish instead. To do that enable Redfish and make sure +# all of the necessary variables below have been properly set. +# Enable inspector Redfish rules. Set to 'False' by default. +#inspector_rules_redfish_enabled: + +# Ironic inspector Redfish username to set. +#inspector_redfish_username: + +# Ironic inspector Redfish password to set. +#inspector_redfish_password: + +# Redfish CA setting. Set to 'True' by default +#inspector_rule_var_redfish_verify_ca: + ############################################################################### # Ironic inspector introspection rules configuration. @@ -84,9 +102,6 @@ # Ironic inspector rule to set deployment ramdisk. #inspector_rule_deploy_ramdisk: -# Ironic inspector rule to set local boot capability -#inspector_rule_local_boot: - # Ironic inspector rule to initialise root device hints. #inspector_rule_root_hint_init: diff --git a/etc/kayobe/inventory/group_vars/seed-hypervisor/network-interfaces b/etc/kayobe/inventory/group_vars/seed-hypervisor/network-interfaces index 00ee30f..3ee62dc 100644 --- a/etc/kayobe/inventory/group_vars/seed-hypervisor/network-interfaces +++ b/etc/kayobe/inventory/group_vars/seed-hypervisor/network-interfaces @@ -1,4 +1,11 @@ --- +############################################################################### +# Network interface definitions for the seed-hypervisor group. + aio_interface: braio aio_bridge_ports: - dummy1 + +############################################################################### +# Dummy variable to allow Ansible to accept this file. +workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/inventory/groups b/etc/kayobe/inventory/groups index 16619fe..3666de3 100644 --- a/etc/kayobe/inventory/groups +++ b/etc/kayobe/inventory/groups @@ -41,8 +41,11 @@ controllers [storage] # Empty group to provide declaration of storage group. -[compute] -# Empty group to provide declaration of compute group. +[compute-vgpu] +# Empty group to provide declaration of compute-vgpu group. + +[compute:children] +compute-vgpu [overcloud:children] controllers @@ -51,11 +54,19 @@ monitoring storage compute +############################################################################### +# Feature control groups +[vgpu:children] +compute-vgpu + +[iommu:children] +vgpu + ############################################################################### # Service groups. [docker:children] -# Hosts in this group will have Docker installed. +# Hosts in this group will have Docker/Podman installed. seed controllers network @@ -63,6 +74,11 @@ monitoring storage compute +# NOTE(wszumski): Remove once https://review.opendev.org/c/openstack/kayobe/+/909686 has +# merged. Added to get the group rename to pass CI. +[docker:children] +container-engine + [docker-registry:children] # Hosts in this group will have a Docker Registry deployed. This group should # generally contain only a single host, to avoid deploying multiple independent diff --git a/etc/kayobe/ipa.yml b/etc/kayobe/ipa.yml index 519ca2a..0138c6c 100644 --- a/etc/kayobe/ipa.yml +++ b/etc/kayobe/ipa.yml @@ -19,9 +19,13 @@ # Version of IPA builder source repository. Default is {{ openstack_branch }}. #ipa_builder_source_version: +# List of additional build host packages to install. Default is an empty list. +#ipa_build_dib_host_packages_extra: + # List of default Diskimage Builder (DIB) elements to use when building IPA # images. Default is ["centos", "enable-serial-console", -# "ironic-python-agent-ramdisk"]. +# "ironic-python-agent-ramdisk"] when os_distribution is "rocky", and +# ["ubuntu", "enable-serial-console", "ironic-python-agent-ramdisk"] otherwise. #ipa_build_dib_elements_default: # List of additional Diskimage Builder (DIB) elements to use when building IPA @@ -46,15 +50,16 @@ #ipa_build_dib_env: # List of default git repositories containing Diskimage Builder (DIB) elements. -# See stackhpc.os-images role for usage. Default is one item for IPA builder. +# See stackhpc.openstack.os_images role for usage. +# Default is one item for IPA builder. #ipa_build_dib_git_elements_default: # List of additional git repositories containing Diskimage Builder (DIB) -# elements. See stackhpc.os-images role for usage. Default is empty. +# elements. See stackhpc.openstack.os_images role for usage. Default is empty. #ipa_build_dib_git_elements_extra: # List of git repositories containing Diskimage Builder (DIB) elements. See -# stackhpc.os-images role for usage. Default is a combination of +# stackhpc.openstack.os_images role for usage. Default is a combination of # ipa_build_dib_git_elements_default and ipa_build_dib_git_elements_extra. #ipa_build_dib_git_elements: @@ -65,6 +70,10 @@ # used for building IPA images. Default is {{ pip_upper_constraints_file }}. #ipa_build_upper_constraints_file: +# Upper constraints file for installation of DIB to build IPA images. +# Default is empty string. +#ipa_build_dib_upper_constraints_file: + ############################################################################### # Ironic Python Agent (IPA) images configuration. diff --git a/etc/kayobe/ironic.yml b/etc/kayobe/ironic.yml index 6083f70..1298fcb 100644 --- a/etc/kayobe/ironic.yml +++ b/etc/kayobe/ironic.yml @@ -91,10 +91,6 @@ # vendor_interface field set. #kolla_ironic_default_vendor_interface: -# Default boot option to use when no boot option is requested in node's -# driver_info. -#kolla_ironic_default_boot_option: - # Name of the Neutron network to use for cleaning. #kolla_ironic_cleaning_network: diff --git a/etc/kayobe/kolla.yml b/etc/kayobe/kolla.yml index 7313202..166c80a 100644 --- a/etc/kayobe/kolla.yml +++ b/etc/kayobe/kolla.yml @@ -67,25 +67,24 @@ # Kolla configuration. # Kolla base container image distribution. Options are "centos", "debian", -# "ubuntu". Default is -# {{ 'centos' if os_distribution == 'rocky' else os_distribution }}. +# "rocky", "ubuntu". Default is {{ os_distribution }}. #kolla_base_distro: -# Kolla container image type: binary or source. Default is 'source'. -#kolla_install_type: +# Kolla base container image distribution version default map. +# Defines default versions for each distribution. +#kolla_base_distro_version_default_map: + +# Kolla base container image distribution version. +# Default is kolla_base_distro_version_default_map[kolla_base_distro]. +#kolla_base_distro_version: # URL of docker registry to use for Kolla images. Default is not set, in which -# case Dockerhub will be used. +# case Quay.io will be used. #kolla_docker_registry: # Docker namespace to use for Kolla images. Default is 'kolla'. #kolla_docker_namespace: -# Whether docker should be configured to use an insecure registry for Kolla -# images. Default is false, unless docker_registry_enabled is true and -# docker_registry_enable_tls is false. -#kolla_docker_registry_insecure: - # Username to use to access a docker registry. Default is not set, in which # case the registry will be used without authentication. #kolla_docker_registry_username: @@ -98,12 +97,13 @@ # Default is {{ openstack_release }}. #kolla_openstack_release: -# Docker tag applied to built container images. Default is -# {{ kolla_openstack_release }}. +# Docker tag applied to built container images. Default is {{ +# kolla_openstack_release }}-{{ kolla_base_distro }}-{{ +# kolla_base_distro_version }}. #kolla_tag: -# Dict mapping names of sources to their definitions for -# kolla_install_type=source. See kolla.common.config for details. +# Dict mapping names of sources to their definitions. +# See kolla.common.config for details. # Example: # kolla_sources: # ironic-base: @@ -231,6 +231,19 @@ # remotely on the target nodes. If None, no virtualenv will be used. #kolla_ansible_target_venv: +# Password to use to encrypt the kolla-ansible passwords.yml file. +#kolla_ansible_vault_password: + +# Hashi Vault +#kolla_ansible_vault_addr: +#kolla_ansible_vault_mount_point: +#kolla_ansible_vault_kv_path: +#kolla_ansible_vault_namespace: +#kolla_ansible_vault_role_id: +#kolla_ansible_vault_secret_id: +#kolla_ansible_vault_token: +#kolla_ansible_vault_cacert: + # Whether TLS is enabled for the external API endpoints. Default is 'no'. #kolla_enable_tls_external: @@ -277,6 +290,9 @@ #kolla_enable_cinder_backend_iscsi: #kolla_enable_cinder_backend_lvm: #kolla_enable_cinder_backend_nfs: +#kolla_enable_cinder_backend_pure_fc: +#kolla_enable_cinder_backend_pure_iscsi: +#kolla_enable_cinder_backend_pure_roce: #kolla_enable_cinder_backend_quobyte: #kolla_enable_cinder_backup: #kolla_enable_cinder_horizon_policy_file: @@ -286,18 +302,18 @@ #kolla_enable_cyborg: #kolla_enable_designate: #kolla_enable_destroy_images: -#kolla_enable_elasticsearch: -#kolla_enable_elasticsearch_curator: #kolla_enable_etcd: +#kolla_enable_external_api_firewalld: #kolla_enable_external_mariadb_load_balancer: #kolla_enable_fluentd: -#kolla_enable_freezer: +#kolla_enable_fluentd_systemd: #kolla_enable_glance: #kolla_enable_glance_horizon_policy_file: #kolla_enable_glance_image_cache: #kolla_enable_gnocchi: #kolla_enable_gnocchi_statsd: #kolla_enable_grafana: +#kolla_enable_grafana_external: #kolla_enable_hacluster: #kolla_enable_haproxy: #kolla_enable_haproxy_memcached: @@ -307,38 +323,30 @@ #kolla_enable_horizon_blazar: #kolla_enable_horizon_cloudkitty: #kolla_enable_horizon_designate: -#kolla_enable_horizon_freezer: +#kolla_enable_horizon_fwaas: #kolla_enable_horizon_heat: #kolla_enable_horizon_ironic: #kolla_enable_horizon_magnum: #kolla_enable_horizon_manila: #kolla_enable_horizon_masakari: #kolla_enable_horizon_mistral: -#kolla_enable_horizon_monasca: -#kolla_enable_horizon_murano: #kolla_enable_horizon_neutron_vpnaas: #kolla_enable_horizon_octavia: -#kolla_enable_horizon_sahara: -#kolla_enable_horizon_senlin: -#kolla_enable_horizon_solum: #kolla_enable_horizon_tacker: #kolla_enable_horizon_trove: -#kolla_enable_horizon_vitrage: #kolla_enable_horizon_watcher: #kolla_enable_horizon_zun: #kolla_enable_influxdb: #kolla_enable_ironic: -#kolla_enable_ironic_ipxe: #kolla_enable_ironic_neutron_agent: -#kolla_enable_ironic_pxe_uefi: +#kolla_enable_ironic_prometheus_exporter: #kolla_enable_iscsid: -#kolla_enable_kafka: #kolla_enable_keepalived: #kolla_enable_keystone: #kolla_enable_keystone_federation: #kolla_enable_keystone_horizon_policy_file: -#kolla_enable_kibana: #kolla_enable_kuryr: +#kolla_enable_letsencrypt: #kolla_enable_loadbalancer: #kolla_enable_magnum: #kolla_enable_manila: @@ -350,15 +358,16 @@ #kolla_enable_mariabackup: #kolla_enable_mariadb: #kolla_enable_masakari: +#kolla_enable_masakari_hostmonitor: +#kolla_enable_masakari_instancemonitor: #kolla_enable_memcached: #kolla_enable_mistral: -#kolla_enable_monasca: #kolla_enable_multipathd: -#kolla_enable_murano: #kolla_enable_neutron: #kolla_enable_neutron_agent_ha: #kolla_enable_neutron_bgp_dragent: #kolla_enable_neutron_dvr: +#kolla_enable_neutron_fwaas: #kolla_enable_neutron_horizon_policy_file: #kolla_enable_neutron_infoblox_ipam_agent: #kolla_enable_neutron_metering: @@ -370,6 +379,7 @@ #kolla_enable_neutron_segments: #kolla_enable_neutron_sfc: #kolla_enable_neutron_sriov: +#kolla_enable_neutron_taas: #kolla_enable_neutron_trunk: #kolla_enable_neutron_vpnaas: #kolla_enable_nova: @@ -380,15 +390,19 @@ #kolla_enable_nova_ssh: #kolla_enable_octavia: #kolla_enable_octavia_driver_agent: +#kolla_enable_octavia_jobboard: +#kolla_enable_opensearch: +#kolla_enable_opensearch_dashboards: +#kolla_enable_opensearch_dashboards_external: #kolla_enable_openstack_core: #kolla_enable_openvswitch: #kolla_enable_osprofiler: -#kolla_enable_outward_rabbitmq: #kolla_enable_ovn: #kolla_enable_ovs_dpdk: #kolla_enable_placement: #kolla_enable_prometheus: #kolla_enable_prometheus_alertmanager: +#kolla_enable_prometheus_alertmanager_external: #kolla_enable_prometheus_blackbox_exporter: #kolla_enable_prometheus_cadvisor: #kolla_enable_prometheus_ceph_mgr_exporter: @@ -398,19 +412,17 @@ #kolla_enable_prometheus_haproxy_exporter: #kolla_enable_prometheus_libvirt_exporter: #kolla_enable_prometheus_memcached_exporter: +#kolla_enable_prometheus_msteams: #kolla_enable_prometheus_mysqld_exporter: #kolla_enable_prometheus_node_exporter: #kolla_enable_prometheus_openstack_exporter: +#kolla_enable_prometheus_openstack_exporter_external: #kolla_enable_prometheus_rabbitmq_exporter: #kolla_enable_prometheus_server: -#kolla_enable_qdrouterd: +#kolla_enable_proxysql: #kolla_enable_rabbitmq: #kolla_enable_redis: -#kolla_enable_sahara: -#kolla_enable_senlin: -#kolla_enable_skydive: -#kolla_enable_solum: -#kolla_enable_storm: +#kolla_enable_skyline: #kolla_enable_swift: #kolla_enable_swift_recon: #kolla_enable_swift_s3api: @@ -419,12 +431,82 @@ #kolla_enable_trove: #kolla_enable_trove_singletenant: #kolla_enable_venus: -#kolla_enable_vitrage: -#kolla_enable_vitrage_prometheus_datasource: #kolla_enable_watcher: -#kolla_enable_zookeeper: #kolla_enable_zun: +############################################################################### +# Kolla custom config generation. + +# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used +# when searching for Kolla custom service configuration. Only has an effect in +# a multiple environments setup. This allows you to configure merging between +# your environment and the base layer. Defaults to true. Set to false to for +# backwards compatability. +#kolla_openstack_custom_config_environment_merging_enabled: + +# Default value for kolla_openstack_custom_config_include_globs. +#kolla_openstack_custom_config_include_globs_default: + +# Extra items to add to kolla_openstack_custom_config_include_globs_default +# to produce kolla_openstack_custom_config_include_globs. +#kolla_openstack_custom_config_include_globs_extra: + +# List of dictionaries with the following keys: +# glob: a glob pattern. Any files matching this pattern will be copied to the +# the kolla custom config directory +# enabled: boolean to disable the glob. +# This determines the list of files to copy to the generated kolla config +# directory. +#kolla_openstack_custom_config_include_globs: + +# Kolla config generation rules. These operate on the list of files produced by +# applying kolla_openstack_custom_config_include_globs. Each of the paths in +# kolla_openstack_custom_config_paths is searched for files matching one of the +# globs. If a match is found, any files with the same relative path are grouped +# together. The rules determine what to do with these matching files e.g copy +# the most specific file without templating, merge the files with +# merge_configs, etc. +# List of dictionaries with the following keys: +# glob: A glob matching files for this rule to match on (relative to the +# search path) +# priority: The rules are processed in increasing priority order with the +# first rule matching taking effect. +# strategy: How to process the matched file. One of copy, concat, template, +# merge_configs, merge_yaml +# params: List of params to pass to module enacting the strategy +# Strategies: +# copy: Copy most specific file to kolla config without templating +# template: Template most specific file to kolla config +# concat: Concatenate files and copy the result to generated kolla config +# merge_configs: Use the merge_configs module to merge an ini file, before +# copying to the generated kolla-config. +# merge_yaml: Use the merge_yaml module to merge a file, before copying to +# the generated kolla-config. +#kolla_openstack_custom_config_rules: + +# Whether to enable ini merging rules in +# kolla_openstack_custom_config_rules_default. Default is true. +#kolla_openstack_custom_config_merge_configs_enabled: + +# Whether to enable yaml merging rules in +# kolla_openstack_custom_config_rules_default. Default is true. +#kolla_openstack_custom_config_merge_yaml_enabled: + +# Default merge strategy for ini files in +# kolla_openstack_custom_config_rules_default. Default is concat. +#kolla_openstack_custom_config_ini_merge_strategy_default: + +# Default value for kolla_openstack_custom_config_rules. +#kolla_openstack_custom_config_rules_default: + +# List of globs to filter from kolla_openstack_custom_config_rules_default. +# Default is an empty list. +#kolla_openstack_custom_config_rules_default_remove: + +# Extra items to add to kolla_openstack_custom_config_rules_default +# to produce kolla_openstack_custom_config_rules. +#kolla_openstack_custom_config_rules_extra: + ############################################################################### # Passwords and credentials. @@ -432,6 +514,10 @@ # Kolla passwords file. #kolla_ansible_default_custom_passwords: +# Dictionary containing extra custom passwords to add or override in the Kolla +# passwords file. +#kolla_ansible_extra_custom_passwords: + # Dictionary containing custom passwords to add or override in the Kolla # passwords file. #kolla_ansible_custom_passwords: @@ -471,7 +557,7 @@ kolla_external_vip_address: 192.168.33.2 # Path to a CA certificate file to use for the OS_CACERT environment variable # in public-openrc.sh file when TLS is enabled, instead of Kolla-Ansible's # default. -#kolla_external_fqdn_cacert: +#kolla_public_openrc_cacert: # Internal API certificate bundle. # @@ -484,7 +570,7 @@ kolla_external_vip_address: 192.168.33.2 # Path to a CA certificate file to use for the OS_CACERT environment variable # in admin-openrc.sh file when TLS is enabled, instead of Kolla-Ansible's # default. -#kolla_internal_fqdn_cacert: +#kolla_admin_openrc_cacert: ############################################################################### # Proxy configuration diff --git a/etc/kayobe/logging.yml b/etc/kayobe/logging.yml new file mode 100644 index 0000000..46033d2 --- /dev/null +++ b/etc/kayobe/logging.yml @@ -0,0 +1,11 @@ +--- +############################################################################### +# Logging configuration + +# Journald storage. One of: volatile, persistent, auto, or none. Defaults to +# `persistent`. +#journald_storage: + +############################################################################### +# Dummy variable to allow Ansible to accept this file. +workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/monitoring.yml b/etc/kayobe/monitoring.yml index f332ab9..5468936 100644 --- a/etc/kayobe/monitoring.yml +++ b/etc/kayobe/monitoring.yml @@ -63,15 +63,15 @@ ############################################################################### # Monitoring node LVM configuration. -# List of monitoring node volume groups. See mrlesmithjr.manage-lvm role for +# List of monitoring node volume groups. See mrlesmithjr.manage_lvm role for # format. #monitoring_lvm_groups: -# Default list of monitoring node volume groups. See mrlesmithjr.manage-lvm +# Default list of monitoring node volume groups. See mrlesmithjr.manage_lvm # role for format. #monitoring_lvm_groups_default: -# Additional list of monitoring node volume groups. See mrlesmithjr.manage-lvm +# Additional list of monitoring node volume groups. See mrlesmithjr.manage_lvm # role for format. #monitoring_lvm_groups_extra: diff --git a/etc/kayobe/neutron.yml b/etc/kayobe/neutron.yml index 489ee8f..6bd2e08 100644 --- a/etc/kayobe/neutron.yml +++ b/etc/kayobe/neutron.yml @@ -47,6 +47,13 @@ # secret: not currently supported #kolla_neutron_ml2_generic_switch_hosts: +# List of Ansible hosts whose switch interfaces are to be configured as tagged +# members of all networks managed by the genericswitch ML2 mechanism driver. +# These hosts will be matched against the description fields in the +# switch_interface_config variable for each switch to determine which +# interfaces should be configured. +#kolla_neutron_ml2_generic_switch_trunk_port_hosts: + # Dict containing additional configuration for switches managed by the # genericswitch ML2 mechanism driver. For per-switch configuration of switches # in kolla_neutron_ml2_generic_switch_hosts, this may be set as a group or diff --git a/etc/kayobe/openstack.yml b/etc/kayobe/openstack.yml index 67ad989..4db759f 100644 --- a/etc/kayobe/openstack.yml +++ b/etc/kayobe/openstack.yml @@ -2,10 +2,10 @@ ############################################################################### # OpenStack release configuration. -# Name of the current OpenStack release. Default is "yoga". +# Name of the current OpenStack release. Default is "2024.1". #openstack_release: -# Name of the current OpenStack branch. Default is "stable/yoga". +# Name of the current OpenStack branch. Default is "stable/2024.1". #openstack_branch: ############################################################################### diff --git a/etc/kayobe/overcloud-dib.yml b/etc/kayobe/overcloud-dib.yml index 3d69f8e..f5f9352 100644 --- a/etc/kayobe/overcloud-dib.yml +++ b/etc/kayobe/overcloud-dib.yml @@ -7,13 +7,17 @@ # Whether to build host disk images with DIB directly instead of through # Bifrost. Setting it to true disables Bifrost image build and allows images to # be built with the `kayobe overcloud host image build` command. Default value -# is {{ os_distribution == 'rocky' }}. This will change in a future release. +# is true. #overcloud_dib_build_host_images: +# List of additional build host packages to install. Default is an empty list. +#overcloud_dib_host_packages_extra: + # List of overcloud host disk images to build. Each element is a dict defining -# an image in a format accepted by the stackhpc.os-images role. Default is to -# build an image named "deployment_image" configured with the overcloud_dib_* -# variables defined below: {"name": "deployment_image", "elements": "{{ +# an image in a format accepted by the stackhpc.openstack.os_images role. +# Default is to build an image named "deployment_image" configured with the +# overcloud_dib_* variables defined below: +# {"name": "deployment_image", "elements": "{{ # overcloud_dib_elements }}", "env": "{{ overcloud_dib_env_vars }}", # "packages": "{{ overcloud_dib_packages }}"}. #overcloud_dib_host_images: @@ -25,13 +29,8 @@ # DIB image OS release. Default is {{ os_release }}. #overcloud_dib_os_release: -# List of default DIB elements. Default is ["centos", "cloud-init-datasources", -# "disable-selinux", "enable-serial-console", "vm"] when -# overcloud_dib_os_element is "centos", or ["rocky-container", -# "cloud-init-datasources", "disable-selinux", "enable-serial-console", "vm"] -# when overcloud_dib_os_element is "rocky" or -# ["ubuntu", "cloud-init-datasources", "enable-serial-console", "vm"] -# when overcloud_dib_os_element is "ubuntu". +# List of default DIB elements. Default is ["{{ overcloud_dib_os_element }}", +# "cloud-init-datasources", "enable-serial-console", "vm"]. #overcloud_dib_elements_default: # List of additional DIB elements. Default is none. @@ -59,15 +58,15 @@ #overcloud_dib_packages: # List of default git repositories containing Diskimage Builder (DIB) elements. -# See stackhpc.os-images role for usage. Default is empty. +# See stackhpc.openstack.os_images role for usage. Default is empty. #overcloud_dib_git_elements_default: # List of additional git repositories containing Diskimage Builder (DIB) -# elements. See stackhpc.os-images role for usage. Default is empty. +# elements. See stackhpc.openstack.os_images role for usage. Default is empty. #overcloud_dib_git_elements_extra: # List of git repositories containing Diskimage Builder (DIB) elements. See -# stackhpc.os-images role for usage. Default is a combination of +# stackhpc.openstack.os_images role for usage. Default is a combination of # overcloud_dib_git_elements_default and overcloud_dib_git_elements_extra. #overcloud_dib_git_elements: @@ -76,6 +75,10 @@ # pip_upper_constraints_file }}. #overcloud_dib_upper_constraints_file: +# Upper constraints file for installation of DIB to build overcloud host +# disk images. Default is empty string. +#overcloud_dib_dib_upper_constraints_file: + ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/etc/kayobe/proxy.yml b/etc/kayobe/proxy.yml index 7d63017..714b9da 100644 --- a/etc/kayobe/proxy.yml +++ b/etc/kayobe/proxy.yml @@ -11,8 +11,10 @@ #https_proxy: # List of domains, hostnames, IP addresses and networks for which no proxy is -# used. Defaults to ["127.0.0.1", "localhost", "{{ docker_registry }}"]. This -# is configured only if either http_proxy or https_proxy is set. +# used. Defaults to ["127.0.0.1", "localhost", "{{ ('http://' ~ +# docker_registry) | urlsplit('hostname') }}"] if docker_registry is set, or +# ["127.0.0.1", "localhost"] otherwise. This is configured only if either +# http_proxy or https_proxy is set. #no_proxy: ############################################################################### diff --git a/etc/kayobe/seed-hypervisor.yml b/etc/kayobe/seed-hypervisor.yml index 9f1e6ad..4cddca2 100644 --- a/etc/kayobe/seed-hypervisor.yml +++ b/etc/kayobe/seed-hypervisor.yml @@ -36,7 +36,7 @@ seed_hypervisor_bootstrap_user: "{{ lookup('env', 'USER') }}" ############################################################################### # Seed hypervisor node LVM configuration. -# List of seed hypervisor volume groups. See mrlesmithjr.manage-lvm role for +# List of seed hypervisor volume groups. See mrlesmithjr.manage_lvm role for # format. Set to "{{ seed_hypervisor_lvm_groups_with_data }}" to create a # volume group for libvirt storage. #seed_hypervisor_lvm_groups: @@ -45,7 +45,7 @@ seed_hypervisor_bootstrap_user: "{{ lookup('env', 'USER') }}" # default. #seed_hypervisor_lvm_groups_with_data: -# Seed LVM volume group for data. See mrlesmithjr.manage-lvm role for format. +# Seed LVM volume group for data. See mrlesmithjr.manage_lvm role for format. #seed_hypervisor_lvm_group_data: # List of disks for use by seed hypervisor LVM data volume group. Default to an diff --git a/etc/kayobe/seed-vm.yml b/etc/kayobe/seed-vm.yml index 71c2e1f..92d7664 100644 --- a/etc/kayobe/seed-vm.yml +++ b/etc/kayobe/seed-vm.yml @@ -16,6 +16,12 @@ seed_vm_vcpus: 1 # List of volumes. #seed_vm_volumes: +# Root volume. +#seed_vm_root_volume: + +# Data volume. +#seed_vm_data_volume: + # Name of the storage pool for the seed VM volumes. #seed_vm_pool: @@ -26,12 +32,12 @@ seed_vm_vcpus: 1 #seed_vm_root_format: # Base image for the seed VM root volume. Default is -# "https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img" +# "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" # when os_distribution is "ubuntu", -# http://dl.rockylinux.org/pub/rocky/8.5/images/Rocky-8-GenericCloud-8.5-20211114.2.x86_64.qcow2 +# https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud.latest.x86_64.qcow2 # when os_distribution is "rocky", # or -# "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20210603.0.x86_64.qcow2" +# "https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-20221206.0.x86_64.qcow2" # otherwise. # NOTE(priteau): Temporarily using Rocky Linux 9.3 because 9.4 images fail to # boot (https://bugs.rockylinux.org/view.php?id=6832) diff --git a/etc/kayobe/seed.yml b/etc/kayobe/seed.yml index 3a5186e..541c078 100644 --- a/etc/kayobe/seed.yml +++ b/etc/kayobe/seed.yml @@ -36,25 +36,23 @@ ############################################################################### # Seed node LVM configuration. -# List of seed volume groups. See mrlesmithjr.manage-lvm role for format. +# List of seed volume groups. See mrlesmithjr.manage_lvm role for format. #seed_lvm_groups: -# Default list of seed volume groups. See mrlesmithjr.manage-lvm role for +# Default list of seed volume groups. See mrlesmithjr.manage_lvm role for # format. #seed_lvm_groups_default: -# Additional list of seed volume groups. See mrlesmithjr.manage-lvm role for +# Additional list of seed volume groups. See mrlesmithjr.manage_lvm role for # format. #seed_lvm_groups_extra: # Whether a 'data' LVM volume group should exist on the seed. By default this -# contains a 'docker-volumes' logical volume for Docker volume storage. It will -# also be used for Docker container and image storage if -# 'docker_storage_driver' is set to 'devicemapper'. Default is true if -# 'docker_storage_driver' is set to 'devicemapper', or false otherwise. +# contains a 'docker-volumes' logical volume for Docker volume storage. +# Default is false. #seed_lvm_group_data_enabled: -# Seed LVM volume group for data. See mrlesmithjr.manage-lvm role for format. +# Seed LVM volume group for data. See mrlesmithjr.manage_lvm role for format. #seed_lvm_group_data: # List of disks for use by seed LVM data volume group. Default to an invalid @@ -100,13 +98,16 @@ # Example: # seed_containers: # squid: -# name: "squid" # image: "stackhpc/squid:3.5.20-1" # pre: "{{ kayobe_env_config_path }}/containers/squid/pre.yml" # post: "{{ kayobe_env_config_path }}/containers/squid/post.yml" # #seed_containers: +# Whether to attempt a basic authentication login to a registry when +# deploying seed containers +#seed_deploy_containers_registry_attempt_login: + ############################################################################### # Seed node firewalld configuration. diff --git a/etc/kayobe/ssh.yml b/etc/kayobe/ssh.yml index 1463a4b..5ab63e9 100644 --- a/etc/kayobe/ssh.yml +++ b/etc/kayobe/ssh.yml @@ -2,6 +2,9 @@ ############################################################################### # SSH configuration. +# Type of SSH key. Default is "rsa". +#ssh_key_type: + # Name of SSH key. #ssh_key_name: diff --git a/etc/kayobe/storage.yml b/etc/kayobe/storage.yml index 535666c..2cdac5b 100644 --- a/etc/kayobe/storage.yml +++ b/etc/kayobe/storage.yml @@ -68,26 +68,24 @@ ############################################################################### # Storage node LVM configuration. -# List of storage volume groups. See mrlesmithjr.manage-lvm role for +# List of storage volume groups. See mrlesmithjr.manage_lvm role for # format. #storage_lvm_groups: -# Default list of storage volume groups. See mrlesmithjr.manage-lvm role for +# Default list of storage volume groups. See mrlesmithjr.manage_lvm role for # format. #storage_lvm_groups_default: -# Additional list of storage volume groups. See mrlesmithjr.manage-lvm role +# Additional list of storage volume groups. See mrlesmithjr.manage_lvm role # for format. #storage_lvm_groups_extra: # Whether a 'data' LVM volume group should exist on storage hosts. By default -# this contains a 'docker-volumes' logical volume for Docker volume storage. It -# will also be used for Docker container and image storage if -# 'docker_storage_driver' is set to 'devicemapper'. Default is true if -# 'docker_storage_driver' is set to 'devicemapper', or false otherwise. +# this contains a 'docker-volumes' logical volume for Docker volume storage. +# Default is false. #storage_lvm_group_data_enabled: -# Storage LVM volume group for data. See mrlesmithjr.manage-lvm role for +# Storage LVM volume group for data. See mrlesmithjr.manage_lvm role for # format. #storage_lvm_group_data: diff --git a/etc/kayobe/vgpu.yml b/etc/kayobe/vgpu.yml new file mode 100644 index 0000000..c304f12 --- /dev/null +++ b/etc/kayobe/vgpu.yml @@ -0,0 +1,22 @@ +--- +################################################################################ +# VGPU configuration. + +# URL pointing to location of GRID driver. Examples are: +# "file://path/on/ansible/control/host" +# "http://webserver/NVIDIA-GRID-Linux-KVM-525.105.14-525.105.17-528.89.zip" +# Default is: None. +#vgpu_driver_url: + +# Flag to control whether the vGPU playbook should automatically reboot the +# hypervisor. Note: this is necessary for the driver to be loaded correctly. +# Caution should be used when changing this option. Default is true. +#vgpu_do_reboot: + +# Time to wait when rebooting the host before failing. +# Default is 600 (seconds). +#vgpu_reboot_timeout: + +############################################################################### +# Dummy variable to allow Ansible to accept this file. +workaround_ansible_issue_8743: yes diff --git a/setup.cfg b/setup.cfg index 8748a4d..ce807bc 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,11 +1,11 @@ [metadata] name = kayobe-config-dev summary = Development configuration for Kayobe -description-file = +description_file = README.rst author = OpenStack -author-email = openstack-discuss@lists.openstack.org -home-page = https://docs.openstack.org/kayobe/latest/ +author_email = openstack-discuss@lists.openstack.org +home_page = https://docs.openstack.org/kayobe/latest/ classifier = Environment :: OpenStack Intended Audience :: Information Technology diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 3e22976..79049ac 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -1,14 +1,39 @@ --- - project: + queue: kayobe check: jobs: - openstack-tox-pep8 - - kayobe-overcloud-centos - - kayobe-seed-centos + - kayobe-overcloud-rocky9 + - kayobe-overcloud-centos9s + - kayobe-overcloud-ubuntu-jammy + - kayobe-overcloud-tls-rocky9 + - kayobe-overcloud-host-configure-rocky9 + - kayobe-overcloud-host-configure-centos9s + - kayobe-overcloud-host-configure-ubuntu-jammy + - kayobe-overcloud-upgrade-ubuntu-focal + - kayobe-seed-rocky9 + - kayobe-seed-ubuntu-jammy + - kayobe-seed-images-rocky9 + - kayobe-seed-upgrade-ubuntu-focal + - kayobe-seed-vm-rocky9 + - kayobe-seed-vm-ubuntu-jammy + - kayobe-infra-vm-rocky9 + - kayobe-infra-vm-ubuntu-jammy gate: - queue: kayobe jobs: - openstack-tox-pep8 - - kayobe-overcloud-centos - - kayobe-seed-centos \ No newline at end of file + - kayobe-overcloud-rocky9 + - kayobe-overcloud-ubuntu-jammy + - kayobe-overcloud-tls-rocky9 + - kayobe-overcloud-host-configure-rocky9 + - kayobe-overcloud-host-configure-ubuntu-jammy + - kayobe-overcloud-upgrade-ubuntu-focal + - kayobe-seed-rocky9 + - kayobe-seed-ubuntu-jammy + - kayobe-seed-upgrade-ubuntu-focal + - kayobe-seed-vm-rocky9 + - kayobe-seed-vm-ubuntu-jammy + - kayobe-infra-vm-rocky9 + - kayobe-infra-vm-ubuntu-jammy