# resource_properties_data

created_at: 2026-01-30 17:02:13.234455
data:
  {"type": "comma_delimited_list", "value": ["keystone_admin_api", "keystone_public_api", "keystone_admin_api", "keystone_public_api", "aodh_api", "aodh_evaluator", "aodh_listener", "aodh_notifier", "boot_params_service", "barbican_api", "barbican_backend_simple_crypto", "ca_certs", "ceilometer_agent_central", "ceilometer_agent_notification", "ceph_client", "ceph_mds", "ceph_mgr", "ceph_mon", "ceph_osd", "cinder_api", "cinder_backup", "cinder_scheduler", "cinder_volume", "clustercheck", "ceilometer_agent_compute", "container_image_prepare", "logrotate_crond", "docker_registry", "glance_api", "glance_api_internal", "gnocchi_api", "gnocchi_metricd", "gnocchi_statsd", "haproxy", "heat_api", "heat_api_cfn", "heat_engine", "horizon", "iscsid", "kernel", "keystone", "manila_api", "manila_backend_cephfs", "manila_scheduler", "manila_share", "memcached", "mysql", "mysql_client", "neutron_api", "neutron_plugin_ml2_ovn", "neutron_sriov_agent", "neutron_dhcp", "nova_api", "nova_conductor", "nova_metadata", "nova_scheduler", "nova_compute", "nova_libvirt", "nova_migration_target", "nova_vnc_proxy", "ovn_controller", "ovn_dbs", "ovn_metadata", "octavia_api", "octavia_deployment_config", "octavia_health_manager", "octavia_housekeeping", "octavia_worker", "openstack_clients", "oslo_messaging_notify", "oslo_messaging_rpc", "pacemaker", "placement", "podman", "redis", "rsyslog_baremetal_ansible", "snmp", "sshd", "swift_proxy", "swift_ringbuilder", "swift_storage", "chrony", "timezone", "logrotate_tmpwatch", "tripleo_firewall", "tripleo_packages", "tuned"]}


created_at: 2026-01-30 17:02:13.406220
data:
  {"servers": {"0": "fb25c029-076a-4dff-ad3a-b9572a4b081f"}, "EndpointMap": {"AodhAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8042", "protocol": "http", "uri": "http://172.17.0.2:8042", "uri_no_suffix": "http://172.17.0.2:8042"}, "AodhInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8042", "protocol": "http", "uri": "http://172.17.0.2:8042", "uri_no_suffix": "http://172.17.0.2:8042"}, "AodhPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8042", "protocol": "http", "uri": "http://172.21.0.2:8042", "uri_no_suffix": "http://172.21.0.2:8042"}, "BarbicanAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9311", "protocol": "http", "uri": "http://172.17.0.2:9311", "uri_no_suffix": "http://172.17.0.2:9311"}, "BarbicanInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9311", "protocol": "http", "uri": "http://172.17.0.2:9311", "uri_no_suffix": "http://172.17.0.2:9311"}, "BarbicanPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9311", "protocol": "http", "uri": "http://172.21.0.2:9311", "uri_no_suffix": "http://172.21.0.2:9311"}, "CephDashboardInternal": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "8444", "protocol": "http", "uri": "http://192.168.122.99:8444", "uri_no_suffix": "http://192.168.122.99:8444"}, "CephGrafanaInternal": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "3100", "protocol": "http", "uri": "http://172.18.0.2:3100", "uri_no_suffix": "http://172.18.0.2:3100"}, "CephRgwAdmin": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080/swift/v1/AUTH_%(project_id)s", "uri_no_suffix": "http://172.18.0.2:8080"}, "CephRgwInternal": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080/swift/v1/AUTH_%(project_id)s", "uri_no_suffix": "http://172.18.0.2:8080"}, "CephRgwPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8080", "protocol": "http", "uri": "http://172.21.0.2:8080/swift/v1/AUTH_%(project_id)s", "uri_no_suffix": "http://172.21.0.2:8080"}, "CinderAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8776", "protocol": "http", "uri": "http://172.21.0.2:8776/v1/%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8776"}, "CinderV2Admin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v2/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderV2Internal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v2/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderV2Public": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8776", "protocol": "http", "uri": "http://172.21.0.2:8776/v2/%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8776"}, "CinderV3Admin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v3/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderV3Internal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8776", "protocol": "http", "uri": "http://172.17.0.2:8776/v3/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8776"}, "CinderV3Public": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8776", "protocol": "http", "uri": "http://172.21.0.2:8776/v3/%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8776"}, "DesignateAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9001", "protocol": "http", "uri": "http://172.17.0.2:9001/v2", "uri_no_suffix": "http://172.17.0.2:9001"}, "DesignateInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9001", "protocol": "http", "uri": "http://172.17.0.2:9001/v2", "uri_no_suffix": "http://172.17.0.2:9001"}, "DesignatePublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9001", "protocol": "http", "uri": "http://172.21.0.2:9001/v2", "uri_no_suffix": "http://172.21.0.2:9001"}, "DockerRegistryInternal": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "8787", "protocol": "http", "uri": "http://192.168.122.99:8787", "uri_no_suffix": "http://192.168.122.99:8787"}, "GaneshaInternal": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "2049", "protocol": "nfs", "uri": "nfs://172.21.0.2:2049", "uri_no_suffix": "nfs://172.21.0.2:2049"}, "GlanceAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9293", "protocol": "http", "uri": "http://172.17.0.2:9293", "uri_no_suffix": "http://172.17.0.2:9293"}, "GlanceInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9293", "protocol": "http", "uri": "http://172.17.0.2:9293", "uri_no_suffix": "http://172.17.0.2:9293"}, "GlancePublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9292", "protocol": "http", "uri": "http://172.21.0.2:9292", "uri_no_suffix": "http://172.21.0.2:9292"}, "GnocchiAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8041", "protocol": "http", "uri": "http://172.17.0.2:8041", "uri_no_suffix": "http://172.17.0.2:8041"}, "GnocchiInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8041", "protocol": "http", "uri": "http://172.17.0.2:8041", "uri_no_suffix": "http://172.17.0.2:8041"}, "GnocchiPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8041", "protocol": "http", "uri": "http://172.21.0.2:8041", "uri_no_suffix": "http://172.21.0.2:8041"}, "HeatAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8004", "protocol": "http", "uri": "http://172.17.0.2:8004/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8004"}, "HeatInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8004", "protocol": "http", "uri": "http://172.17.0.2:8004/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8004"}, "HeatPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8004", "protocol": "http", "uri": "http://172.21.0.2:8004/v1/%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8004"}, "HeatCfnAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8000", "protocol": "http", "uri": "http://172.17.0.2:8000/v1", "uri_no_suffix": "http://172.17.0.2:8000"}, "HeatCfnInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8000", "protocol": "http", "uri": "http://172.17.0.2:8000/v1", "uri_no_suffix": "http://172.17.0.2:8000"}, "HeatCfnPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8000", "protocol": "http", "uri": "http://172.21.0.2:8000/v1", "uri_no_suffix": "http://172.21.0.2:8000"}, "HorizonPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "80", "protocol": "http", "uri": "http://172.21.0.2:80/dashboard", "uri_no_suffix": "http://172.21.0.2:80"}, "IronicAdmin": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "6385", "protocol": "http", "uri": "http://192.168.122.99:6385/v1", "uri_no_suffix": "http://192.168.122.99:6385"}, "IronicInternal": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "6385", "protocol": "http", "uri": "http://192.168.122.99:6385/v1", "uri_no_suffix": "http://192.168.122.99:6385"}, "IronicPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "6385", "protocol": "http", "uri": "http://172.21.0.2:6385/v1", "uri_no_suffix": "http://172.21.0.2:6385"}, "IronicInspectorAdmin": {"host": "", "host_nobrackets": "", "port": "5050", "protocol": "http", "uri": "http://:5050", "uri_no_suffix": "http://:5050"}, "IronicInspectorInternal": {"host": "", "host_nobrackets": "", "port": "5050", "protocol": "http", "uri": "http://:5050", "uri_no_suffix": "http://:5050"}, "IronicInspectorPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "5050", "protocol": "http", "uri": "http://172.21.0.2:5050", "uri_no_suffix": "http://172.21.0.2:5050"}, "KeystoneAdmin": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "35357", "protocol": "http", "uri": "http://192.168.122.99:35357/", "uri_no_suffix": "http://192.168.122.99:35357"}, "KeystoneInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "5000", "protocol": "http", "uri": "http://172.17.0.2:5000/", "uri_no_suffix": "http://172.17.0.2:5000"}, "KeystonePublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "5000", "protocol": "http", "uri": "http://172.21.0.2:5000/", "uri_no_suffix": "http://172.21.0.2:5000"}, "KeystoneV3Admin": {"host": "192.168.122.99", "host_nobrackets": "192.168.122.99", "port": "35357", "protocol": "http", "uri": "http://192.168.122.99:35357/v3", "uri_no_suffix": "http://192.168.122.99:35357"}, "KeystoneV3Internal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "5000", "protocol": "http", "uri": "http://172.17.0.2:5000/v3", "uri_no_suffix": "http://172.17.0.2:5000"}, "KeystoneV3Public": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "5000", "protocol": "http", "uri": "http://172.21.0.2:5000/v3", "uri_no_suffix": "http://172.21.0.2:5000"}, "ManilaAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8786", "protocol": "http", "uri": "http://172.17.0.2:8786/v2", "uri_no_suffix": "http://172.17.0.2:8786"}, "ManilaInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8786", "protocol": "http", "uri": "http://172.17.0.2:8786/v2", "uri_no_suffix": "http://172.17.0.2:8786"}, "ManilaPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8786", "protocol": "http", "uri": "http://172.21.0.2:8786/v2", "uri_no_suffix": "http://172.21.0.2:8786"}, "ManilaV1Admin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8786", "protocol": "http", "uri": "http://172.17.0.2:8786/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8786"}, "ManilaV1Internal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8786", "protocol": "http", "uri": "http://172.17.0.2:8786/v1/%(tenant_id)s", "uri_no_suffix": "http://172.17.0.2:8786"}, "ManilaV1Public": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8786", "protocol": "http", "uri": "http://172.21.0.2:8786/v1/%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8786"}, "MetricsQdrPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "5666", "protocol": "amqp", "uri": "amqp://172.21.0.2:5666", "uri_no_suffix": "amqp://172.21.0.2:5666"}, "MysqlInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "3306", "protocol": "mysql+pymysql", "uri": "mysql+pymysql://172.17.0.2:3306", "uri_no_suffix": "mysql+pymysql://172.17.0.2:3306"}, "NeutronAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9696", "protocol": "http", "uri": "http://172.17.0.2:9696", "uri_no_suffix": "http://172.17.0.2:9696"}, "NeutronInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9696", "protocol": "http", "uri": "http://172.17.0.2:9696", "uri_no_suffix": "http://172.17.0.2:9696"}, "NeutronPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9696", "protocol": "http", "uri": "http://172.21.0.2:9696", "uri_no_suffix": "http://172.21.0.2:9696"}, "NovaAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8774", "protocol": "http", "uri": "http://172.17.0.2:8774/v2.1", "uri_no_suffix": "http://172.17.0.2:8774"}, "NovaInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8774", "protocol": "http", "uri": "http://172.17.0.2:8774/v2.1", "uri_no_suffix": "http://172.17.0.2:8774"}, "NovaPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8774", "protocol": "http", "uri": "http://172.21.0.2:8774/v2.1", "uri_no_suffix": "http://172.21.0.2:8774"}, "NovaMetadataInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8775", "protocol": "http", "uri": "http://172.17.0.2:8775", "uri_no_suffix": "http://172.17.0.2:8775"}, "NovaVNCProxyAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "6080", "protocol": "http", "uri": "http://172.17.0.2:6080", "uri_no_suffix": "http://172.17.0.2:6080"}, "NovaVNCProxyInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "6080", "protocol": "http", "uri": "http://172.17.0.2:6080", "uri_no_suffix": "http://172.17.0.2:6080"}, "NovaVNCProxyPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "6080", "protocol": "http", "uri": "http://172.21.0.2:6080", "uri_no_suffix": "http://172.21.0.2:6080"}, "NovajoinAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9090", "protocol": "http", "uri": "http://172.17.0.2:9090/v1", "uri_no_suffix": "http://172.17.0.2:9090"}, "NovajoinInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9090", "protocol": "http", "uri": "http://172.17.0.2:9090/v1", "uri_no_suffix": "http://172.17.0.2:9090"}, "NovajoinPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9090", "protocol": "http", "uri": "http://172.21.0.2:9090/v1", "uri_no_suffix": "http://172.21.0.2:9090"}, "OctaviaAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9876", "protocol": "http", "uri": "http://172.17.0.2:9876", "uri_no_suffix": "http://172.17.0.2:9876"}, "OctaviaInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "9876", "protocol": "http", "uri": "http://172.17.0.2:9876", "uri_no_suffix": "http://172.17.0.2:9876"}, "OctaviaPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "9876", "protocol": "http", "uri": "http://172.21.0.2:9876", "uri_no_suffix": "http://172.21.0.2:9876"}, "PlacementAdmin": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8778", "protocol": "http", "uri": "http://172.17.0.2:8778/placement", "uri_no_suffix": "http://172.17.0.2:8778"}, "PlacementInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8778", "protocol": "http", "uri": "http://172.17.0.2:8778/placement", "uri_no_suffix": "http://172.17.0.2:8778"}, "PlacementPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8778", "protocol": "http", "uri": "http://172.21.0.2:8778/placement", "uri_no_suffix": "http://172.21.0.2:8778"}, "SwiftAdmin": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080", "uri_no_suffix": "http://172.18.0.2:8080"}, "SwiftInternal": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080/v1/AUTH_%(tenant_id)s", "uri_no_suffix": "http://172.18.0.2:8080"}, "SwiftPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8080", "protocol": "http", "uri": "http://172.21.0.2:8080/v1/AUTH_%(tenant_id)s", "uri_no_suffix": "http://172.21.0.2:8080"}, "SwiftS3Admin": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080", "uri_no_suffix": "http://172.18.0.2:8080"}, "SwiftS3Internal": {"host": "172.18.0.2", "host_nobrackets": "172.18.0.2", "port": "8080", "protocol": "http", "uri": "http://172.18.0.2:8080", "uri_no_suffix": "http://172.18.0.2:8080"}, "SwiftS3Public": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "8080", "protocol": "http", "uri": "http://172.21.0.2:8080", "uri_no_suffix": "http://172.21.0.2:8080"}, "MysqlCellInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "3306", "protocol": "mysql+pymysql", "uri": "mysql+pymysql://172.17.0.2:3306", "uri_no_suffix": "mysql+pymysql://172.17.0.2:3306"}, "NovaVNCProxyCellPublic": {"host": "172.21.0.2", "host_nobrackets": "172.21.0.2", "port": "6080", "protocol": "http", "uri": "http://172.21.0.2:6080", "uri_no_suffix": "http://172.21.0.2:6080"}, "NovaMetadataCellInternal": {"host": "172.17.0.2", "host_nobrackets": "172.17.0.2", "port": "8775", "protocol": "http", "uri": "http://172.17.0.2:8775", "uri_no_suffix": "http://172.17.0.2:8775"}}}


created_at: 2026-01-30 17:02:14.222702
data:
  {"type": "json", "value": {"ctlplane": ["192.168.122.100"], "storage": ["172.18.0.100"], "storage_mgmt": ["172.20.0.100"], "internal_api": ["172.17.0.100"], "tenant": ["172.19.0.100"], "external": ["172.21.0.100"]}}


created_at: 2026-01-30 17:02:14.604325
data:
  {"OS::stack_id": "arn:openstack:heat::admin:stacks/standalone-AllNodesDeploySteps-nrzdev7x5hip-StandaloneExtraConfigPost-776c6cwpepxg/a127c2a5-7d8e-4fbd-9eef-7389192fc1f4"}


created_at: 2026-01-30 17:02:34.911663
data:
  {"value": ["192.168.122.99  standalone.ctlplane.localdomain", "172.18.0.2  standalone.storage.localdomain", "172.20.0.2  standalone.storagemgmt.localdomain", "172.17.0.2  standalone.internalapi.localdomain", "172.21.0.2  standalone.localdomain"]}


created_at: 2026-01-30 17:02:34.978883
data:
  {"value": ["keystone_admin_api", "keystone_public_api", "keystone_admin_api", "keystone_public_api", "aodh_api", "aodh_evaluator", "aodh_listener", "aodh_notifier", "boot_params_service", "barbican_api", "barbican_backend_simple_crypto", "ca_certs", "ceilometer_agent_central", "ceilometer_agent_notification", "ceph_client", "ceph_mds", "ceph_mgr", "ceph_mon", "ceph_osd", "cinder_api", "cinder_backup", "cinder_scheduler", "cinder_volume", "clustercheck", "ceilometer_agent_compute", "container_image_prepare", "logrotate_crond", "docker_registry", "glance_api", "glance_api_internal", "gnocchi_api", "gnocchi_metricd", "gnocchi_statsd", "haproxy", "heat_api", "heat_api_cfn", "heat_engine", "horizon", "iscsid", "kernel", "keystone", "manila_api", "manila_backend_cephfs", "manila_scheduler", "manila_share", "memcached", "mysql", "mysql_client", "neutron_api", "neutron_plugin_ml2_ovn", "neutron_sriov_agent", "neutron_dhcp", "nova_api", "nova_conductor", "nova_metadata", "nova_scheduler", "nova_compute", "nova_libvirt", "nova_migration_target", "nova_vnc_proxy", "ovn_controller", "ovn_dbs", "ovn_metadata", "octavia_api", "octavia_deployment_config", "octavia_health_manager", "octavia_housekeeping", "octavia_worker", "openstack_clients", "oslo_messaging_notify", "oslo_messaging_rpc", "pacemaker", "placement", "podman", "redis", "rsyslog_baremetal_ansible", "snmp", "sshd", "swift_proxy", "swift_ringbuilder", "swift_storage", "chrony", "timezone", "logrotate_tmpwatch", "tripleo_firewall", "tripleo_packages", "tuned"]}


created_at: 2026-01-30 17:02:34.982269
data:
  {"value": {"ctlplane": ["192.168.122.100"], "storage": ["172.18.0.100"], "storage_mgmt": ["172.20.0.100"], "internal_api": ["172.17.0.100"], "tenant": ["172.19.0.100"], "external": ["172.21.0.100"]}}


created_at: 2026-01-30 17:02:34.988311
data:
  {"net_ip_map": {"ctlplane": ["192.168.122.100"], "storage": ["172.18.0.100"], "storage_mgmt": ["172.20.0.100"], "internal_api": ["172.17.0.100"], "tenant": ["172.19.0.100"], "external": ["172.21.0.100"]}, "OS::stack_id": "arn:openstack:heat::admin:stacks/standalone-StandaloneIpListMap-igabloh7gbfr/a34f1a84-9f17-4dd8-be9d-96db370ada33"}


created_at: 2026-01-30 17:02:34.992230
data:
  {"value": {"Standalone": {"standalone": {"fqdn_storage": "standalone.storage.localdomain", "fqdn_storage_mgmt": "standalone.storagemgmt.localdomain", "fqdn_internal_api": "standalone.internalapi.localdomain", "fqdn_tenant": "standalone.tenant.localdomain", "fqdn_external": "standalone.external.localdomain", "fqdn_ctlplane": "standalone.ctlplane.localdomain", "fqdn_canonical": "standalone.localdomain", "hostname_resolve_network": "internal_api"}}}}


created_at: 2026-01-30 17:02:35.128887
data:
  {"RoleConfig": {"global_vars": {"deploy_steps_max": 6, "service_net_map": {"apache_network": "internal_api", "neutron_tenant_network": "tenant", "aodh_api_network": "internal_api", "barbican_api_network": "internal_api", "gnocchi_api_network": "internal_api", "mongodb_network": "internal_api", "cinder_api_network": "internal_api", "cinder_iscsi_network": "storage", "glance_api_network": "internal_api", "glance_api_edge_network": "internal_api", "glance_api_internal_network": "internal_api", "ironic_api_network": "ctlplane", "ironic_network": "baremetal", "ironic_inspector_network": "baremetal", "keystone_admin_api_network": "ctlplane", "keystone_public_api_network": "internal_api", "manila_api_network": "internal_api", "neutron_api_network": "internal_api", "octavia_api_network": "internal_api", "heat_api_network": "internal_api", "heat_api_cfn_network": "internal_api", "heat_api_cloudwatch_network": "internal_api", "nova_api_network": "internal_api", "placement_network": "internal_api", "nova_metadata_network": "internal_api", "nova_libvirt_network": "internal_api", "novajoin_network": "internal_api", "swift_storage_network": "storage_mgmt", "swift_proxy_network": "storage", "horizon_network": "internal_api", "memcached_network": "internal_api", "oslo_messaging_rpc_network": "internal_api", "oslo_messaging_notify_network": "internal_api", "rabbitmq_network": "internal_api", "rabbitmq_management_network": "internal_api", "qdr_network": "internal_api", "redis_network": "internal_api", "ganesha_network": "external", "mysql_network": "internal_api", "snmpd_network": "ctlplane", "ceph_cluster_network": "storage_mgmt", "ceph_dashboard_network": "ctlplane", "ceph_grafana_network": "storage", "ceph_mon_network": "storage", "ceph_rgw_network": "storage", "public_network": "external", "internal_api_network": "internal_api", "opendaylight_api_network": "internal_api", "ovn_dbs_network": "internal_api", "docker_registry_network": "ctlplane", "pacemaker_network": "internal_api", "pacemaker_remote_network": "internal_api", "designate_api_network": "internal_api", "designate_mdns_network": "internal_api", "designate_worker_network": "external", "designate_bind_network": "external", "bindnetwork": "external", "etcd_network": "internal_api", "haproxy_network": "ctlplane", "unbound_network": "external", "standalone_hostname_resolve_network": "internal_api", "standalone_metrics_qdr_network": "internal_api", "nova_vnc_proxy_network": "internal_api"}, "validate_controllers_icmp": false, "validate_gateways_icmp": false, "validate_fqdn": false, "ping_test_gateway_ips": {"Standalone": []}, "ping_test_ips": {"Standalone": "192.168.122.100 172.18.0.100 172.20.0.100 172.17.0.100 172.19.0.100 172.21.0.100"}, "network_safe_defaults": true, "deploy_artifact_urls": [], "deploy_artifact_files": [], "hosts_entry": ["172.17.0.100 standalone.localdomain standalone", "172.18.0.100 standalone.storage.localdomain standalone.storage", "172.20.0.100 standalone.storagemgmt.localdomain standalone.storagemgmt", "172.17.0.100 standalone.internalapi.localdomain standalone.internalapi", "172.19.0.100 standalone.tenant.localdomain standalone.tenant", "172.21.0.100 standalone.external.localdomain standalone.external", "192.168.122.100 standalone.ctlplane.localdomain standalone.ctlplane"], "primary_role_name": "Standalone", "deploy_identifier": "1769792090", "container_cli": "podman", "enabled_services": ["keystone_admin_api", "keystone_public_api", "aodh_api", "aodh_evaluator", "aodh_listener", "aodh_notifier", "boot_params_service", "barbican_api", "barbican_backend_simple_crypto", "ca_certs", "ceilometer_agent_central", "ceilometer_agent_notification", "ceph_client", "ceph_mds", "ceph_mgr", "ceph_mon", "ceph_osd", "cinder_api", "cinder_backup", "cinder_scheduler", "cinder_volume", "clustercheck", "ceilometer_agent_compute", "container_image_prepare", "logrotate_crond", "docker_registry", "glance_api", "glance_api_internal", "gnocchi_api", "gnocchi_metricd", "gnocchi_statsd", "haproxy", "heat_api", "heat_api_cfn", "heat_engine", "horizon", "iscsid", "kernel", "keystone", "manila_api", "manila_backend_cephfs", "manila_scheduler", "manila_share", "memcached", "mysql", "mysql_client", "neutron_api", "neutron_plugin_ml2_ovn", "neutron_sriov_agent", "neutron_dhcp", "nova_api", "nova_conductor", "nova_metadata", "nova_scheduler", "nova_compute", "nova_libvirt", "nova_migration_target", "nova_vnc_proxy", "ovn_controller", "ovn_dbs", "ovn_metadata", "octavia_api", "octavia_deployment_config", "octavia_health_manager", "octavia_housekeeping", "octavia_worker", "openstack_clients", "oslo_messaging_notify", "oslo_messaging_rpc", "pacemaker", "placement", "podman", "redis", "rsyslog_baremetal_ansible", "snmp", "sshd", "swift_proxy", "swift_ringbuilder", "swift_storage", "chrony", "timezone", "logrotate_tmpwatch", "tripleo_firewall", "tripleo_packages", "tuned"], "control_virtual_ip": "192.168.122.99", "enabled_networks": ["Storage", "StorageMgmt", "InternalApi", "Tenant", "External"], "net_vip_map": {"ctlplane": "192.168.122.99", "ctlplane_subnet": "192.168.122.99/24", "ctlplane_uri": "192.168.122.99", "storage": "172.18.0.2", "storage_subnet": "", "storage_uri": "172.18.0.2", "storage_mgmt": "172.20.0.2", "storage_mgmt_subnet": "", "storage_mgmt_uri": "172.20.0.2", "internal_api": "172.17.0.2", "internal_api_subnet": "", "internal_api_uri": "172.17.0.2", "tenant": "", "tenant_subnet": "", "tenant_uri": "", "external": "172.21.0.2", "external_subnet": "", "external_uri": "172.21.0.2"}, "nova_additional_cell": false, "hide_sensitive_logs": true, "storage_net_name": "storage", "storage_mgmt_net_name": "storage_mgmt", "internal_api_net_name": "internal_api", "tenant_net_name": "tenant", "external_net_name": "external", "networks": {"Storage": {"name": "storage", "name_lower": "storage"}, "StorageMgmt": {"name": "storage_mgmt", "name_lower": "storage_mgmt"}, "InternalApi": {"name": "internal_api", "name_lower": "internal_api"}, "Tenant": {"name": "tenant", "name_lower": "tenant"}, "External": {"name": "external", "name_lower": "external"}}, "network_virtual_ips": {"ctlplane": {"ip_address": "192.168.122.99", "index": 1}, "storage": {"ip_address": "172.18.0.2", "index": 2}, "storage_mgmt": {"ip_address": "172.20.0.2", "index": 3}, "internal_api": {"ip_address": "172.17.0.2", "index": 4}, "external": {"ip_address": "172.21.0.2", "index": 5}}, "cloud_names": {"cloud_name_storage": "standalone.storage.localdomain", "cloud_name_storage_mgmt": "standalone.storagemgmt.localdomain", "cloud_name_internal_api": "standalone.internalapi.localdomain", "cloud_name_external": "standalone.localdomain", "cloud_name_ctlplane": "standalone.ctlplane.localdomain"}, "enable_internal_tls": false, "cloud_domain": "localdomain", "all_nodes_extra_map_data": {}, "undercloud_hosts_entries": [], "extra_hosts_entries": [], "vip_hosts_entries": [], "keystone_resources": {"aodh": {"endpoints": {"public": "http://172.21.0.2:8042", "internal": "http://172.17.0.2:8042", "admin": "http://172.17.0.2:8042"}, "users": {"aodh": {"password": "k5rAlTmdade0g5L7o2IivnC7F"}}, "region": "regionOne", "service": "alarming"}, "barbican": {"endpoints": {"public": "http://172.21.0.2:9311", "internal": "http://172.17.0.2:9311", "admin": "http://172.17.0.2:9311"}, "users": {"barbican": {"password": "DzUZkaXPZ8Seb1CcQ0gadMSBA"}}, "region": "regionOne", "service": "key-manager", "roles": ["key-manager:service-admin", "creator", "observer", "audit"]}, "ceilometer": {"users": {"ceilometer": {"password": "edHsPrQkulhs2zT31cCjAeJwl", "roles": ["admin", "ResellerAdmin"]}}, "roles": ["ResellerAdmin"]}, "cinder": {"users": {"cinder": {"password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "roles": ["admin", "service"]}}}, "cinderv3": {"endpoints": {"public": "http://172.21.0.2:8776/v3/%(tenant_id)s", "internal": "http://172.17.0.2:8776/v3/%(tenant_id)s", "admin": "http://172.17.0.2:8776/v3/%(tenant_id)s"}, "users": {"cinderv3": {"password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "roles": ["admin", "service"]}}, "region": "regionOne", "service": "volumev3"}, "glance": {"endpoints": {"public": "http://172.21.0.2:9292", "internal": "http://172.17.0.2:9293", "admin": "http://172.17.0.2:9293"}, "users": {"glance": {"password": "waK94ELSUw3fuZtmK4Cw3JGz3"}}, "region": "regionOne", "service": "image"}, "gnocchi": {"endpoints": {"public": "http://172.21.0.2:8041", "internal": "http://172.17.0.2:8041", "admin": "http://172.17.0.2:8041"}, "users": {"gnocchi": {"password": "jy7sWWT6Kq9qlpP1Q34qvcMVW"}}, "region": "regionOne", "service": "metric"}, "heat": {"endpoints": {"public": "http://172.21.0.2:8004/v1/%(tenant_id)s", "internal": "http://172.17.0.2:8004/v1/%(tenant_id)s", "admin": "http://172.17.0.2:8004/v1/%(tenant_id)s"}, "users": {"heat": {"password": "29iel05njt4cB9RHPs4myPWwC"}, "heat_stack_domain_admin": {"password": "LjFSoVOlepc9795Gz5WIDxDtH", "roles": ["admin"], "domain": "heat_stack"}}, "region": "regionOne", "service": "orchestration", "roles": ["heat_stack_user"], "domains": ["heat_stack"]}, "heat-cfn": {"endpoints": {"public": "http://172.21.0.2:8000/v1", "internal": "http://172.17.0.2:8000/v1", "admin": "http://172.17.0.2:8000/v1"}, "users": {"heat-cfn": {"password": "29iel05njt4cB9RHPs4myPWwC"}}, "region": "regionOne", "service": "cloudformation"}, "manila": {"endpoints": {"public": "http://172.21.0.2:8786/v1/%(tenant_id)s", "internal": "http://172.17.0.2:8786/v1/%(tenant_id)s", "admin": "http://172.17.0.2:8786/v1/%(tenant_id)s"}, "users": {"manila": {"password": "G75aaoGj6XCQnuz0NbhM1Jdpz"}}, "region": "regionOne", "service": "share"}, "manilav2": {"endpoints": {"public": "http://172.21.0.2:8786/v2", "internal": "http://172.17.0.2:8786/v2", "admin": "http://172.17.0.2:8786/v2"}, "users": {"manilav2": {"password": "G75aaoGj6XCQnuz0NbhM1Jdpz"}}, "region": "regionOne", "service": "sharev2"}, "neutron": {"endpoints": {"public": "http://172.21.0.2:9696", "internal": "http://172.17.0.2:9696", "admin": "http://172.17.0.2:9696"}, "users": {"neutron": {"password": "KUvpScgcoRXJAuKhHGZjwcCg7"}}, "region": "regionOne", "service": "network"}, "nova": {"endpoints": {"public": "http://172.21.0.2:8774/v2.1", "internal": "http://172.17.0.2:8774/v2.1", "admin": "http://172.17.0.2:8774/v2.1"}, "users": {"nova": {"roles": ["admin", "service"], "password": "G0hcdxsuQmhYtL5CyRnP0gPJ0"}}, "region": "regionOne", "service": "compute"}, "octavia": {"endpoints": {"public": "http://172.21.0.2:9876", "internal": "http://172.17.0.2:9876", "admin": "http://172.17.0.2:9876"}, "project": "service", "users": {"octavia": {"name": "octavia", "password": "n3bAveE2Ecn5BCAKrvsShhUd0", "project": "service"}}, "region": "regionOne", "service": "load-balancer", "roles": ["load-balancer_admin", "load-balancer_quota_admin", "load-balancer_member", "load-balancer_global_observer", "load-balancer_observer"]}, "placement": {"endpoints": {"public": "http://172.21.0.2:8778/placement", "internal": "http://172.17.0.2:8778/placement", "admin": "http://172.17.0.2:8778/placement"}, "users": {"placement": {"password": "VkmxbDV7nnIeFpoTiurMJ3pM7"}}, "region": "regionOne", "service": "placement"}, "swift": {"endpoints": {"public": "http://172.21.0.2:8080/v1/AUTH_%(tenant_id)s", "internal": "http://172.18.0.2:8080/v1/AUTH_%(tenant_id)s", "admin": "http://172.18.0.2:8080"}, "users": {"swift": {"password": "QWNSzqJlJEfuEYyX2NWMw1iH0"}}, "region": "regionOne", "service": "object-store", "roles": ["swiftoperator", "ResellerAdmin"]}}, "net_cidr_map": {"ctlplane": ["192.168.122.0/24"], "storage": ["172.18.0.0/24"], "storage_mgmt": ["172.20.0.0/24"], "internal_api": ["172.17.0.0/24"], "tenant": ["172.19.0.0/24"], "external": ["172.21.0.0/24"]}}, "common_deploy_steps_playbooks": "---\n# If a new play with potential facts gathering is added, make sure we set:\n# any_errors_fatal: false\n# ignore_unreachable: true\n# So we don't break the MaxFailPercentage feature since these plays can't use\n# Ansible strategies.\n\n- hosts: localhost\n  name: Check if required variables are defined\n  tasks:\n    - ansible.builtin.fail:\n        msg: deploy_source_host variable is not defined\n      when: deploy_source_host is not defined\n    - ansible.builtin.fail:\n        msg: deploy_target_host variable is not defined\n      when: deploy_target_host is not defined\n    # Keep in mind that you will still need to use defaults in order to be\n    # able to pass Ansible own syntax check for blocks like 'hosts'.\n\n- hosts: all\n  name: Clear cached facts\n  # We don't want to gather facts, just clear them\n  gather_facts: false\n  tasks:\n    - ansible.builtin.meta: clear_facts\n  tags:\n    - facts\n\n- hosts: \"{{ deploy_source_host | default([]) }}:{{ deploy_target_host | default([]) }}\"\n  name: Gather facts\n  strategy: tripleo_free\n  gather_facts: true\n  tasks:\n    - name: Set legacy facts\n      ansible.builtin.set_fact:\n        ansible_distribution: \"{{ ansible_facts['distribution'] }}\"\n        ansible_distribution_major_version: \"{{ ansible_facts['distribution_major_version'] }}\"\n        ansible_distribution_release: \"{{ ansible_facts['distribution_release'] }}\"\n        ansible_distribution_version: \"{{ ansible_facts['distribution_version'] }}\"\n        ansible_os_family: \"{{ ansible_facts['os_family'] }}\"\n  tags:\n    - facts\n\n- hosts: all\n  name: Load global variables\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: false\n  ignore_unreachable: true\n  tasks:\n    - ansible.builtin.include_vars: global_vars.yaml  # noqa: missing-import\n      no_log: true\n  tags:\n    - always\n\n- hosts: all\n  name: Include extra variables from files\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: false\n  ignore_unreachable: true\n  tasks:\n    - name: Include Service VIP vars\n      ansible.builtin.include_vars:\n        file: \"{{ playbook_dir }}/service_vip_vars.yaml\"\n        name: service_vip_vars\n      ignore_errors: yes\n    - name: Include OVN bridge MAC address variables\n      ansible.builtin.include_vars:\n        file: \"{{ playbook_dir }}/ovn_bridge_mac_address_vars.yaml\"\n        name: ovn_bridge_mac_address_vars\n      ignore_errors: yes\n  tags:\n    - always\n\n- hosts: \"{{ deploy_target_host | default([]) }}\"\n  name: Render all_nodes data as group_vars for overcloud\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  # we don't skip errors or ignore unreachable on this one because it's\n  # delegated to localhost. localhost should never be unreachable (tm)\n  any_errors_fatal: True\n  tasks:\n    - name: Render all_nodes data as group_vars for overcloud\n      delegate_to: localhost\n      become: false\n      run_once: true\n      tripleo_all_nodes_data:\n  tags:\n    - facts\n    - always\n\n- hosts: \"{{ deploy_target_host | default([]) }}\"\n  name: Set all_nodes data as group_vars for overcloud\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: false\n  ignore_unreachable: true\n  tasks:\n    - name: Set all_nodes data as group_vars for overcloud\n      ansible.builtin.include_vars: \"{{ playbook_dir }}/group_vars/overcloud.json\"\n      no_log: true\n  tags:\n    - facts\n    - always\n", "common_deploy_steps_tasks": "#####################################################\n# Per step puppet configuration of the baremetal host\n#####################################################\n\n- name: Write the config_step hieradata\n  become: true\n  no_log: True\n  copy:\n    content: \"{{ dict(step=step|int) | to_json }}\"\n    dest: /etc/puppet/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}hieradata/config_step.json\n    force: true\n    mode: '0600'\n  check_mode: no\n  tags:\n    - host_config\n\n- name: Run puppet host configuration for step {{ step }}\n  become: true\n  async: 3600\n  poll: 0\n  when: enable_puppet|bool\n  shell: >-\n    set -o pipefail;\n    puppet apply {{ host_puppet_config_debug | default('') }}\n    --modulepath=/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules\n    --detailed-exitcodes\n    --summarize\n    --color=false\n    {{ ansible_check_mode | bool | ternary('--noop', '') }}\n    {{ ansible_check_mode | bool | ternary('--hiera_config /etc/puppet/check-mode/hiera.yaml', '') }}\n    /var/lib/tripleo-config/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}puppet_step_config.pp\n    2>&1 | logger -s -t puppet-user\n  register: puppet_host_async_result\n  no_log: true\n  tags:\n    - host_config\n  check_mode: no\n\n- name: Wait for puppet host configuration to finish\n  async_status:\n    jid: \"{{ puppet_host_async_result.ansible_job_id }}\"\n  register: puppet_host_outputs\n  until: puppet_host_outputs.finished\n  retries: 360\n  delay: 10\n  failed_when:\n    - (not puppet_host_outputs.finished) or (puppet_host_outputs.rc is defined and puppet_host_outputs.rc not in [0, 2])\n  when:\n    - not (ansible_check_mode | bool)\n    - enable_puppet|bool\n  tags:\n    - host_config\n\n- name: \"Debug output for task: Run puppet host configuration for step {{ step }}\"\n  debug:\n    var: puppet_host_outputs.stdout_lines | default([]) | union(puppet_host_outputs.stderr_lines | default([]))\n  when:\n    - not ansible_check_mode|bool\n    - enable_puppet | bool\n    - puppet_host_outputs.rc is defined\n  changed_when: puppet_host_outputs.rc == 2\n  failed_when: puppet_host_outputs.rc not in [0, 2]\n  tags:\n    - host_config\n\n#######################################\n# Pre-cache facts for puppet containers\n#######################################\n# We don't want the pre-cache tasks to be skipped in dry-run so we force\n# check_mode to \"no\".\n# https://bugzilla.redhat.com/show_bug.cgi?id=1738529\n- name: Pre-cache facts for puppet containers\n  include_role:\n    name: tripleo_puppet_cache\n  tags:\n    - container_config\n    - container_config_tasks\n\n#######################################\n# Generate config via puppet containers\n#######################################\n\n- name: Include container-puppet tasks (generate config) during step 1\n  include_tasks: generate-config-tasks.yaml\n  when: step|int == 1\n  tags:\n    - container_config\n\n#####################################\n# Per step starting of the containers\n#####################################\n\n- name: Per step starting of the containers using tripleo-ansible\n  become: true\n  environment:\n    TRIPLEO_MINOR_UPDATE: '{{ tripleo_minor_update | default(false) }}'\n  block:\n    - name: \"Manage containers for step {{ step }} with tripleo-ansible\"\n      include_role:\n        name: tripleo_container_manage\n      vars:\n        tripleo_container_manage_concurrency: 5\n        tripleo_container_manage_systemd_order: true\n        tripleo_container_manage_cli: \"{{ container_cli }}\"\n        tripleo_container_manage_config: \"/var/lib/tripleo-config/container-startup-config/step_{{ step }}\"\n        tripleo_container_manage_config_id: \"tripleo_step{{ step }}\"\n        tripleo_container_manage_debug: \"{{ enable_debug | bool }}\"\n        tripleo_container_manage_healthcheck_disabled: \"{{ container_healthcheck_disabled | bool }}\"\n        tripleo_container_manage_log_path: \"{{ container_log_stdout_path }}\"\n        tripleo_container_manage_config_patterns: '*.json'\n        tripleo_container_manage_check_puppet_config: true\n        tripleo_container_manage_valid_exit_code: [0]\n      tags:\n        - container_startup_configs\n\n########################################################\n# Bootstrap tasks - run any tasks that have been defined\n########################################################\n\n- name: \"Clean container_puppet_tasks for {{ansible_facts['hostname'] | lower}} step {{step}}\"\n  become: true\n  file:\n    path: /var/lib/container-puppet/container-puppet-tasks{{step}}.json\n    state: absent\n  tags:\n    - container_config_tasks\n\n- name: Calculate container_puppet_tasks for {{ansible_facts['hostname'] | lower}} step {{step}}\n  set_fact:\n    \"{{'host_container_puppet_tasks_' ~ step}}\": \"{{lookup('vars', 'host_container_puppet_tasks_' ~ step, default=[]) | union([item])}}\"\n  loop: \"{{container_puppet_tasks.get('step_' ~ step, [])}}\"\n  when: (groups[item.service_name] | default ([]) | map('extract', hostvars, 'inventory_hostname') | sort | first | lower) == ansible_facts['hostname'] | lower\n  vars:\n    container_puppet_tasks: \"{{ lookup('file', tripleo_role_name + '/container_puppet_tasks.yaml', errors='ignore') | default({}, True) | from_yaml }}\"\n  tags:\n    - container_config_tasks\n\n- name: Include container-puppet tasks for step {{step}}\n  include_tasks: host-container-puppet-tasks.yaml\n  when: ('host_container_puppet_tasks_' ~ step)  is defined\n  tags:\n    - container_config_tasks\n", "common_container_config_scripts": "- name: Create fcontext entry for container-config-scripts\n  community.general.sefcontext:\n    target: \"/var/lib/container-config-scripts(/.*)?\"\n    setype: container_file_t\n    state: present\n  tags:\n    - container_config_scripts\n\n- name: Create /var/lib/container-config-scripts\n  become: true\n  file:\n    path: /var/lib/container-config-scripts\n    state: directory\n    setype: container_file_t\n  tags:\n    - container_config_scripts\n\n- name: Write container config scripts\n  become: true\n  no_log: True\n  tripleo_container_config_scripts:\n    config_data: \"{{ lookup('file', tripleo_role_name + '/container_config_scripts.yaml', errors='ignore') | default({}, True) | from_yaml }}\"\n    config_dir: /var/lib/container-config-scripts\n  tags:\n    - container_config_scripts\n", "hiera_steps_tasks": "- name: Hiera config\n  include_role:\n    name: tripleo_hieradata\n- name: Hiera symlink\n  become: true\n  file:\n    src: /etc/puppet/hiera.yaml\n    dest: /etc/hiera.yaml\n    state: link\n    force: true\n- name: Hieradata from vars\n  include_role:\n    name: tripleo_hieradata\n    tasks_from: hieradata_vars.yaml\n  vars:\n    hieradata_templates_list:\n      - bootstrap_node\n      - all_nodes\n      - vip_data\n      - net_ip_map\n      - cloud_domain\n      - fqdn\n      - service_names\n      - service_configs\n      - extraconfig\n      - role_extraconfig\n      - ovn_chassis_mac_map\n- name: Ensure ansible_managed hieradata file exists\n  include_role:\n    name: tripleo_hieradata\n    tasks_from: ansible_hieradata.yml\n", "deploy_steps_tasks_step_0": "- name: Deploy step tasks for step 0\n  delegate_to: localhost\n  run_once: true\n  debug:\n    msg: Use --start-at-task 'Deploy step tasks for step 0' to resume from this task\n  when: \"tripleo_minor_update is not defined or tripleo_minor_update != 'true'\"\n- name: Ensure /var/log/journal exists\n  become: true\n  file: path=/var/log/journal state=directory mode=0750 owner=root group=root setype=var_log_t\n- name: Check cloud-init status\n  shell: systemctl is-active cloud-init.service || systemctl is-enabled cloud-init.service\n  failed_when: false\n  become: true\n  register: cloud_init_enabled\n- name: Check if cloud-init is disabled via kernel args\n  shell: cat /proc/cmdline | grep -q cloud-init=disabled\n  failed_when: false\n  check_mode: false\n  register: cloud_init_vendor_disabled\n- name: Wait for cloud-init to finish, if enabled\n  community.general.cloud_init_data_facts:\n    filter: status\n  register: res\n  until: >\n    res.cloud_init_data_facts.status.v1.stage is defined and\n    not res.cloud_init_data_facts.status.v1.stage\n  retries: 50\n  delay: 5\n  when:\n    - cloud_init_enabled.rc is defined\n    - cloud_init_enabled.rc == 0\n    - cloud_init_vendor_disabled.rc is not defined or cloud_init_vendor_disabled.rc != 0\n- name: Create /var/lib/container-puppet\n  become: true\n  no_log: True\n  file: path=/var/lib/container-puppet state=directory setype=container_file_t selevel=s0 recurse=true\n- name: Write container-puppet.sh\n  become: true\n  no_log: True\n  copy: src=container_puppet_script.yaml dest=/var/lib/container-puppet/container-puppet.sh force=yes mode=0755 setype=container_file_t\n- include_tasks: \"{{ _task_file_path }}\"\n  vars:\n    _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step0.yaml\"\n  when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"", "common_container_setup_tasks": "- name: Create and ensure setype for /var/log/containers directory\n  become: true\n  file:\n    path: /var/log/containers\n    state: directory\n    setype: container_file_t\n    selevel: s0\n    mode: 0750\n  tags:\n    - host_config\n\n- name: Create ContainerLogStdoutPath directory\n  become: true\n  file:\n    path: \"{{ container_log_stdout_path }}\"\n    state: directory\n    selevel: s0\n  tags:\n    - host_config\n\n- name: Create /var/lib/tripleo-config directory\n  become: true\n  file:\n    path: /var/lib/tripleo-config\n    state: directory\n    setype: container_file_t\n    selevel: s0\n    recurse: true\n  tags:\n    - host_config\n    - container_config\n    - container_config_tasks\n    - container_config_scripts\n    - container_startup_configs\n\n# The container config files\n# /var/lib/container-startup-configs.json is removed as we now write\n# per-step files instead\n- name: Clean old /var/lib/container-startup-configs.json file\n  become: true\n  file:\n    path: /var/lib/container-startup-configs.json\n    state: absent\n  tags:\n    - container_startup_configs\n\n# For legacy, can be removed in Train cycle\n- name: Clean old /var/lib/docker-container-startup-configs.json file\n  become: true\n  file:\n    path: /var/lib/docker-container-startup-configs.json\n    state: absent\n  tags:\n    - container_startup_configs\n\n- import_tasks: common_container_config_scripts.yaml\n\n# This file location is deprecated and the new location is now:\n# /var/lib/tripleo-config/container-startup-config/step_X/<container_name>.json\n# Can be removed in V cycle\n- name: Write /var/lib/tripleo-config/container-startup-config-readme.txt\n  become: true\n  no_log: True\n  copy:\n    content: \"Container startup configs moved to /var/lib/tripleo-config/container-startup-config\"\n    dest: /var/lib/tripleo-config/container-startup-config-readme.txt\n    force: yes\n    mode: '0600'\n  tags:\n    - container_startup_configs\n\n- name: Generate startup configs files per step and per container\n  become: true\n  container_startup_config:\n    config_base_dir: /var/lib/tripleo-config/container-startup-config\n    config_data: \"{{ lookup('template', (tripleo_role_name + '/docker_config.yaml'), errors='ignore') | default({}, True) | from_yaml }}\"\n  tags:\n    - container_startup_configs\n\n- name: Create /var/lib/kolla/config_files directory\n  become: true\n  file:\n    path: /var/lib/kolla/config_files\n    state: directory\n    setype: container_file_t\n    selevel: s0\n    recurse: true\n  tags:\n    - container_startup_configs\n\n- name: Create /var/lib/config-data directory\n  become: true\n  file:\n    path: /var/lib/config-data\n    mode: 0755\n    state: directory\n    setype: container_file_t\n    selevel: s0\n\n- name: Write container config json files\n  become: true\n  tripleo_container_configs:\n    config_data: \"{{ lookup('file', tripleo_role_name + '/kolla_config.yaml', errors='ignore') | default({}, True) | from_yaml }}\"\n  tags:\n    - container_startup_configs\n", "common_deploy_steps_tasks_step_1": "- name: Delete existing /var/lib/tripleo-config/check-mode directory for check mode\n  become: true\n  file:\n    path: /var/lib/tripleo-config/check-mode\n    state: absent\n  tags:\n    - host_config\n    - container_config\n    - container_config_tasks\n    - container_config_scripts\n    - container_startup_configs\n  when:\n    - ansible_check_mode|bool\n  check_mode: no\n\n- name: Create /var/lib/tripleo-config/check-mode directory for check mode\n  become: true\n  file:\n    path: /var/lib/tripleo-config/check-mode\n    state: directory\n    setype: container_file_t\n    selevel: s0\n    recurse: true\n  tags:\n    - host_config\n    - container_config\n    - container_config_tasks\n    - container_config_scripts\n    - container_startup_configs\n  when:\n    - ansible_check_mode|bool\n  check_mode: no\n\n# Puppet manifest for baremetal host configuration\n- name: Write the puppet step_config manifest\n  become: true\n  no_log: True\n  copy:\n    content: \"{{ lookup('file', tripleo_role_name + '/step_config.pp', errors='ignore') | default('', True) }}\"\n    dest: /var/lib/tripleo-config/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}puppet_step_config.pp\n    force: yes\n    mode: '0600'\n  tags:\n    - host_config\n  check_mode: no\n  diff: no\n\n- name: Diff puppet step_config manifest changes for check mode\n  command:\n    diff -uN /var/lib/tripleo-config/puppet_step_config.pp /var/lib/tripleo-config/check-mode/puppet_step_config.pp\n  register: diff_results\n  tags:\n    - host_config\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  failed_when: false\n  changed_when: diff_results.rc == 1\n\n- name: Diff puppet step_config manifest changes for check mode\n  debug:\n    var: diff_results.stdout_lines\n  changed_when: diff_results.rc == 1\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  tags:\n    - host_config\n\n# Puppet Containers Config directory used to generate container configs\n- name: Create /var/lib/container-puppet\n  become: true\n  file:\n    path: /var/lib/container-puppet\n    state: directory\n    setype: container_file_t\n    selevel: s0\n  tags:\n    - container_config\n    - container_config_tasks\n\n- name: Delete existing /var/lib/container-puppet/check-mode for check mode\n  become: true\n  file:\n    path: /var/lib/container-puppet/check-mode\n    state: absent\n  tags:\n    - container_config\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n\n- name: Create /var/lib/container-puppet/check-mode for check mode\n  become: true\n  file:\n    path: /var/lib/container-puppet/check-mode\n    state: directory\n    setype: container_file_t\n    selevel: s0\n  tags:\n    - container_config\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n\n- name: Write container-puppet.json file\n  become: true\n  no_log: True\n  copy:\n    content: \"{{ lookup('template', tripleo_role_name + '/puppet_config.yaml', errors='ignore') | default([], True) | from_yaml | to_nice_json }}\"\n    dest: /var/lib/container-puppet/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}container-puppet.json\n    force: yes\n    mode: '0600'\n  tags:\n    - container_config\n  check_mode: no\n  diff: no\n\n- name: Diff container-puppet.json changes for check mode\n  command:\n    diff -uN /var/lib/container-puppet/container-puppet.json /var/lib/container-puppet/check-mode/container-puppet.json\n  register: diff_results\n  tags:\n    - container_config\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  failed_when: false\n  changed_when: diff_results.rc == 1\n\n- name: Diff container-puppet.json changes for check mode\n  debug:\n    var: diff_results.stdout_lines\n  changed_when: diff_results.rc == 1\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  tags:\n    - container_config\n\n- name: Ensure config hashes are up-to-date for container startup configs\n  become: true\n  container_puppet_config:\n    update_config_hash_only: true\n  tags:\n    - container_startup_configs\n\n- name: Set host puppet debugging fact string\n  set_fact:\n    host_puppet_config_debug: \"--debug --verbose\"\n  when:\n    - enable_puppet | bool\n    - enable_debug | bool\n  tags:\n    - host_config\n\n- name: Check for /etc/puppet/check-mode directory for check mode\n  stat:\n    path: /etc/puppet/check-mode\n  register: check_mode_dir\n  when: ansible_check_mode|bool\n  tags:\n    - host_config\n    - container_config\n\n- name: Create /etc/puppet/check-mode/hieradata directory for check mode\n  become: true\n  file:\n    path: /etc/puppet/check-mode/hieradata\n    state: directory\n    setype: container_file_t\n    selevel: s0\n    recurse: true\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n    - not check_mode_dir.stat.exists\n  tags:\n    - host_config\n    - container_config\n\n- name: Create puppet check-mode files if they don't exist for check mode\n  become: true\n  shell: |\n    cp -a /etc/puppet/hiera.yaml /etc/puppet/check-mode/hiera.yaml\n    cp -a /etc/puppet/hieradata/* /etc/puppet/check-mode/hieradata/\n    sed -i 's/\\/etc\\/puppet\\/hieradata/\\/etc\\/puppet\\/check-mode\\/hieradata/' /etc/puppet/check-mode/hiera.yaml\n  when:\n    - ansible_check_mode|bool\n    - not check_mode_dir.stat.exists\n  check_mode: no\n  tags:\n    - host_config\n    - container_config\n", "container_puppet_script": "#!/bin/bash\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nset -e\n[ \"$DEBUG\" = \"false\" ] || set -x\nrm -rf /etc/puppet\nmkdir -p /etc/puppet\ncp -dR /tmp/puppet-etc/* /etc/puppet\nrm -Rf /etc/puppet/ssl # not in use and causes permission errors\necho \"{\\\"step\\\": $STEP}\" > /etc/puppet/hieradata/docker_puppet.json\nTAGS=\"\"\nif [ -n \"$PUPPET_TAGS\" ]; then\n    TAGS=\"--tags \\\"$PUPPET_TAGS\\\"\"\nfi\n\nif [ ! -z ${STEP_CONFIG+x} ]; then\n    echo -e \"${STEP_CONFIG}\" | tee /etc/config.pp\nfi\n\nCHECK_MODE=\"\"\nif [ -d \"/tmp/puppet-check-mode\" ]; then\n    mkdir -p /etc/puppet/check-mode\n    cp -a /tmp/puppet-check-mode/* /etc/puppet/check-mode\n    CHECK_MODE=\"--hiera_config /etc/puppet/check-mode/hiera.yaml\"\nfi\n\n# Create a reference timestamp to easily find all files touched by\n# puppet. The sync ensures we get all the files we want due to\n# different timestamp.\nconf_data_path=\"/var/lib/config-data/${NAME}\"\norigin_of_time=\"${conf_data_path}.origin_of_time\"\ntouch $origin_of_time\nsync\n\nexport NET_HOST=\"${NET_HOST:-false}\"\nset +e\nif [ \"$NET_HOST\" == \"false\" ]; then\n    export FACTER_hostname=$HOSTNAME\nfi\n# $::deployment_type in puppet-tripleo\nexport FACTER_deployment_type=containers\nexport FACTER_uuid=$(cat /sys/class/dmi/id/product_uuid | tr '[:upper:]' '[:lower:]')\necho 'Running puppet'\n# FIXME(bogdando): stdout may be falling behind of the logged syslog messages\nset -x\n/usr/bin/puppet apply --summarize \\\n                      --detailed-exitcodes \\\n                      --color=false \\\n                      --modulepath=/etc/puppet/modules:/usr/share/openstack-puppet/modules \\\n                      $TAGS \\\n                      $CHECK_MODE \\\n                      /etc/config.pp \\\n                      2>&1 | logger -s -t puppet-user\nrc=${PIPESTATUS[0]}\n[ \"$DEBUG\" = \"false\" ] && set +x\nset -e\nif [ $rc -ne 2 -a $rc -ne 0 ]; then\n    exit $rc\nfi\n\nverbosity=\"\"\n[ \"$DEBUG\" = \"false\" ] || verbosity=\"-v\"\n\n# Disables archiving\nif [ -z \"$NO_ARCHIVE\" ]; then\n    archivedirs=(\"/etc\" \"/root\" \"/opt\" \"/var/www\" \"/var/spool/cron\" \"/var/lib/nova/.ssh\")\n    rsync_srcs=\"\"\n    for d in \"${archivedirs[@]}\"; do\n        if [ -d \"$d\" ]; then\n            rsync_srcs+=\" $d\"\n        fi\n    done\n    # On stack update, if a password was changed in a config file,\n    # some services (e.g. mysql) must change their internal state\n    # (e.g. password in mysql DB) when tripleo_container_manage restarts them;\n    # and they need the old password to achieve that.\n    # For those services, we update the config hash to notify\n    # tripleo_container_manage that a restart is needed, but we do not update\n    # the password file in container-puppet if the file already existed\n    # before and let the service regenerate it instead.\n    password_files=\"/root/.my.cnf\"\n\n    exclude_files=\"\"\n    for p in $password_files; do\n        if [ -f \"$p\" -a -f \"${conf_data_path}$p\" ]; then\n            exclude_files+=\" --exclude=$p\"\n        fi\n    done\n\n    # Exclude read-only mounted directories/files which we do not want\n    # to copy or delete.\n    ro_files=\"/etc/puppet/ /etc/puppetlabs/ /opt/puppetlabs/ /etc/pki/ca-trust/extracted \"\n    ro_files+=\"/etc/pki/ca-trust/source/anchors /etc/pki/tls/certs/ca-bundle.crt \"\n    ro_files+=\"/etc/pki/tls/certs/ca-bundle.trust.crt /etc/pki/tls/cert.pem \"\n    ro_files+=\"/etc/hosts /etc/localtime /etc/hostname \"\n    # /etc/openldap is bind mounted with \"ro\" option in keystone containers.\n    ro_files+=\"/etc/openldap\"\n    for ro in $ro_files; do\n        if [ -e \"$ro\" ]; then\n            exclude_files+=\" --exclude=$ro\"\n        fi\n    done\n\n    echo \"Evaluating config files to be removed for the $NAME configuration\"\n    TMPFILE=$(mktemp /tmp/tmp.XXXXXXXXXX)\n    TMPFILE2=$(mktemp /tmp/tmp.XXXXXXXXXX)\n    trap 'rm -rf $TMPFILE $TMPFILE2' EXIT INT HUP\n    rsync -av -R --dry-run --delete-after $exclude_files $rsync_srcs ${conf_data_path} |\\\n        awk '/^deleting/ {print $2}' > $TMPFILE\n\n    echo \"Rsyncing config files from ${rsync_srcs} into ${conf_data_path}\"\n    rsync -a $verbosity -R --delay-updates --delete-after $exclude_files $rsync_srcs ${conf_data_path}\n\n    # Also make a copy of files modified during puppet run\n    echo \"Gathering files modified after $(stat -c '%y' $origin_of_time)\"\n\n    # Purge obsoleted contents to maintain a fresh and filtered mirror\n    puppet_generated_path=/var/lib/config-data/puppet-generated/${NAME}\n    mkdir -p ${puppet_generated_path}\n    echo \"Ensuring the removed config files are also purged in ${puppet_generated_path}:\"\n    cat $TMPFILE | sort\n    cat $TMPFILE | xargs -n1 -r -I{} \\\n        bash -c \"rm -rf ${puppet_generated_path}/{}\"\n    exec 5>&1\n    exec 1>$TMPFILE2\n    find $rsync_srcs -newer $origin_of_time -not -path '/etc/puppet*' -print0\n    exec 1>&5\n    echo \"Files modified during puppet run:\"\n    cat $TMPFILE2 | xargs -0 printf \"%s\\n\" | sort -h\n    echo \"Rsyncing the modified files into ${puppet_generated_path}\"\n    rsync -a $verbosity -R -0 --delay-updates --delete-after $exclude_files \\\n        --files-from=$TMPFILE2 / ${puppet_generated_path}\n\n    # Cleanup any special files that might have been copied into place\n    # previously because fixes for LP#1860607 did not cleanup and required\n    # manual intervention if a container hit this. We can safely remove these\n    # files because they should be bind mounted into containers\n    for ro in $ro_files; do\n        if [ -e \"${puppet_generated_path}/${ro}\" ]; then\n            rm -rf \"${puppet_generated_path}/${ro}\"\n        fi\n    done\n\n    # Write a checksum of the config-data dir, this is used as a\n    # salt to trigger container restart when the config changes\n    # note: while being excluded from the output, password files\n    # are still included in checksum computation\n    additional_checksum_files=\"\"\n    excluded_original_passwords=\"\"\n    for p in $password_files; do\n        if [ -f \"$p\" ]; then\n            additional_checksum_files+=\" $p\"\n            excluded_original_passwords+=\" --exclude=/var/lib/config-data/*${p}\"\n        fi\n    done\n    # We need to exclude the swift rings and backups as those change over time\n    # and containers do not need to restart if they change\n    EXCLUDE=--exclude='*/etc/swift/backups/*'\\ --exclude='*/etc/swift/*.ring.gz'\\ --exclude='*/etc/swift/*.builder'\\ --exclude='*/etc/libvirt/passwd.db'\\ ${excluded_original_passwords}\n\n    # We need to repipe the tar command through 'tar xO' to force text\n    # output because otherwise the sed command cannot work. The sed is\n    # needed because puppet puts timestamps as comments in cron and\n    # parsedfile resources, hence triggering a change at every redeploy\n    tar -c --mtime='1970-01-01' $EXCLUDE -f - ${conf_data_path} $additional_checksum_files | tar xO | \\\n            sed '/^#.*HEADER.*/d; s/\\#.HEADER.*//g' | md5sum | awk '{print $1}' > ${conf_data_path}.md5sum\n    tar -c --mtime='1970-01-01' $EXCLUDE -f - ${puppet_generated_path} $additional_checksum_files --mtime='1970-01-01' | tar xO \\\n            | sed '/^#.*HEADER.*/d; s/\\#.HEADER.*//g' | md5sum | awk '{print $1}' > ${puppet_generated_path}.md5sum\nfi\n", "generate-config-tasks": "- name: Block for container-puppet tasks (generate config) during step {{ step }} with tripleo-ansible\n  become: true\n  tags:\n    - container_config\n  block:\n    - name: Create base directory puppet configs\n      file:\n        path: \"/var/lib/tripleo-config/container-puppet-config\"\n        mode: 0700\n        recurse: true\n        setype: container_file_t\n\n    - name: \"Generate container puppet configs for step {{ step }}\"\n      container_puppet_config:\n        check_mode: '{{ ansible_check_mode | bool | ternary(1, 0) }}'\n        config_vol_prefix: \"/var/lib/config-data{{ ansible_check_mode | bool | ternary('/check-mode', '') }}\"\n        debug: \"{{ docker_puppet_debug | bool }}\"\n        net_host: true\n        no_archive: false\n        puppet_config: \"/var/lib/container-puppet/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}container-puppet.json\"\n        short_hostname: \"{{ ansible_facts['hostname'] | lower }}\"\n        step: \"{{ step }}\"\n\n    - name: \"Manage Puppet containers (generate config) for step {{ step }} with tripleo-ansible\"\n      include_role:\n        name: tripleo_container_manage\n      vars:\n        tripleo_container_manage_concurrency: \"{{ docker_puppet_process_count }}\"\n        tripleo_container_manage_systemd_order: false\n        tripleo_container_manage_systemd_teardown: false\n        tripleo_container_manage_config: \"/var/lib/tripleo-config/container-puppet-config/step_{{ step }}\"\n        tripleo_container_manage_config_patterns: 'container-puppet-*.json'\n        tripleo_container_manage_config_id: \"tripleo_puppet_step{{ step }}\"\n        tripleo_container_manage_debug: \"{{ docker_puppet_debug | bool }}\"\n        # puppet with --detailed-exitcodes will return 0 for success and\n        # no changes and 2 for success and resource changes. Other\n        # numbers are failures\n        tripleo_container_manage_valid_exit_code: [0, 2]\n\n- name: Diff puppet-generated changes for check mode\n  become: true\n  shell: |\n    diff -ruN --no-dereference -q /var/lib/config-data/puppet-generated /var/lib/config-data/check-mode/puppet-generated\n    diff -ruN --no-dereference /var/lib/config-data/puppet-generated /var/lib/config-data/check-mode/puppet-generated\n  register: diff_results\n  tags:\n    - container_config\n  check_mode: no\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  failed_when: false\n  changed_when: diff_results.rc == 1\n\n- name: Diff puppet-generated changes for check mode\n  debug:\n    var: diff_results.stdout_lines\n  changed_when: diff_results.rc == 1\n  when:\n    - ansible_check_mode|bool\n    - ansible_diff_mode\n  tags:\n    - container_config\n", "host-container-puppet-tasks": "- name: Write container-puppet-tasks json file for {{ansible_facts['hostname'] | lower}} step {{step}}\n  no_log: True\n  copy:\n    content: \"{{lookup ('vars', 'host_container_puppet_tasks_' ~ step, default=[]) | to_nice_json}}\"\n    dest: \"/var/lib/container-puppet/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}container-puppet-tasks{{step}}.json\"\n    force: yes\n    mode: '0600'\n  check_mode: no\n  tags:\n    - container_config_tasks\n\n- name: Block for container-puppet tasks (bootstrap tasks) for step {{ step }} with tripleo-ansible\n  tags:\n    - container_config_tasks\n  block:\n    - name: \"Generate container puppet configs for step {{ step }}\"\n      container_puppet_config:\n        check_mode: '{{ ansible_check_mode | bool | ternary(1, 0) }}'\n        config_vol_prefix: \"/var/lib/config-data{{ ansible_check_mode | bool | ternary('/check-mode', '') }}\"\n        debug: \"{{ docker_puppet_debug | bool }}\"\n        net_host: true\n        no_archive: true\n        puppet_config: \"/var/lib/container-puppet/{{ ansible_check_mode | bool | ternary('check-mode/', '') }}container-puppet-tasks{{ step }}.json\"\n        short_hostname: \"{{ ansible_facts['hostname'] | lower }}\"\n        step: \"{{ step }}\"\n\n    - name: \"Manage Puppet containers (bootstrap tasks) for step {{ step }} with tripleo-ansible\"\n      include_role:\n        name: tripleo_container_manage\n      vars:\n        tripleo_container_manage_concurrency: \"{{ docker_puppet_process_count }}\"\n        tripleo_container_manage_systemd_order: false\n        tripleo_container_manage_systemd_teardown: false\n        tripleo_container_manage_config: \"/var/lib/tripleo-config/container-puppet-config/step_{{ step }}\"\n        tripleo_container_manage_config_patterns: 'container-puppet-*.json'\n        tripleo_container_manage_config_id: \"tripleo_puppet_step{{ step }}\"\n        tripleo_container_manage_debug: \"{{ docker_puppet_debug | bool }}\"\n        # puppet with --detailed-exitcodes will return 0 for success and\n        # no changes and 2 for success and resource changes. Other\n        # numbers are failures\n        tripleo_container_manage_valid_exit_code: [0, 2]\n", "deploy_steps_0_playbook": "- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 0\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    step: 0\n    enable_debug: False\n  tasks:\n    - name: External deployment step 0\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 0' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step0.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step0.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step0\n\n- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n", "deploy_steps_selinux_playbook": "- hosts: standalone\n  strategy: tripleo_linear\n  name: Manage SELinux\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n    - name: Set selinux state\n      become: true\n      selinux:\n        policy: targeted\n        state: enforcing\n\n- hosts: all\n  strategy: tripleo_linear\n  name: Generate /etc/hosts\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n\n    - name: Configure Hosts Entries\n      include_role:\n        name: tripleo_hosts_entries\n      vars:\n        tripleo_hosts_entries_undercloud_hosts_entries: \"{{ undercloud_hosts_entries }}\"\n        tripleo_hosts_entries_extra_hosts_entries: \"{{ extra_hosts_entries }}\"\n        tripleo_hosts_entries_vip_hosts_entries: \"{{ vip_hosts_entries }}\"\n", "deploy_steps_common_roles_playbook": "- hosts: standalone\n  strategy: tripleo_linear\n  name: Common roles for TripleO servers\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  # pre_tasks run before any roles in a play, so we use it for the\n  # named debug task for --start-at-task.\n  pre_tasks:\n    - name: Common roles for TripleO servers\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Common roles for TripleO servers' to resume from this task\n  tasks:\n    - include_role:\n        name: tripleo_bootstrap\n    - include_role:\n        name: tripleo_ssh_known_hosts\n  tags:\n    - common_roles\n", "deploy_steps_0_tasks_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for step 0\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: 0\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: deploy_steps_tasks_step_0.yaml\n  tags:\n    - overcloud\n    - deploy_steps\n    - step0\n", "deploy_steps_pre_network_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Server pre network steps\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    deploy_source_host: \"Undercloud\"\n  tasks:\n\n    - name: Server pre-network deployments\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Server pre-network deployments' to resume from this task\n    - import_tasks: hiera_steps_tasks.yaml\n    - include_tasks: deployments.yaml\n      vars:\n        force: false\n      with_items: \"{{ hostvars[inventory_hostname]['pre_network_' ~ tripleo_role_name]|default([]) }}\"\n\n  tags:\n    - overcloud\n    - pre_deploy_steps\n", "deploy_steps_network_deployments_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Server network deployments\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n\n    - name: Network Configuration\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Network Configuration' to resume from this task\n    - name: Check NetworkConfig script existence\n      delegate_to: localhost\n      stat:\n        path: \"{{ tripleo_role_name ~ '/NetworkConfig' }}\"\n      register: NetworkConfig_stat\n      when: not tripleo_network_config_with_ansible\n    - name: Run Network Config\n      import_role:\n        name: tripleo_network_config\n      vars:\n        tripleo_network_config_script_path: \"{{ NetworkConfig_stat.stat.path }}\"\n        tripleo_network_config_update: \"{{ network_config_update }}\"\n        tripleo_network_config_nmstate: \"{{ use_nmstate }}\"\n        tripleo_network_config_purge: \"{{ ifcfg_purge }}\"\n        tripleo_network_config_async_timeout: \"{{ async_timeout | default(300) }}\"\n        tripleo_network_config_async_poll: \"{{ async_poll | default(3) }}\"\n        tripleo_network_config_hide_sensitive_logs: false\n        tripleo_network_config_legacy_script: false\n        tripleo_network_config_safe_defaults: \"{{ network_safe_defaults }}|bool\"\n      when:\n        - tripleo_network_config_with_ansible or NetworkConfig_stat.stat.exists\n  tags:\n    - overcloud\n    - pre_deploy_steps\n    - network_deploy_steps\n", "deploy_steps_network_validation_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Server network validation\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n\n    - name: Basic Network Validation\n      include_role:\n        name: tripleo_nodes_validation\n      vars:\n        tripleo_nodes_validation_validate_controllers_icmp: \"{{ validate_controllers_icmp }}\"\n        tripleo_nodes_validation_validate_gateway_icmp: \"{{ validate_gateways_icmp }}\"\n        tripleo_nodes_validation_validate_fqdn: \"{{ validate_fqdn }}\"\n        tripleo_nodes_validation_ping_test_ips: \"{{ ping_test_ips.get(tripleo_role_name, '').split() | list | unique }}\"\n        tripleo_nodes_validation_ping_test_gateway_ips: \"{{ ping_test_gateway_ips.get(tripleo_role_name, []) }}\"\n  tags:\n    - overcloud\n    - pre_deploy_steps\n    - network_deploy_steps\n", "deploy_steps_pre_deployment_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Server pre deployment steps\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n    - name: Server pre deployments\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Server pre deployments' to resume from this task\n\n    - import_tasks: hiera_steps_tasks.yaml\n    - include_tasks: deployments.yaml\n      vars:\n        force: false\n      with_items: \"{{ hostvars[inventory_hostname]['pre_deployments_' ~ tripleo_role_name]|default([]) }}\"\n\n  tags:\n    - overcloud\n    - pre_deploy_steps\n", "deploy_steps_host_prep_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Host prep steps\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n\n    - name: Host prep steps\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Host prep steps' to resume from this task\n    - name: Deploy Artifacts\n      tripleo_push_artifacts:\n        artifact_urls: \"{{ deploy_artifact_urls | default([]) }}\"\n        artifact_paths: \"{{ deploy_artifact_files | default([]) }}\"\n      when:\n        - ((deploy_artifact_urls | default([]) | length) > 0) or\n          ((deploy_artifact_files | default([]) | length) > 0)\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/host_prep_tasks.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n  tags:\n    - overcloud\n    - host_prep_steps\n", "deploy_steps_container_setup_tasks_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Overcloud container setup tasks\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Overcloud container setup tasks\n      block:\n        - name: Overcloud container setup tasks\n          delegate_to: localhost\n          run_once: true\n          debug:\n            msg: Use --start-at-task 'Overcloud container setup tasks' to resume from this task\n        - name: Write config data\n          include_tasks: common_container_setup_tasks.yaml\n          when:\n            - (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none)\n  tags:\n    - overcloud\n    - container_setup_tasks\n", "deploy_steps_pre_deployment_tasks_playbook": "- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Pre Deployment Step Tasks\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n\n    - name: Pre Deployment Step Tasks\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Pre Deployment Step Tasks' to resume from this task\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/pre_deploy_step_tasks.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n  tags:\n    - overcloud\n    - pre_deploy_steps_tasks\n", "deploy_steps_external_deployment_playbook": "- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '1'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment step 1\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 1' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step1.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step1.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step1\n\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for 1\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '1'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Deploy step tasks for 1\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Deploy step tasks for 1' to resume from this task\n    - name: Write the config_step hieradata for the deploy step 1 tasks\n\n      copy:\n        content: \"{{ dict(step=step | int) | to_json }}\"\n        dest: /etc/puppet/hieradata/config_step.json\n        force: true\n        mode: '0600'\n\n\n    - name: Overcloud common bootstrap tasks for step 1\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_1 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_1\"\n          register: container_startup_configs_json_stat\n        - name: Write config data at the start of step 1\n          include_tasks: common_deploy_steps_tasks_step_1.yaml\n          when:\n            - ((deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n              not container_startup_configs_json_stat.stat.exists)\n\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - name: Overcloud common deploy step tasks 1\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_1 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_1\"\n          register: container_startup_configs_json_stat\n        - include_tasks: common_deploy_steps_tasks.yaml\n          when: (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n                (container_startup_configs_json_stat is defined and not container_startup_configs_json_stat.stat.exists)\n  tags:\n    - overcloud\n    - deploy_steps\n    - step1\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 2\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '2'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment step 2\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 2' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step2.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step2.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step2\n\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for 2\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '2'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Deploy step tasks for 2\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Deploy step tasks for 2' to resume from this task\n    - name: Write the config_step hieradata for the deploy step 2 tasks\n\n      copy:\n        content: \"{{ dict(step=step | int) | to_json }}\"\n        dest: /etc/puppet/hieradata/config_step.json\n        force: true\n        mode: '0600'\n\n\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - name: Overcloud common deploy step tasks 2\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_2 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_2\"\n          register: container_startup_configs_json_stat\n        - include_tasks: common_deploy_steps_tasks.yaml\n          when: (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n                (container_startup_configs_json_stat is defined and not container_startup_configs_json_stat.stat.exists)\n  tags:\n    - overcloud\n    - deploy_steps\n    - step2\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 3\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '3'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment step 3\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 3' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step3.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step3.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step3\n\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for 3\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '3'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Deploy step tasks for 3\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Deploy step tasks for 3' to resume from this task\n    - name: Write the config_step hieradata for the deploy step 3 tasks\n\n      copy:\n        content: \"{{ dict(step=step | int) | to_json }}\"\n        dest: /etc/puppet/hieradata/config_step.json\n        force: true\n        mode: '0600'\n\n\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - name: Overcloud common deploy step tasks 3\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_3 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_3\"\n          register: container_startup_configs_json_stat\n        - include_tasks: common_deploy_steps_tasks.yaml\n          when: (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n                (container_startup_configs_json_stat is defined and not container_startup_configs_json_stat.stat.exists)\n  tags:\n    - overcloud\n    - deploy_steps\n    - step3\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 4\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '4'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment step 4\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 4' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step4.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step4.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step4\n\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for 4\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '4'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Deploy step tasks for 4\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Deploy step tasks for 4' to resume from this task\n    - name: Write the config_step hieradata for the deploy step 4 tasks\n\n      copy:\n        content: \"{{ dict(step=step | int) | to_json }}\"\n        dest: /etc/puppet/hieradata/config_step.json\n        force: true\n        mode: '0600'\n\n\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - name: Overcloud common deploy step tasks 4\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_4 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_4\"\n          register: container_startup_configs_json_stat\n        - include_tasks: common_deploy_steps_tasks.yaml\n          when: (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n                (container_startup_configs_json_stat is defined and not container_startup_configs_json_stat.stat.exists)\n  tags:\n    - overcloud\n    - deploy_steps\n    - step4\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External deployment step 5\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '5'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment step 5\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment step 5' to resume from this task\n    - include_tasks: \"external_deploy_steps_tasks_step5.yaml\"\n      when:\n        - playbook_dir ~ '/external_deploy_steps_tasks_step5.yaml' is exists\n  tags:\n    - external\n    - external_deploy_steps\n    - step5\n\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Deploy step tasks for 5\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '5'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: Deploy step tasks for 5\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Deploy step tasks for 5' to resume from this task\n    - name: Write the config_step hieradata for the deploy step 5 tasks\n\n      copy:\n        content: \"{{ dict(step=step | int) | to_json }}\"\n        dest: /etc/puppet/hieradata/config_step.json\n        force: true\n        mode: '0600'\n\n\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/deploy_steps_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - name: Overcloud common deploy step tasks 5\n      block:\n        - name: \"Check if /var/lib/tripleo-config/container-startup-config/step_5 already exists\"\n          stat:\n            path: \"/var/lib/tripleo-config/container-startup-config/step_5\"\n          register: container_startup_configs_json_stat\n        - include_tasks: common_deploy_steps_tasks.yaml\n          when: (deploy_identifier is defined and deploy_identifier != \"\" and deploy_identifier is not none) or\n                (container_startup_configs_json_stat is defined and not container_startup_configs_json_stat.stat.exists)\n  tags:\n    - overcloud\n    - deploy_steps\n    - step5\n", "deploy_steps_post_deployment_playbook": "\n- hosts: Standalone:standalone\n  strategy: tripleo_free\n  name: Server Post Deployments\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n    - name: Server Post Deployments\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'Server Post Deployments' to resume from this task\n\n    - include_tasks: deployments.yaml\n      vars:\n        force: false\n      with_items: \"{{ hostvars[inventory_hostname]['post_deployments_' ~ tripleo_role_name]|default([]) }}\"\n  tags:\n    - overcloud\n    - post_deploy_steps\n", "deploy_steps_post_deploy_tasks_playbook": "- hosts: Undercloud\n  strategy: tripleo_linear\n  name: External deployment Post Deploy tasks\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - name: External deployment Post Deploy tasks\n      delegate_to: localhost\n      run_once: true\n      debug:\n        msg: Use --start-at-task 'External deployment Post Deploy tasks' to resume from this task\n    - import_tasks: external_post_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - external_post_deploy_steps\n", "deploy_steps_playbook": "- import_playbook: deploy_steps_0_playbook.yaml\n- import_playbook: deploy_steps_selinux_playbook.yaml\n- import_playbook: deploy_steps_common_roles_playbook.yaml\n- import_playbook: deploy_steps_0_tasks_playbook.yaml\n- import_playbook: deploy_steps_pre_network_playbook.yaml\n- import_playbook: deploy_steps_network_deployments_playbook.yaml\n- import_playbook: deploy_steps_network_validation_playbook.yaml\n- import_playbook: deploy_steps_pre_deployment_playbook.yaml\n- import_playbook: deploy_steps_host_prep_playbook.yaml\n- import_playbook: deploy_steps_container_setup_tasks_playbook.yaml\n- import_playbook: deploy_steps_pre_deployment_tasks_playbook.yaml\n- import_playbook: deploy_steps_external_deployment_playbook.yaml\n- import_playbook: deploy_steps_post_deployment_playbook.yaml\n- import_playbook: deploy_steps_post_deploy_tasks_playbook.yaml\n", "external_deploy_steps_tasks": [{"name": "ceph_base_external_deploy_task", "when": "step|int == 2", "block": [{"name": "create cephadm working directory and related files", "include_role": {"name": "tripleo_run_cephadm", "tasks_from": "prepare.yml"}, "vars": {"ceph_pools": {"gnocchi_pool": {"name": "metrics", "enabled": false}, "nova_pool": {"name": "vms", "enabled": true}, "glance_pool": {"name": "images", "enabled": {"or": [false, {"equals": ["rbd", "rbd"]}]}}, "cinder_pool": {"name": "volumes", "enabled": true, "cinder_extra_pools": []}, "cinder_backup_pool": {"name": "backups", "enabled": true}, "extra_pools": []}, "manila_pools": {"data": "manila_data", "metadata": "manila_metadata"}, "ceph_keys": {"openstack_client": {"name": "openstack", "key": "AQBa4nxpAAAAABAAYaFs37pYmrkQAXDsJ4KtiQ=="}, "manila": {"name": "manila", "key": "AQBa4nxpAAAAABAAgI00QCGDHcpcbAgPYWD9VA=="}, "radosgw": {"name": "radosgw", "key": "AQBa4nxpAAAAABAAa/3QJoRFuHaqI2sOxjq/WQ=="}, "extra_keys": []}, "ceph_config_overrides": {}, "tripleo_run_cephadm_spec_path": "{{ playbook_dir }}/cephadm/ceph_spec.yaml", "tripleo_cephadm_dynamic_spec": false, "ceph_spec_fqdn": true, "ceph_osd_spec": {"data_devices": {"all": true}}, "ceph_default_overrides": {"global": {}}, "cephadm_extra_vars": {"tripleo_cephadm_fsid": "56be444b-9558-5ccf-98dd-f9b25b713f89", "tripleo_cephadm_cluster": "ceph", "tripleo_cephadm_container_cli": "podman", "tripleo_ceph_client_vars": "/root/overcloud-deploy/overcloud/ceph_client.yml", "tripleo_cephadm_dashboard_enabled": false, "cephfs": "cephfs", "tripleo_cephadm_container_ns": "registry.redhat.io", "tripleo_cephadm_container_image": "rhceph/rhceph-7-rhel9", "tripleo_cephadm_container_tag": "latest", "tripleo_cephadm_crush_rules": [], "tripleo_cephadm_debug": false, "tripleo_cephadm_verbose": false, "tripleo_cephadm_rbd_trash": "15", "tripleo_cephadm_enable_trash_scheduler": false, "tripleo_cephadm_apply_ceph_conf_overrides_on_update": true, "tripleo_cephadm_default_container": false, "ceph_container_registry_auth": false, "ceph_container_registry_username": "", "ceph_container_registry_password": "", "public_network": "172.18.0.0/24", "cluster_network": "172.20.0.0/24"}, "tripleo_cephadm_deployed_ceph": true}}, {"name": "Prepare cephadm user and keys", "include_role": {"name": "tripleo_run_cephadm", "tasks_from": "enable_ceph_admin_user.yml"}, "when": ["not external_ceph", "(not deployed_ceph and (groups['ceph_mon'] | default([]) | length > 0 or groups['ceph_nfs'] | default([]) | length > 0)) or (deployed_ceph and ((groups['ceph_rgw'] | default([]) != groups['ceph_mon'] | default([]) and groups['ceph_rgw'] | default([]) | length > 0) or (groups['ceph_mds'] | default([]) != groups['ceph_mon'] | default([]) and groups['ceph_mds'] | default([]) | length > 0) or (groups['ceph_nfs'] | default([]) != groups['ceph_mon'] | default([]) and groups['ceph_nfs'] | default([]) | length > 0) or (groups['ceph_rbdmirror'] | default([]) != groups['ceph_mon'] | default([]) and groups['ceph_rbdmirror'] | default([]) | length > 0)))"], "vars": {"deployed_ceph": true, "external_ceph": false}}, {"name": "Deploy or configure the cephadm Ceph cluster", "include_role": {"name": "tripleo_run_cephadm"}, "when": ["not external_ceph", "groups['ceph_mon'] | default([]) | length > 0 or groups['ceph_nfs'] | default([]) | length > 0"], "vars": {"external_ceph": false}}]}, {"name": "ceph_base_external_deploy_task", "when": ["(step | int) == 3", false, "not external_ceph"], "block": [{"name": "Pause cephadm", "include_role": {"name": "tripleo_run_cephadm", "tasks_from": "disable_cephadm.yml"}}], "vars": {"external_ceph": false}}, {"name": "ceph_base_external_deploy_init", "when": "step|int == 1", "block": [{"name": "Set some tripleo-ansible facts", "set_fact": {"ceph_external_multi_config": []}}]}, {"name": "Configure Ceph Clients", "when": "step|int == 2", "block": [{"name": "Check if the input variable file exists", "stat": {"path": "{{ tripleo_ceph_client_vars }}"}, "register": "ceph_input_vars", "vars": {"tripleo_ceph_client_vars": "/root/overcloud-deploy/overcloud/ceph_client.yml"}}, {"name": "Populate CephClientConfigVars from THT", "copy": {"dest": "{{ tripleo_ceph_client_vars }}", "content": "tripleo_ceph_client_fsid: \"{{ tripleo_ceph_client_fsid }}\"\nexternal_cluster_mon_ips: \"{{ external_cluster_mon_ips }}\"\n"}, "when": ["ceph_input_vars.stat.exists == False", "external_cluster_mon_ips | length > 0"], "vars": {"tripleo_ceph_client_vars": "/root/overcloud-deploy/overcloud/ceph_client.yml", "tripleo_ceph_client_fsid": "56be444b-9558-5ccf-98dd-f9b25b713f89", "external_cluster_mon_ips": ""}}, {"name": "configure ceph clients", "include_role": {"name": "tripleo_ceph_client"}, "vars": {"tripleo_ceph_client_config_home": "/var/lib/tripleo-config/ceph", "tripleo_ceph_client_vars": "/root/overcloud-deploy/overcloud/ceph_client.yml"}}, {"include_role": {"name": "tripleo_ceph_client"}, "name": "tripleo client role", "vars": {"tripleo_ceph_client_config_home": "/var/lib/tripleo-config/ceph", "multiple": "{{ item }}"}, "loop": "{{ ceph_external_multi_config }}", "when": ["ceph_external_multi_config is defined"]}, {"name": "Load variables for standalone ganesha", "include_vars": "{{ playbook_dir }}/cephadm/cephadm-extra-vars-heat.yml", "when": ["groups['ceph_mon'] | default([]) | length == 0", "groups['ceph_nfs'] | default([]) | length > 0"]}, {"name": "Config Standalone Ganesha", "include_role": {"name": "tripleo_cephadm", "tasks_from": "nfs"}, "when": ["groups['ceph_mon'] | default([]) | length == 0", "groups['ceph_nfs'] | default([]) | length > 0"], "vars": {"tripleo_cephadm_config_home": "/var/lib/tripleo-config/ceph"}}]}, {"name": "ceph_osd_external_deploy_init", "when": "step|int == 1", "block": [{"name": "Build disk list for cephadm", "set_fact": {"cephadm_disk_list": {"devices": [], "osd_scenario": "lvm", "osd_objectstore": "bluestore"}}}]}, {"name": "Clean up legacy Cinder keystone catalog entries", "become": true, "openstack.cloud.catalog_service": {"cloud": "standalone", "name": "{{ item.service_name }}", "service_type": "{{ item.service_type }}", "state": "absent"}, "loop": [{"service_name": "cinderv2", "service_type": "volumev2"}, {"service_name": "cinderv3", "service_type": "volume"}], "loop_control": {"index_var": "cinder_api_service"}, "when": ["step|int == 4", "not ansible_check_mode|bool"]}, {"name": "Manage Cinder's default volume type", "become": true, "vars": {"default_volume_type": "tripleo"}, "environment": {"OS_CLOUD": "standalone"}, "when": ["step|int == 5", "not ansible_check_mode|bool"], "shell": "if ! openstack volume type show \"{{ default_volume_type }}\"; then\n    openstack volume type create --public \"{{ default_volume_type }}\"\nfi\neval $(openstack volume type show __DEFAULT__ -f shell -c id -c description)\nif [ -n \"$id\" ]; then\n    if ! openstack volume type delete $id ; then\n        tripleo_descr=\"For internal use, '{{ default_volume_type }}' is the default volume type\"\n        if [ \"$description\" != \"$tripleo_descr\" ]; then\n            openstack volume type set $id --description \"$tripleo_descr\"\n        fi\n    fi\nfi\n", "args": {"executable": "/bin/bash"}, "changed_when": false}, {"name": "Run tripleo-container-image-prepare role", "import_role": {"name": "tripleo_container_image_prepare"}, "vars": {"tripleo_container_image_prepare_log_file": "/var/log/tripleo-container-image-prepare.log", "tripleo_container_image_prepare_debug": true, "tripleo_container_image_prepare_roles": [{"name": "Standalone", "description": "A standalone role that a minimal set of services. This can be used for\ntesting in a single node configuration with the\n'openstack tripleo deploy --standalone' command or via an Undercloud using\n'openstack overcloud deploy'.\n", "CountDefault": 1, "tags": ["primary", "controller", "standalone"], "default_route_networks": [], "networks": {"External": {"subnet": "external_subnet"}, "InternalApi": {"subnet": "internal_api_subnet"}, "Storage": {"subnet": "storage_subnet"}, "StorageMgmt": {"subnet": "storage_mgmt_subnet"}, "StorageNFS": {"subnet": "storage_nfs_subnet"}, "Tenant": {"subnet": "tenant_subnet"}}, "RoleParametersDefault": {"OVNCMSOptions": "enable-chassis-as-gw"}, "ServicesDefault": ["OS::TripleO::Services::Aide", "OS::TripleO::Services::AodhApi", "OS::TripleO::Services::AodhEvaluator", "OS::TripleO::Services::AodhListener", "OS::TripleO::Services::AodhNotifier", "OS::TripleO::Services::AuditD", "OS::TripleO::Services::BootParams", "OS::TripleO::Services::BarbicanApi", "OS::TripleO::Services::BarbicanBackendDogtag", "OS::TripleO::Services::BarbicanBackendKmip", "OS::TripleO::Services::BarbicanBackendPkcs11Crypto", "OS::TripleO::Services::BarbicanBackendSimpleCrypto", "OS::TripleO::Services::CACerts", "OS::TripleO::Services::CeilometerAgentCentral", "OS::TripleO::Services::CeilometerAgentNotification", "OS::TripleO::Services::CephClient", "OS::TripleO::Services::CephExternal", "OS::TripleO::Services::CephGrafana", "OS::TripleO::Services::CephMds", "OS::TripleO::Services::CephMgr", "OS::TripleO::Services::CephMon", "OS::TripleO::Services::CephNfs", "OS::TripleO::Services::CephRbdMirror", "OS::TripleO::Services::CephRgw", "OS::TripleO::Services::CephOSD", "OS::TripleO::Services::CinderApi", "OS::TripleO::Services::CinderBackendDellEMCPowerFlex", "OS::TripleO::Services::CinderBackendDellEMCPowermax", "OS::TripleO::Services::CinderBackendDellEMCPowerStore", "OS::TripleO::Services::CinderBackendDellEMCSc", "OS::TripleO::Services::CinderBackendDellEMCUnity", "OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI", "OS::TripleO::Services::CinderBackendDellEMCVNX", "OS::TripleO::Services::CinderBackendDellEMCVxFlexOS", "OS::TripleO::Services::CinderBackendDellEMCXtremio", "OS::TripleO::Services::CinderBackendDellSc", "OS::TripleO::Services::CinderBackendNVMeOF", "OS::TripleO::Services::CinderBackendPure", "OS::TripleO::Services::CinderBackendNetApp", "OS::TripleO::Services::CinderBackendScaleIO", "OS::TripleO::Services::CinderBackup", "OS::TripleO::Services::CinderHPELeftHandISCSI", "OS::TripleO::Services::CinderScheduler", "OS::TripleO::Services::CinderVolume", "OS::TripleO::Services::Clustercheck", "OS::TripleO::Services::Collectd", "OS::TripleO::Services::ComputeCeilometerAgent", "OS::TripleO::Services::CeilometerAgentIpmi", "OS::TripleO::Services::ContainerImagePrepare", "OS::TripleO::Services::ContainersLogrotateCrond", "OS::TripleO::Services::DesignateApi", "OS::TripleO::Services::DesignateCentral", "OS::TripleO::Services::DesignateMDNS", "OS::TripleO::Services::DesignateProducer", "OS::TripleO::Services::DesignateSink", "OS::TripleO::Services::DesignateBind", "OS::TripleO::Services::DesignateWorker", "OS::TripleO::Services::DockerRegistry", "OS::TripleO::Services::Etcd", "OS::TripleO::Services::ExternalSwiftProxy", "OS::TripleO::Services::Frr", "OS::TripleO::Services::GlanceApi", "OS::TripleO::Services::GlanceApiInternal", "OS::TripleO::Services::GnocchiApi", "OS::TripleO::Services::GnocchiMetricd", "OS::TripleO::Services::GnocchiStatsd", "OS::TripleO::Services::HAproxy", "OS::TripleO::Services::HeatApi", "OS::TripleO::Services::HeatApiCfn", "OS::TripleO::Services::HeatApiCloudwatch", "OS::TripleO::Services::HeatEngine", "OS::TripleO::Services::Horizon", "OS::TripleO::Services::IpaClient", "OS::TripleO::Services::Ipsec", "OS::TripleO::Services::IronicApi", "OS::TripleO::Services::IronicConductor", "OS::TripleO::Services::IronicInspector", "OS::TripleO::Services::IronicNeutronAgent", "OS::TripleO::Services::IronicPxe", "OS::TripleO::Services::Iscsid", "OS::TripleO::Services::Kernel", "OS::TripleO::Services::Keystone", "OS::TripleO::Services::LoginDefs", "OS::TripleO::Services::ManilaApi", "OS::TripleO::Services::ManilaBackendCephFs", "OS::TripleO::Services::ManilaBackendIsilon", "OS::TripleO::Services::ManilaBackendNetapp", "OS::TripleO::Services::ManilaBackendPowerMax", "OS::TripleO::Services::ManilaBackendUnity", "OS::TripleO::Services::ManilaBackendVMAX", "OS::TripleO::Services::ManilaBackendVNX", "OS::TripleO::Services::ManilaScheduler", "OS::TripleO::Services::ManilaShare", "OS::TripleO::Services::MasqueradeNetworks", "OS::TripleO::Services::Memcached", "OS::TripleO::Services::MetricsQdr", "OS::TripleO::Services::Multipathd", "OS::TripleO::Services::MySQL", "OS::TripleO::Services::MySQLClient", "OS::TripleO::Services::NeutronApi", "OS::TripleO::Services::NeutronBgpVpnApi", "OS::TripleO::Services::NeutronBgpVpnBagpipe", "OS::TripleO::Services::NeutronCorePlugin", "OS::TripleO::Services::NeutronL2gwAgent", "OS::TripleO::Services::NeutronL2gwApi", "OS::TripleO::Services::NeutronL3Agent", "OS::TripleO::Services::NeutronLinuxbridgeAgent", "OS::TripleO::Services::NeutronMetadataAgent", "OS::TripleO::Services::NeutronOvsAgent", "OS::TripleO::Services::NeutronSfcApi", "OS::TripleO::Services::NeutronSriovAgent", "OS::TripleO::Services::NeutronDhcpAgent", "OS::TripleO::Services::NeutronVppAgent", "OS::TripleO::Services::NovaApi", "OS::TripleO::Services::NovaConductor", "OS::TripleO::Services::NovaIronic", "OS::TripleO::Services::NovaMetadata", "OS::TripleO::Services::NovaScheduler", "OS::TripleO::Services::NovaCompute", "OS::TripleO::Services::NovaLibvirt", "OS::TripleO::Services::NovaMigrationTarget", "OS::TripleO::Services::NovaVncProxy", "OS::TripleO::Services::OVNController", "OS::TripleO::Services::OVNDBs", "OS::TripleO::Services::OVNMetadataAgent", "OS::TripleO::Services::OctaviaApi", "OS::TripleO::Services::OctaviaDeploymentConfig", "OS::TripleO::Services::OctaviaHealthManager", "OS::TripleO::Services::OctaviaHousekeeping", "OS::TripleO::Services::OctaviaWorker", "OS::TripleO::Services::OpenStackClients", "OS::TripleO::Services::OsloMessagingNotify", "OS::TripleO::Services::OsloMessagingRpc", "OS::TripleO::Services::Pacemaker", "OS::TripleO::Services::PlacementApi", "OS::TripleO::Services::Podman", "OS::TripleO::Services::Redis", "OS::TripleO::Services::Rhsm", "OS::TripleO::Services::Rsyslog", "OS::TripleO::Services::RsyslogSidecar", "OS::TripleO::Services::Securetty", "OS::TripleO::Services::Snmp", "OS::TripleO::Services::Sshd", "OS::TripleO::Services::SwiftDispersion", "OS::TripleO::Services::SwiftProxy", "OS::TripleO::Services::SwiftRingBuilder", "OS::TripleO::Services::SwiftStorage", "OS::TripleO::Services::Timesync", "OS::TripleO::Services::Timezone", "OS::TripleO::Services::Tmpwatch", "OS::TripleO::Services::TripleoFirewall", "OS::TripleO::Services::TripleoPackages", "OS::TripleO::Services::Unbound", "OS::TripleO::Services::Tuned", "OS::TripleO::Services::Vpp"]}], "tripleo_container_image_prepare_content": {"parameter_defaults": {"ContainerImagePrepare": [{"set": {"ceph_alertmanager_image": "ose-prometheus-alertmanager", "ceph_alertmanager_namespace": "registry.redhat.io/openshift4", "ceph_alertmanager_tag": "v4.12", "ceph_grafana_image": "rhceph-6-dashboard-rhel9", "ceph_grafana_namespace": "registry.redhat.io/rhceph", "ceph_grafana_tag": "latest", "ceph_image": "rhceph-7-rhel9", "ceph_namespace": "registry.redhat.io/rhceph", "ceph_node_exporter_image": "ose-prometheus-node-exporter", "ceph_node_exporter_namespace": "registry.redhat.io/openshift4", "ceph_node_exporter_tag": "v4.12", "ceph_prometheus_image": "ose-prometheus", "ceph_prometheus_namespace": "registry.redhat.io/openshift4", "ceph_prometheus_tag": "v4.12", "ceph_tag": "latest", "name_prefix": "openstack-", "name_suffix": "", "namespace": "registry.redhat.io/rhosp-rhel9", "neutron_driver": "ovn", "rhel_containers": false, "tag": "17.1"}, "tag_from_label": "{version}-{release}"}], "DockerInsecureRegistryAddress": ["192.168.122.100:8787"], "NeutronMechanismDrivers": ["sriovnicswitch", "ovn"], "DockerRegistryMirror": "", "ContainerImageRegistryCredentials": {}, "AdditionalArchitectures": [], "StandaloneContainerImagePrepare": {}, "StandaloneServices": ["OS::TripleO::Services::AodhApi", "OS::TripleO::Services::AodhEvaluator", "OS::TripleO::Services::AodhListener", "OS::TripleO::Services::AodhNotifier", "OS::TripleO::Services::BootParams", "OS::TripleO::Services::BarbicanApi", "OS::TripleO::Services::BarbicanBackendSimpleCrypto", "OS::TripleO::Services::CACerts", "OS::TripleO::Services::CeilometerAgentCentral", "OS::TripleO::Services::CeilometerAgentNotification", "OS::TripleO::Services::CephClient", "OS::TripleO::Services::CephMds", "OS::TripleO::Services::CephMgr", "OS::TripleO::Services::CephMon", "OS::TripleO::Services::CephOSD", "OS::TripleO::Services::CinderApi", "OS::TripleO::Services::CinderBackup", "OS::TripleO::Services::CinderScheduler", "OS::TripleO::Services::CinderVolume", "OS::TripleO::Services::Clustercheck", "OS::TripleO::Services::ComputeCeilometerAgent", "OS::TripleO::Services::ContainerImagePrepare", "OS::TripleO::Services::ContainersLogrotateCrond", "OS::TripleO::Services::DockerRegistry", "OS::TripleO::Services::GlanceApi", "OS::TripleO::Services::GlanceApiInternal", "OS::TripleO::Services::GnocchiApi", "OS::TripleO::Services::GnocchiMetricd", "OS::TripleO::Services::GnocchiStatsd", "OS::TripleO::Services::HAproxy", "OS::TripleO::Services::HeatApi", "OS::TripleO::Services::HeatApiCfn", "OS::TripleO::Services::HeatEngine", "OS::TripleO::Services::Horizon", "OS::TripleO::Services::Iscsid", "OS::TripleO::Services::Kernel", "OS::TripleO::Services::Keystone", "OS::TripleO::Services::ManilaApi", "OS::TripleO::Services::ManilaBackendCephFs", "OS::TripleO::Services::ManilaScheduler", "OS::TripleO::Services::ManilaShare", "OS::TripleO::Services::Memcached", "OS::TripleO::Services::MySQL", "OS::TripleO::Services::MySQLClient", "OS::TripleO::Services::NeutronApi", "OS::TripleO::Services::NeutronCorePlugin", "OS::TripleO::Services::NeutronSriovAgent", "OS::TripleO::Services::NeutronDhcpAgent", "OS::TripleO::Services::NovaApi", "OS::TripleO::Services::NovaConductor", "OS::TripleO::Services::NovaMetadata", "OS::TripleO::Services::NovaScheduler", "OS::TripleO::Services::NovaCompute", "OS::TripleO::Services::NovaLibvirt", "OS::TripleO::Services::NovaMigrationTarget", "OS::TripleO::Services::NovaVncProxy", "OS::TripleO::Services::OVNController", "OS::TripleO::Services::OVNDBs", "OS::TripleO::Services::OVNMetadataAgent", "OS::TripleO::Services::OctaviaApi", "OS::TripleO::Services::OctaviaDeploymentConfig", "OS::TripleO::Services::OctaviaHealthManager", "OS::TripleO::Services::OctaviaHousekeeping", "OS::TripleO::Services::OctaviaWorker", "OS::TripleO::Services::OpenStackClients", "OS::TripleO::Services::OsloMessagingNotify", "OS::TripleO::Services::OsloMessagingRpc", "OS::TripleO::Services::Pacemaker", "OS::TripleO::Services::PlacementApi", "OS::TripleO::Services::Podman", "OS::TripleO::Services::Redis", "OS::TripleO::Services::Rsyslog", "OS::TripleO::Services::Snmp", "OS::TripleO::Services::Sshd", "OS::TripleO::Services::SwiftProxy", "OS::TripleO::Services::SwiftRingBuilder", "OS::TripleO::Services::SwiftStorage", "OS::TripleO::Services::Timesync", "OS::TripleO::Services::Timezone", "OS::TripleO::Services::Tmpwatch", "OS::TripleO::Services::TripleoFirewall", "OS::TripleO::Services::TripleoPackages", "OS::TripleO::Services::Tuned"], "StandaloneCount": 1}}}, "when": ["(step | int) == 1"]}, {"name": "Manage clouds.yaml files", "when": ["step|int == 1", "not ansible_check_mode|bool"], "block": [{"name": "Create /etc/openstack directory if it does not exist", "become": true, "file": {"mode": "0755", "owner": "root", "path": "/etc/openstack", "state": "directory"}}, {"name": "Configure /etc/openstack/clouds.yaml", "include_role": {"name": "tripleo_keystone_resources", "tasks_from": "clouds"}, "vars": {"tripleo_keystone_resources_cloud_name": "standalone", "tripleo_keystone_resources_cloud_config": {"auth": {"auth_url": "http://172.21.0.2:5000", "password": "zUd9H9Bvu6VmpDBPIzpujf04d", "project_domain_name": "Default", "project_name": "admin", "user_domain_name": "Default", "username": "admin"}, "cacert": "", "identity_api_version": "3", "volume_api_version": "3", "region_name": "regionOne"}}}]}, {"name": "Manage Keystone resources", "become": true, "when": ["step|int == 4", "not ansible_check_mode|bool"], "block": [{"name": "Manage Keystone resources for OpenStack services", "include_role": {"name": "tripleo_keystone_resources"}, "vars": {"tripleo_keystone_resources_catalog_config": "{{ keystone_resources }}", "tripleo_keystone_resources_service_project": "service", "tripleo_keystone_resources_cloud_name": "standalone", "tripleo_keystone_resources_region": "regionOne", "tripleo_keystone_resources_admin_endpoint": "http://192.168.122.99:35357", "tripleo_keystone_resources_public_endpoint": "http://172.21.0.2:5000", "tripleo_keystone_resources_internal_endpoint": "http://172.17.0.2:5000", "tripleo_keystone_resources_admin_password": "zUd9H9Bvu6VmpDBPIzpujf04d", "tripleo_keystone_resources_member_role_enabled": false}}, {"name": "is Keystone LDAP enabled", "set_fact": {"keystone_ldap_domain_enabled": false}}, {"name": "Set fact for tripleo_keystone_ldap_domains", "set_fact": {"tripleo_keystone_ldap_domains": {}}, "when": "keystone_ldap_domain_enabled|bool"}, {"name": "Manage Keystone domains from LDAP config", "when": "keystone_ldap_domain_enabled|bool", "include_role": {"name": "tripleo_keystone_resources", "tasks_from": "domains"}, "vars": {"tripleo_keystone_resources_catalog_config": "{{ keystone_resources }}", "tripleo_keystone_resources_cloud_name": "standalone", "batched_tripleo_keystone_resources_domains": "{{ tripleo_keystone_ldap_domains | list }}"}}]}, {"when": ["step|int == 0"], "name": "ovn_controller_external_deploy_init", "block": [{"name": "create ovn mac address for Standalone role nodes", "tripleo_ovn_mac_addresses": {"playbook_dir": "{{ playbook_dir }}", "stack_name": "standalone", "role_name": "Standalone", "server_resource_names": "{{ groups[\"Standalone\"] }}", "ovn_bridge_mappings": ["datacentre:br-ctlplane"], "ovn_static_bridge_mac_mappings": {"standalone": {"datacentre": "fa:16:3a:00:53:00"}}}}]}, {"when": ["step|int == 0"], "name": "redis_external_deploy_init", "block": [{"name": "create redis virtual ip", "tripleo_service_vip": {"playbook_dir": "{{ playbook_dir }}", "stack_name": "standalone", "service_name": "redis", "network": "internal_api", "fixed_ips": [{"ip_address": "192.168.122.99", "use_neutron": false}]}}]}], "external_post_deploy_steps_tasks": [{"block": [{"name": "is additonal Cell?", "set_fact": {"nova_additional_cell": false}}, {"name": "check if discover hosts is required", "when": ["not nova_additional_cell|bool", "nova_cellv2_discovery_done is not defined"], "block": [{"name": "discover via nova_manager?", "set_fact": {"nova_cellv2_discovery_delegate_host": "{{ groups['nova_manager'][0] }}", "nova_cellv2_discovery_container": "nova_manager"}, "when": ["groups['nova_manager'] is defined and (groups['nova_manager']|length>0)"]}, {"name": "discover via nova_api?", "set_fact": {"nova_cellv2_discovery_delegate_host": "{{ groups['nova_api'][0] }}", "nova_cellv2_discovery_container": "nova_api"}, "when": ["nova_cellv2_discovery_delegate_host is not defined", "groups['nova_api'] is defined and (groups['nova_api']|length>0)"]}, {"name": "Warn if no discovery host available", "fail": {"msg": "No hosts available to run nova cell_v2 host discovery."}, "ignore_errors": true, "when": ["nova_cellv2_discovery_delegate_host is not defined"]}, {"name": "Discovering nova hosts", "command": "{{ container_cli }} exec {{ nova_cellv2_discovery_container }} nova-manage cell_v2 discover_hosts --by-service", "become": true, "changed_when": false, "delegate_to": "{{ nova_cellv2_discovery_delegate_host }}", "when": ["nova_cellv2_discovery_delegate_host is defined"]}, {"set_fact": {"nova_cellv2_discovery_done": true}}]}]}, {"name": "octavia_post_deploy", "block": [{"name": "Set up group_vars", "set_fact": {"octavia_ansible_group_vars": {"os_auth_type": "password", "os_identity_api_version": "3", "amp_image_name": "", "amp_image_filename": "", "amp_image_tag": "amphora-image", "amp_hw_arch": "x86_64", "amp_ssh_key_name": "octavia-ssh-key", "amp_ssh_key_path": "/root/.ssh/id_ecdsa.pub", "amp_ssh_key_dir": "/etc/octavia/ssh", "amp_to_raw": true, "auth_username": "octavia", "auth_password": "n3bAveE2Ecn5BCAKrvsShhUd0", "auth_project_name": "service", "lb_mgmt_net_name": "lb-mgmt-net", "lb_mgmt_subnet_name": "lb-mgmt-subnet", "lb_sec_group_name": "lb-mgmt-subnet", "lb_mgmt_subnet_cidr": "172.24.0.0/16", "lb_mgmt_subnet_gateway": "172.24.0.1", "lb_mgmt_subnet_pool_start": "172.24.0.2", "lb_mgmt_subnet_pool_end": "172.24.255.254", "ca_cert_path": "/etc/octavia/certs/ca_01.pem", "ca_private_key_path": "/etc/octavia/certs/private/cakey.pem", "server_certs_key_passphrase": "6GlvXGy5OvlPnJGR8zrTwiplM4uha9JZ", "ca_passphrase": "ZbJOUh5fMhIOwWHfo9XP1RLin", "client_cert_path": "/etc/octavia/certs/client.pem", "generate_certs": true, "mgmt_port_dev": "o-hm0", "os_password": "zUd9H9Bvu6VmpDBPIzpujf04d", "os_project_name": "admin", "os_username": "admin", "octavia_ansible_playbook": "/usr/share/ansible/tripleo-playbooks/octavia-files.yaml", "os_auth_url": "http://172.21.0.2:5000/v3", "os_int_auth_url": "http://172.17.0.2:5000/", "octavia_local_tmpdir": "{{playbook_dir}}/octavia-ansible/local_dir", "octavia_group_vars_dir": "{{playbook_dir}}/octavia-ansible/group_vars", "container_cli": "podman", "enable_log_offloading": true, "log_offload_protocol": "udp", "octavia_flavor_id": "65", "octavia_flavor_properties": {"ram": "1024", "disk": "3", "vcpus": "1"}, "octavia_manage_nova_flavor": true, "octavia_multivcpu_flavor_properties": {"ram": "4096", "disk": "3", "vcpus": "4"}, "octavia_multivcpu_flavor_id": "amphora-mvcpu-ha", "octavia_admin_log_targets": [], "octavia_tenant_log_targets": []}}, "no_log": "{{ hide_sensitive_logs | bool }}"}, {"name": "Make needed directories on the undercloud", "become": true, "file": {"path": "{{item}}", "state": "directory", "owner": "{{ ansible_user }}"}, "with_items": ["{{playbook_dir}}/octavia-ansible", "{{ octavia_ansible_group_vars.octavia_local_tmpdir }}", "{{ octavia_ansible_group_vars.octavia_group_vars_dir }}"]}, {"name": "Write group_vars file", "become": true, "copy": {"dest": "{{ octavia_ansible_group_vars.octavia_group_vars_dir }}/octavia_vars.yaml", "content": "{{ octavia_ansible_group_vars|to_nice_yaml }}"}, "no_log": "{{ hide_sensitive_logs | bool }}"}, {"name": "Gather missing facts", "delegate_to": "{{item}}", "delegate_facts": true, "loop": "{{ groups['octavia_worker'] }}", "setup": {"gather_subset": ["!all", "min"]}}, {"name": "Write octavia inventory", "become": true, "copy": {"dest": "{{playbook_dir}}/octavia-ansible/inventory.yaml", "content": "octavia_nodes:\n  hosts:\n\n{%- set octavia_groups = ['worker'] -%}\n{%- for octavia_group in octavia_groups -%}\n{%- if 'octavia_' ~ octavia_groups %}\n\n    {% for host in groups['octavia_' ~ octavia_group] -%}\n    {{ hostvars.raw_get(host)['ansible_facts']['hostname'] | lower}}:\n      ansible_user: {{ hostvars.raw_get(host)['ansible_ssh_user'] | default('heat-admin') }}\n      ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) | lower }}\n      canonical_hostname: {{ hostvars.raw_get(host)['canonical_hostname'] | default(host) | lower }}\n      ansible_become: true\n    {% endfor %}\n\n{%- endif -%}\n{%- endfor %}\n\nUndercloud:\n  hosts:\n    {% for host in groups['Undercloud'] -%}\n    {{ hostvars.raw_get(host)['ansible_facts']['hostname'] | lower}}:\n      ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) | lower }}\n      ansible_become: false\n      ansible_connection: local\n\n    {%- endfor -%}\n"}}, {"name": "Check for ssh_private_key in working directory", "become": true, "stat": {"path": "{{ lookup('env', 'ANSIBLE_PRIVATE_KEY_FILE') }}"}, "register": "detect_private_key_file"}, {"name": "Set private key location", "set_fact": {"octavia_ansible_ssh_key": "{{ lookup('env', 'ANSIBLE_PRIVATE_KEY_FILE') }}"}, "when": "octavia_ansible_ssh_key is not defined and detect_private_key_file.stat.exists"}, {"name": "Configure octavia command", "set_fact": {"config_octavia_cmd": "ANSIBLE_CONFIG=\"{{playbook_dir}}/ansible.cfg\" ansible-playbook -i \"{{playbook_dir}}/octavia-ansible/inventory.yaml\" --extra-vars @{{ octavia_ansible_group_vars.octavia_group_vars_dir }}/octavia_vars.yaml {% if octavia_ansible_ssh_key is defined %}--private-key {{octavia_ansible_ssh_key}}{% endif %} {{ octavia_ansible_group_vars.octavia_ansible_playbook }}"}}, {"set_fact": {"octavia_log_dir": "{{playbook_dir}}/octavia-ansible/"}}, {"debug": {"msg": "Configure Octavia command is: {{ config_octavia_cmd }}"}}, {"name": "Configure octavia on overcloud", "become": true, "environment": {"ANSIBLE_HOST_KEY_CHECKING": false, "ANSIBLE_SSH_RETRIES": 3, "ANSIBLE_RETRY_FILES_ENABLED": false, "ANSIBLE_LOCAL_TEMP": "{{ octavia_ansible_group_vars.octavia_local_tmpdir }}", "ANSIBLE_LOG_PATH": "{{ octavia_log_dir }}/octavia-ansible.log"}, "shell": "{{ config_octavia_cmd }}"}, {"name": "Purge temp dirs", "become": true, "file": {"state": "absent", "path": "{{ item }}"}, "with_items": ["{{ octavia_ansible_group_vars.octavia_local_tmpdir }}"]}]}], "pre_deploy_step_tasks": [], "update_steps_playbook": "- hosts: standalone\n  strategy: tripleo_linear\n  name: External update step 0\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: 0\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks:\n        file: external_update_steps_tasks.yaml\n      delegate_to: localhost\n      run_once: true\n  tags:\n    - step0\n    - external\n    - external_update_steps\n- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n- hosts: Standalone\n  name: Run update\n  become: true\n  serial: \"{{ update_serial | default(1)}}\"\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n    tripleo_minor_update: true\n    tripleo_redhat_enforce: true\n    \n  tasks:\n    - import_tasks: hiera_steps_tasks.yaml\n    - import_tasks: common_container_config_scripts.yaml\n    - name: Make sure container configuration is refreshed\n      import_tasks: common_container_setup_tasks.yaml\n    - import_tasks: \"Standalone/update_tasks_step0.yaml\"\n      vars:\n        step: \"0\"\n    - import_tasks: \"Standalone/update_tasks_step1.yaml\"\n      vars:\n        step: \"1\"\n    - import_tasks: \"Standalone/update_tasks_step2.yaml\"\n      vars:\n        step: \"2\"\n    - import_tasks: \"Standalone/update_tasks_step3.yaml\"\n      vars:\n        step: \"3\"\n    - import_tasks: \"Standalone/update_tasks_step4.yaml\"\n      vars:\n        step: \"4\"\n    - import_tasks: \"Standalone/update_tasks_step5.yaml\"\n      vars:\n        step: \"5\"\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/host_prep_tasks.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n\n    - import_tasks: deploy_steps_tasks_step_0.yaml\n      vars:\n        step: 0\n    - name: Write config data at the start of step 1\n      import_tasks: common_deploy_steps_tasks_step_1.yaml\n    - import_tasks: common_deploy_steps_tasks.yaml\n      vars:\n        step: \"1\"\n    - import_tasks: common_deploy_steps_tasks.yaml\n      vars:\n        step: \"2\"\n    - import_tasks: common_deploy_steps_tasks.yaml\n      vars:\n        step: \"3\"\n    - import_tasks: common_deploy_steps_tasks.yaml\n      vars:\n        step: \"4\"\n    - import_tasks: common_deploy_steps_tasks.yaml\n      vars:\n        step: \"5\"\n    - import_tasks: \"Standalone/post_update_tasks_step0.yaml\"\n      vars:\n        step: \"0\"\n    - import_tasks: \"Standalone/post_update_tasks_step1.yaml\"\n      vars:\n        step: \"1\"\n    - import_tasks: \"Standalone/post_update_tasks_step2.yaml\"\n      vars:\n        step: \"2\"\n    - import_tasks: \"Standalone/post_update_tasks_step3.yaml\"\n      vars:\n        step: \"3\"\n", "external_update_steps_tasks": [{"when": "step|int == 1", "block": [{"name": "Online data migration for Cinder", "command": "{{ container_cli }} exec cinder_api cinder-manage db online_data_migrations", "delegate_to": "{{ (groups['cinder_api'] | difference(groups['excluded_overcloud']))[0] }}", "become": true, "tags": ["online_upgrade", "online_upgrade_cinder"]}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get cinder_backup image from pacemaker", "become": true, "register": "xmllint_pcmk_cinder_backup_image", "shell": "xmllint --xpath \"string(//bundle[@id='openstack-cinder-backup']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container cinder_backup image", "set_fact": {"cinder_backup_image": "registry.redhat.io/rhosp-rhel9/openstack-cinder-backup:17.1", "cinder_backup_image_latest": "cluster.common.tag/cinder-backup:pcmklatest", "pcmk_cinder_backup_image": "{{xmllint_pcmk_cinder_backup_image.stdout}}"}}], "delegate_to": "{{ (groups[\"cinder_backup\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "cinder-backup temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"cinder_backup\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "openstack-cinder-backup", "tripleo_ha_image_update_new_image": "{{cinder_backup_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_cinder_backup_image}}"}, "when": ["(pcmk_cinder_backup_image != \"\")", "(pcmk_cinder_backup_image != cinder_backup_image_latest)"]}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get cinder_volume image from pacemaker", "become": true, "register": "xmllint_pcmk_cinder_volume_image", "shell": "xmllint --xpath \"string(//bundle[@id='openstack-cinder-volume']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container cinder_volume image", "set_fact": {"cinder_volume_image": "registry.redhat.io/rhosp-rhel9/openstack-cinder-volume:17.1", "cinder_volume_image_latest": "cluster.common.tag/cinder-volume:pcmklatest", "pcmk_cinder_volume_image": "{{xmllint_pcmk_cinder_volume_image.stdout}}"}}], "delegate_to": "{{ (groups[\"cinder_volume\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "cinder-volume temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"cinder_volume\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "openstack-cinder-volume", "tripleo_ha_image_update_new_image": "{{cinder_volume_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_cinder_volume_image}}"}, "when": ["(pcmk_cinder_volume_image != \"\")", "(pcmk_cinder_volume_image != cinder_volume_image_latest)"]}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get haproxy image from pacemaker", "become": true, "register": "xmllint_pcmk_haproxy_image", "shell": "xmllint --xpath \"string(//bundle[@id='haproxy-bundle']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container haproxy image", "set_fact": {"haproxy_image": "registry.redhat.io/rhosp-rhel9/openstack-haproxy:17.1", "haproxy_image_latest": "cluster.common.tag/haproxy:pcmklatest", "pcmk_haproxy_image": "{{xmllint_pcmk_haproxy_image.stdout}}"}}], "delegate_to": "{{ (groups[\"haproxy\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "haproxy temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"haproxy\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "haproxy-bundle", "tripleo_ha_image_update_new_image": "{{haproxy_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_haproxy_image}}"}, "when": ["(pcmk_haproxy_image != \"\")", "(pcmk_haproxy_image != haproxy_image_latest)"]}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get manila_share image from pacemaker", "become": true, "register": "xmllint_pcmk_manila_share_image", "shell": "xmllint --xpath \"string(//bundle[@id='openstack-manila-share']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container manila_share image", "set_fact": {"manila_share_image": "registry.redhat.io/rhosp-rhel9/openstack-manila-share:17.1", "manila_share_image_latest": "cluster.common.tag/manila-share:pcmklatest", "pcmk_manila_share_image": "{{xmllint_pcmk_manila_share_image.stdout}}"}}], "delegate_to": "{{ (groups[\"manila_share\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "manila-share temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"manila_share\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "openstack-manila-share", "tripleo_ha_image_update_new_image": "{{manila_share_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_manila_share_image}}"}, "when": ["(pcmk_manila_share_image != \"\")", "(pcmk_manila_share_image != manila_share_image_latest)"]}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get galera image from pacemaker", "become": true, "register": "xmllint_pcmk_galera_image", "shell": "xmllint --xpath \"string(//bundle[@id='galera-bundle']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container galera image", "set_fact": {"galera_image": "registry.redhat.io/rhosp-rhel9/openstack-mariadb:17.1", "galera_image_latest": "cluster.common.tag/mariadb:pcmklatest", "pcmk_galera_image": "{{xmllint_pcmk_galera_image.stdout}}"}}], "delegate_to": "{{ (groups[\"mysql\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "MySQL temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"mysql\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "galera-bundle", "tripleo_ha_image_update_new_image": "{{galera_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_galera_image}}"}, "when": ["(pcmk_galera_image != \"\")", "(pcmk_galera_image != galera_image_latest)"]}]}, {"name": "Check if python3-openvswitch3.1 workaround is needed", "delegate_to": "{{groups['neutron_api'][0]}}", "become": true, "tags": ["ovn", "ovn_image"], "when": "step|int == 1", "shell": "podman exec neutron_api rpm -q python3-openvswitch3.1\n", "register": "neutron_python_ovs_3_1", "failed_when": false}, {"name": "Update neutron_api first everywhere", "become": true, "tags": ["ovn", "ovn_image"], "when": ["step|int == 1", "neutron_python_ovs_3_1.rc == 0"], "block": [{"name": "Move virtual IPs to another node before stopping pacemaker", "delegate_to": "{{groups['neutron_api'][0]}}", "when": ["hostvars[groups['neutron_api'][0]][\"haproxy_node_names\"]|default([])|length > 1"], "shell": "CLUSTER_NODE=$(crm_node -n)\necho \"Retrieving all the VIPs which are hosted on this node\"\nVIPS_TO_MOVE=$(crm_mon --as-xml | xmllint --xpath '//resource[@resource_agent=\"ocf:heartbeat:IPaddr2\" and @role = \"Started\" and @managed = \"true\" and ./node[@name = \"'${CLUSTER_NODE}'\"]]/@id' - | sed -e 's/id=//g' -e 's/\"//g')\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Moving VIP $v on another node\"\n    pcs resource ban $v ${CLUSTER_NODE} --wait=300\ndone\necho \"Removing the location constraints that were created to move the VIPs\"\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Removing location ban for VIP $v\"\n    ban_id=$(cibadmin --query | xmllint --xpath 'string(//rsc_location[@rsc=\"'${v}'\" and @node=\"'${CLUSTER_NODE}'\" and @score=\"-INFINITY\"]/@id)' -)\n    if [ -n \"$ban_id\" ]; then\n        pcs constraint remove ${ban_id}\n    else\n        echo \"Could not retrieve and clear location constraint for VIP $v\" 2>&1\n    fi\ndone\n"}, {"name": "Create firewall nat prerouting and postrouting", "delegate_to": "{{groups['neutron_api'][0]}}", "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][0]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then\n       PROTOCOL=\"ip6\"\n       # we need to temporarly allow ipv6 forwarding, this will get reset by deployment run\n       sysctl -w net.ipv6.conf.all.forwarding=1\n  else PROTOCOL=\"ip\"\nfi\nnft add table $PROTOCOL nat\nnft -- add chain $PROTOCOL nat prerouting { type nat hook prerouting priority -100 \\; }\nnft add chain $PROTOCOL nat postrouting { type nat hook postrouting priority 100 \\; }\n"}, {"name": "Redirect neutron backend traffic for 60s to other host", "delegate_to": "{{groups['neutron_api'][0]}}", "shell": "set -o pipefail\nsource /etc/os-release; test  \"${VERSION_ID%*}\" = \"9.0\" && exit 0\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][0]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nREMOTE_BACKEND=$(grep \":9696 \" /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep server | grep -v {{groups['neutron_api'][0]}} | head -n1 | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nPORT=9696\nif [[ $IP =~ .*:.* ]]\n  then PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nREMOTE_IP=${REMOTE_BACKEND%:*}\nnft add rule $PROTOCOL nat postrouting $PROTOCOL daddr $REMOTE_IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) masquerade comment neutron_api\nnft add rule $PROTOCOL nat prerouting $PROTOCOL daddr $IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) dnat to $REMOTE_IP comment neutron_api\n"}, {"name": "Insanity neutron update first", "delegate_to": "{{groups['neutron_api'][0]}}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_4", "config_id": ["neutron_api"], "config_patterns": "*neutron_api.json", "config_overrides": {".*neutron_api": {"image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-server:17.1", "name": "neutron_api"}}}}, {"wait_for": {"timeout": 50}}, {"name": "Delete redirect rules", "delegate_to": "{{groups['neutron_api'][0]}}", "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][0]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then\n       PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nnft -a list chain $PROTOCOL nat postrouting | grep neutron_api | awk -F# '{print \"nat postrouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\nnft -a list chain $PROTOCOL nat prerouting | grep neutron_api | awk -F# '{print \"nat prerouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\n"}, {"name": "Move virtual IPs to another node before stopping pacemaker", "delegate_to": "{{groups['neutron_api'][1]}}", "when": ["hostvars[groups['neutron_api'][1]][\"haproxy_node_names\"]|default([])|length > 1", "groups['neutron_api'] | default([]) | length > 1"], "shell": "CLUSTER_NODE=$(crm_node -n)\necho \"Retrieving all the VIPs which are hosted on this node\"\nVIPS_TO_MOVE=$(crm_mon --as-xml | xmllint --xpath '//resource[@resource_agent=\"ocf:heartbeat:IPaddr2\" and @role = \"Started\" and @managed = \"true\" and ./node[@name = \"'${CLUSTER_NODE}'\"]]/@id' - | sed -e 's/id=//g' -e 's/\"//g')\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Moving VIP $v on another node\"\n    pcs resource ban $v ${CLUSTER_NODE} --wait=300\ndone\necho \"Removing the location constraints that were created to move the VIPs\"\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Removing location ban for VIP $v\"\n    ban_id=$(cibadmin --query | xmllint --xpath 'string(//rsc_location[@rsc=\"'${v}'\" and @node=\"'${CLUSTER_NODE}'\" and @score=\"-INFINITY\"]/@id)' -)\n    if [ -n \"$ban_id\" ]; then\n        pcs constraint remove ${ban_id}\n    else\n        echo \"Could not retrieve and clear location constraint for VIP $v\" 2>&1\n    fi\ndone\n"}, {"name": "Create firewall nat prerouting and postrouting", "delegate_to": "{{groups['neutron_api'][1]}}", "when": ["groups['neutron_api'] | default([]) | length > 1"], "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][1]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then\n       PROTOCOL=\"ip6\"\n       # we need to temporarly allow ipv6 forwarding, this will get reset by deployment run\n       sysctl -w net.ipv6.conf.all.forwarding=1\n  else PROTOCOL=\"ip\"\nfi\nnft add table $PROTOCOL nat\nnft -- add chain $PROTOCOL nat prerouting { type nat hook prerouting priority -100 \\; }\nnft add chain $PROTOCOL nat postrouting { type nat hook postrouting priority 100 \\; }\n"}, {"name": "Redirect neutron backend traffic for 60s to other host", "delegate_to": "{{groups['neutron_api'][1]}}", "when": ["groups['neutron_api'] | default([]) | length > 1"], "shell": "set -o pipefail\nsource /etc/os-release; test  \"${VERSION_ID%*}\" = \"9.0\" && exit 0\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][1]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nREMOTE_BACKEND=$(grep \":9696 \" /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep server | grep -v {{groups['neutron_api'][1]}} | head -n1 | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nPORT=9696\nif [[ $IP =~ .*:.* ]]\n  then PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nREMOTE_IP=${REMOTE_BACKEND%:*}\nnft add rule $PROTOCOL nat postrouting $PROTOCOL daddr $REMOTE_IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) masquerade comment neutron_api\nnft add rule $PROTOCOL nat prerouting $PROTOCOL daddr $IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) dnat to $REMOTE_IP comment neutron_api\n"}, {"name": "Insanity neutron update first", "delegate_to": "{{groups['neutron_api'][1]}}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_4", "config_id": ["neutron_api"], "config_patterns": "*neutron_api.json", "config_overrides": {".*neutron_api": {"image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-server:17.1", "name": "neutron_api"}}}, "when": ["groups['neutron_api'] | default([]) | length > 1"]}, {"wait_for": {"timeout": 50}, "when": ["groups['neutron_api'] | default([]) | length > 1"]}, {"name": "Delete redirect rules", "delegate_to": "{{groups['neutron_api'][1]}}", "when": ["groups['neutron_api'] | default([]) | length > 1"], "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][1]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nnft -a list chain $PROTOCOL nat postrouting | grep neutron_api | awk -F# '{print \"nat postrouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\nnft -a list chain $PROTOCOL nat prerouting | grep neutron_api | awk -F# '{print \"nat prerouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\n"}, {"name": "Move virtual IPs to another node before stopping pacemaker", "delegate_to": "{{groups['neutron_api'][2]}}", "when": ["hostvars[groups['neutron_api'][2]][\"haproxy_node_names\"]|default([])|length > 1", "groups['neutron_api'] | default([]) | length > 2"], "shell": "CLUSTER_NODE=$(crm_node -n)\necho \"Retrieving all the VIPs which are hosted on this node\"\nVIPS_TO_MOVE=$(crm_mon --as-xml | xmllint --xpath '//resource[@resource_agent=\"ocf:heartbeat:IPaddr2\" and @role = \"Started\" and @managed = \"true\" and ./node[@name = \"'${CLUSTER_NODE}'\"]]/@id' - | sed -e 's/id=//g' -e 's/\"//g')\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Moving VIP $v on another node\"\n    pcs resource ban $v ${CLUSTER_NODE} --wait=300\ndone\necho \"Removing the location constraints that were created to move the VIPs\"\nfor v in ${VIPS_TO_MOVE}; do\n    echo \"Removing location ban for VIP $v\"\n    ban_id=$(cibadmin --query | xmllint --xpath 'string(//rsc_location[@rsc=\"'${v}'\" and @node=\"'${CLUSTER_NODE}'\" and @score=\"-INFINITY\"]/@id)' -)\n    if [ -n \"$ban_id\" ]; then\n        pcs constraint remove ${ban_id}\n    else\n        echo \"Could not retrieve and clear location constraint for VIP $v\" 2>&1\n    fi\ndone\n"}, {"name": "Create firewall nat prerouting and postrouting", "delegate_to": "{{groups['neutron_api'][2]}}", "when": ["groups['neutron_api'] | default([]) | length > 2"], "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][2]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then\n       PROTOCOL=\"ip6\"\n       # we need to temporarly allow ipv6 forwarding, this will get reset by deployment run\n       sysctl -w net.ipv6.conf.all.forwarding=1\n  else PROTOCOL=\"ip\"\nfi\nnft add table $PROTOCOL nat\nnft -- add chain $PROTOCOL nat prerouting { type nat hook prerouting priority -100 \\; }\nnft add chain $PROTOCOL nat postrouting { type nat hook postrouting priority 100 \\; }\n"}, {"name": "Redirect neutron backend traffic for 60s to other host", "delegate_to": "{{groups['neutron_api'][2]}}", "when": ["groups['neutron_api'] | default([]) | length > 2"], "shell": "set -o pipefail\nsource /etc/os-release; test  \"${VERSION_ID%*}\" = \"9.0\" && exit 0\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][2]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nREMOTE_BACKEND=$(grep \":9696 \" /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep server | grep -v {{groups['neutron_api'][2]}} | head -n1 | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nPORT=9696\nif [[ $IP =~ .*:.* ]]\n  then PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nREMOTE_IP=${REMOTE_BACKEND%:*}\nnft add rule $PROTOCOL nat postrouting $PROTOCOL daddr $REMOTE_IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) masquerade comment neutron_api\nnft add rule $PROTOCOL nat prerouting $PROTOCOL daddr $IP tcp dport 9696 counter meta time $(date +%s)-$(date -d'+60 seconds' +%s) dnat to $REMOTE_IP comment neutron_api\n"}, {"name": "Insanity neutron update first", "delegate_to": "{{groups['neutron_api'][2]}}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_4", "config_id": ["neutron_api"], "config_patterns": "*neutron_api.json", "config_overrides": {".*neutron_api": {"image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-server:17.1", "name": "neutron_api"}}}, "when": ["groups['neutron_api'] | default([]) | length > 2"]}, {"wait_for": {"timeout": 50}, "when": ["groups['neutron_api'] | default([]) | length > 2"]}, {"name": "Delete redirect rules", "delegate_to": "{{groups['neutron_api'][2]}}", "shell": "set -o pipefail\nLOCAL_BACKEND=$(grep {{groups['neutron_api'][2]}} /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg | \\\n  grep \":9696 \" | awk '{print $3}')\nIP=${LOCAL_BACKEND%:*}\nif [[ $IP =~ .*:.* ]]\n  then PROTOCOL=\"ip6\"\n  else PROTOCOL=\"ip\"\nfi\nnft -a list chain $PROTOCOL nat postrouting | grep neutron_api | awk -F# '{print \"nat postrouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\nnft -a list chain $PROTOCOL nat prerouting | grep neutron_api | awk -F# '{print \"nat prerouting \"$2}' | \\\nwhile read i; do bash -c \"nft delete rule $PROTOCOL $i\"; done\n", "when": ["groups['neutron_api'] | default([]) | length > 2"]}]}, {"when": "step|int == 1", "block": [{"name": "Set facts for running online DB migrations", "set_fact": {"is_additional_cell": false}, "tags": ["online_upgrade", "online_upgrade_nova"]}, {"name": "Online data migration for Nova", "when": "not is_additional_cell|bool", "command": "{{ container_cli }} exec nova_conductor nova-manage db online_data_migrations", "delegate_to": "{{ (groups['nova_conductor'] | difference(groups['excluded_overcloud']))[0] }}", "become": true, "tags": ["online_upgrade", "online_upgrade_nova"]}]}, {"name": "Force pull image in case image name doesn't change.", "when": "step|int == 1", "tags": ["ovn", "ovn_image"], "become": true, "loop": "{{ groups['ovn_controller'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}", "async": 600, "poll": 0, "register": "ovn_controller_image_update", "containers.podman.podman_image": {"name": "registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1", "validate_certs": false, "force": true}}, {"name": "Was the ovn_controller image pull successful.", "when": ["step|int == 1", "'results' in ovn_controller_image_update"], "tags": ["ovn", "ovn_image"], "become": true, "delegate_to": "{{ async_result_item.item }}", "async_status": {"jid": "{{ async_result_item.ansible_job_id }}"}, "loop": "{{ovn_controller_image_update.results }}", "loop_control": {"loop_var": "async_result_item"}, "register": "async_poll_results", "until": "async_poll_results.finished", "retries": 600, "delay": 1}, {"name": "OVN Container image used", "debug": {"msg": "ovn container will be using {{ image }}"}, "vars": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1"}, "when": "step|int == 1", "tags": "ovn"}, {"name": "Update OVN OVS related parameters before update.", "when": ["step|int == 1"], "tags": ["ovn"], "become": true, "vars": {"timeout": 8000}, "shell": "set -e\novs-vsctl set Open_vSwitch . external_ids:ovn-ofctrl-wait-before-clear={{ timeout }}\novs-vsctl set Open_vSwitch . external_ids:ovn-monitor-all=true\novs-vsctl set Open_vSwitch . external_ids:ovn-match-northd-version=false\n", "async": 600, "poll": 0, "register": "ovs_vsctl", "loop": "{{ groups['ovn_controller'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}"}, {"name": "Was the update of OVN OVS related parameter successful.", "when": ["step|int == 1", "'results' in ovs_vsctl"], "become": true, "tags": ["ovn"], "delegate_to": "{{ async_result_item.item }}", "async_status": {"jid": "{{ async_result_item.ansible_job_id }}"}, "loop": "{{ovs_vsctl.results }}", "loop_control": {"loop_var": "async_result_item"}, "register": "async_poll_results", "until": "async_poll_results.finished", "retries": 600, "delay": 1}, {"set_fact": {"any_ovn_host": "{{groups['ovn_controller'] | difference(groups['excluded_overcloud']) | first }}"}, "tags": "ovn", "when": "step|int == 1"}, {"name": "Find ovn_controller configs in container-startup-configs", "find": {"paths": "/var/lib/tripleo-config/container-startup-config/", "patterns": "*ovn_controller.json", "recurse": true}, "register": "ovn_cont_17_0", "delegate_to": "{{ any_ovn_host }}", "when": "(step|int == 1) and (any_ovn_host is defined) and (any_ovn_host|length > 0)", "tags": ["ovn"], "become": true}, {"name": "get directory path from the ovn_cont_17_0", "set_fact": {"ovn_config_path": "{{ ovn_cont_17_0.files.0.path | dirname }}"}, "when": "step|int == 1", "tags": "ovn"}, {"name": "Get PIDfile used by systemd on each ovn node", "when": ["step|int == 1"], "tags": ["ovn"], "become": true, "shell": "set -e\ngrep PID /etc/systemd/system/tripleo_ovn_controller.service | cut -d= -f2\n", "register": "pidfile", "loop": "{{ groups['ovn_controller'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}"}, {"name": "Update ovn_controller.", "vars": {"config_step": "{{ ('step_4' in ovn_config_path) | ternary('4', '3')}}", "query": "results[?item == '{{item}}'].stdout"}, "when": "step|int == 1", "tags": "ovn", "become": true, "loop": "{{ groups['ovn_controller'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}", "async": 600, "poll": 0, "register": "ovn_controller_update", "tripleo_container_manage": {"config_dir": "{{ ovn_config_path }}", "config_patterns": "*ovn_controller.json", "config_id": ["tripleo_step{{config_step}}"], "log_base_path": "{{ container_log_stdout_path }}", "debug": "{{ enable_debug | bool }}", "config_overrides": {".*ovn_controller": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1", "conmon_pidfile": "{{ pidfile | json_query(query) | first }}", "name": "ovn_controller"}}}}, {"name": "Was the ovn_controller successful.", "when": ["step|int == 1", "'results' in ovn_controller_update"], "tags": "ovn", "become": true, "delegate_to": "{{ async_result_item.item }}", "async_status": {"jid": "{{ async_result_item.ansible_job_id }}"}, "loop": "{{ovn_controller_update.results }}", "loop_control": {"loop_var": "async_result_item"}, "register": "async_poll_results", "until": "async_poll_results.finished", "retries": 600, "delay": 1}, {"name": "Pause for 30s to give ovn_controllers time to reconnect to dbs", "when": ["step|int == 1"], "tags": "ovn", "wait_for": {"timeout": 30}}, {"name": "Run ovndbs update", "tags": ["ovn", "ovn_image"], "when": "step|int == 2", "block": [{"name": "Get OVN_Northbound cluster leader", "become": true, "shell": "podman exec -u root ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound | grep 'Leader: '\n", "register": "ovn_nb_dbs_cluster_leader", "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}"}, {"set_fact": {"ovn_nb_leader": "{{ ovn_nb_dbs_cluster_leader| json_query(\"results[?contains(stdout,'Leader: self')].item\") }}"}}, {"name": "Graceful stop OVN NB leader container", "delegate_to": "{{ ovn_nb_leader[0] }}", "become": true, "shell": "podman exec -u root ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl exit\n"}, {"name": "Start OVN NB leader container", "delegate_to": "{{ ovn_nb_leader[0] }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_north_db_server"], "config_patterns": "*ovn_cluster_north_db_server.json", "config_overrides": {".*ovn_cluster_north_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-nb-db-server:17.1", "name": "ovn_cluster_north_db_server"}}}}, {"name": "Get OVN_Southbound cluster leader", "become": true, "shell": "sudo podman exec -u root ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound | grep 'Leader: '\n", "register": "ovn_sb_dbs_cluster_leader", "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) }}", "delegate_to": "{{ item }}"}, {"set_fact": {"ovn_sb_leader": "{{ ovn_sb_dbs_cluster_leader | json_query(\"results[?contains(stdout,'Leader: self')].item\") }}"}}, {"name": "Graceful stop OVN SB leader container", "delegate_to": "{{ ovn_sb_leader[0] }}", "become": true, "shell": "sudo podman exec -u root ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl exit\n"}, {"name": "Start OVN SB leader container", "delegate_to": "{{ ovn_sb_leader[0] }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_south_db_server"], "config_patterns": "*ovn_cluster_south_db_server.json", "config_overrides": {".*ovn_cluster_south_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-sb-db-server:17.1", "name": "ovn_cluster_south_db_server"}}}}, {"name": "Loop on OVN_Northbound cluster for leader election", "become": true, "shell": "podman exec -u root ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound | grep 'Leader: '\n", "register": "wait_leader", "delegate_to": "{{ groups['ovn_dbs'] | difference(groups['excluded_overcloud']) |  difference(ovn_nb_leader[0]) | first }}", "failed_when": "'Leader: unknown' in wait_leader.stdout or wait_leader.stderr != ''", "until": "'Leader: unknown' not in wait_leader.stdout and wait_leader.stderr == ''", "retries": 10, "delay": 5}, {"name": "Loop on OVN_Southbound cluster for leader election", "become": true, "shell": "podman exec -u root ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound | grep 'Leader: '\n", "register": "wait_leader", "delegate_to": "{{ groups['ovn_dbs'] | difference(groups['excluded_overcloud']) |  difference(ovn_nb_leader[0]) | first }}", "failed_when": "'Leader: unknown' in wait_leader.stdout or wait_leader.stderr != ''", "until": "'Leader: unknown' not in wait_leader.stdout and wait_leader.stderr == ''", "retries": 10, "delay": 5}, {"name": "Pause for 30 seconds to ensure ovn db leader knows it was elected and clients reconnect", "wait_for": {"timeout": 30}}, {"name": "Get OVN_Northbound cluster new leader", "become": true, "shell": "podman exec -u root ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound | grep 'Leader: '\n", "register": "ovn_nb_dbs_cluster_leader_new", "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) }}", "until": "'Leader: unknown' not in ovn_nb_dbs_cluster_leader_new.stdout", "retries": 10, "delay": 5, "delegate_to": "{{ item }}"}, {"set_fact": {"ovn_nb_leader_new": "{{ ovn_nb_dbs_cluster_leader_new| json_query(\"results[?contains(stdout,'Leader: self')].item\") }}"}}, {"name": "Get OVN_Southbound cluster new leader", "become": true, "shell": "sudo podman exec -u root ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound | grep 'Leader: '\n", "register": "ovn_sb_dbs_cluster_leader_new", "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) }}", "until": "'Leader: unknown' not in ovn_sb_dbs_cluster_leader_new.stdout", "retries": 10, "delay": 5, "delegate_to": "{{ item }}"}, {"set_fact": {"ovn_sb_leader_new": "{{ ovn_sb_dbs_cluster_leader_new | json_query(\"results[?contains(stdout,'Leader: self')].item\") }}"}}, {"name": "Start OVN NB containers (non-leader nodes)", "delegate_to": "{{ item }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_north_db_server"], "config_patterns": "*ovn_cluster_north_db_server.json", "config_overrides": {".*ovn_cluster_north_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-nb-db-server:17.1", "name": "ovn_cluster_north_db_server"}}}, "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) | difference(ovn_nb_leader[0])| difference(ovn_nb_leader_new[0])}}", "loop_control": {"pause": 15}}, {"name": "Start OVN SB containers (non-leader nodes)", "delegate_to": "{{ item }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_south_db_server"], "config_patterns": "*ovn_cluster_south_db_server.json", "config_overrides": {".*ovn_cluster_south_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-sb-db-server:17.1", "name": "ovn_cluster_south_db_server"}}}, "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud']) | difference(ovn_sb_leader[0])| difference(ovn_sb_leader_new[0])}}", "loop_control": {"pause": 15}}, {"name": "Pause for 50 seconds before restarting new leaders of OVN", "wait_for": {"timeout": 50}}, {"name": "Graceful stop OVN NB new-leader container", "delegate_to": "{{ ovn_nb_leader_new[0] }}", "become": true, "shell": "podman exec -u root ovn_cluster_north_db_server ovs-appctl -t /var/run/ovn/ovnnb_db.ctl exit\n", "when": "ovn_nb_leader_new[0] != ovn_nb_leader[0]"}, {"name": "Start OVN NB containers (new-leader nodes)", "delegate_to": "{{ ovn_nb_leader_new[0] }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_north_db_server"], "config_patterns": "*ovn_cluster_north_db_server.json", "config_overrides": {".*ovn_cluster_north_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-nb-db-server:17.1", "name": "ovn_cluster_north_db_server"}}}, "when": "ovn_nb_leader_new[0] != ovn_nb_leader[0]"}, {"name": "Graceful stop OVN SB new-leader container", "delegate_to": "{{ ovn_sb_leader_new[0] }}", "become": true, "shell": "sudo podman exec -u root ovn_cluster_south_db_server ovs-appctl -t /var/run/ovn/ovnsb_db.ctl exit\n", "when": "ovn_sb_leader_new[0] != ovn_sb_leader[0]"}, {"name": "Start OVN SB containers (new-leader nodes)", "delegate_to": "{{ ovn_sb_leader_new[0] }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_south_db_server"], "config_patterns": "*ovn_cluster_south_db_server.json", "config_overrides": {".*ovn_cluster_south_db_server": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-sb-db-server:17.1", "name": "ovn_cluster_south_db_server"}}}, "when": "ovn_sb_leader_new[0] != ovn_sb_leader[0]"}, {"name": "Start OVN northd container", "delegate_to": "{{ item }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_0", "config_id": ["ovn_cluster_northd"], "config_patterns": "*ovn_cluster_northd.json", "config_overrides": {".*ovn_cluster_northd": {"image": "registry.redhat.io/rhosp-rhel9/openstack-ovn-northd:17.1", "name": "ovn_cluster_northd"}}}, "loop": "{{groups['ovn_dbs'] | difference(groups['excluded_overcloud'])}}", "loop_control": {"pause": 15}}]}, {"name": "Check if python3-openvswitch3.1 workaround is needed", "delegate_to": "{{ item }}", "become": true, "tags": ["ovn", "ovn_image"], "when": "step|int == 1", "shell": "if podman exec ovn_metadata_agent rpm -q python3-openvswitch3.1 > /dev/null ; then echo REQUIRED; else echo OK ; fi\n", "register": "metadata_python_ovs_3_1", "failed_when": false, "loop": "{{ groups['ovn_metadata'] | difference(groups['excluded_overcloud']) }}"}, {"name": "Update ovn_metadata_agents", "vars": {"hosts_to_update_metadata": "{{ metadata_python_ovs_3_1.results | selectattr('stdout', 'eq', 'REQUIRED') | map(attribute='item') | list }}"}, "tags": ["ovn", "ovn_image"], "when": ["step|int == 1", "hosts_to_update_metadata | length > 0"], "block": [{"name": "Force pull image in case image name doesn't change.", "become": true, "loop": "{{ hosts_to_update_metadata }}", "delegate_to": "{{ item }}", "async": 600, "poll": 0, "register": "ovn_metadata_image_update", "containers.podman.podman_image": {"name": "registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1", "validate_certs": false, "force": true}}, {"name": "Was the ovn_metadata_agent image pull successful.", "when": ["'results' in ovn_metadata_image_update"], "become": true, "delegate_to": "{{ async_result_item.item }}", "async_status": {"jid": "{{ async_result_item.ansible_job_id }}"}, "loop": "{{ovn_metadata_image_update.results }}", "loop_control": {"loop_var": "async_result_item"}, "register": "async_poll_results", "until": "async_poll_results.finished", "retries": 600, "delay": 1}, {"name": "Now rotate all ovn_metadata_agents", "tags": ["ovn_metadata_parallel"], "delegate_to": "{{ item }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_4", "config_id": ["ovn_metadata_agent"], "config_patterns": "*ovn_metadata_agent.json", "config_overrides": {".*ovn_metadata_agent": {"image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1", "name": "ovn_metadata_agent"}}}, "loop": "{{ hosts_to_update_metadata }}", "async": 600, "poll": 0}]}, {"name": "Now rotate all ovn_metadata_agents", "vars": {"hosts_to_update_metadata": "{{ metadata_python_ovs_3_1.results | selectattr('stdout', 'eq', 'REQUIRED') | map(attribute='item') | list }}"}, "tags": ["never", "ovn_metadata_serial"], "when": ["step|int == 1", "hosts_to_update_metadata | length > 0"], "delegate_to": "{{ item }}", "become": true, "tripleo_container_manage": {"config_dir": "/var/lib/tripleo-config/container-startup-config/step_4", "config_id": ["ovn_metadata_agent"], "config_patterns": "*ovn_metadata_agent.json", "config_overrides": {".*ovn_metadata_agent": {"image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1", "name": "ovn_metadata_agent"}}}, "loop": "{{ hosts_to_update_metadata }}", "loop_control": {"pause": 1}}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get rabbitmq image from pacemaker", "become": true, "register": "xmllint_pcmk_rabbitmq_rpc_image", "shell": "xmllint --xpath \"string(//bundle[@id='rabbitmq-bundle']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container rabbitmq image", "set_fact": {"rabbitmq_rpc_image": "registry.redhat.io/rhosp-rhel9/openstack-rabbitmq:17.1", "rabbitmq_rpc_image_latest": "cluster.common.tag/rabbitmq:pcmklatest", "pcmk_rabbitmq_rpc_image": "{{xmllint_pcmk_rabbitmq_rpc_image.stdout}}"}}], "delegate_to": "{{ (groups[\"oslo_messaging_rpc\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "rabbitmq temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"oslo_messaging_rpc\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "rabbitmq-bundle", "tripleo_ha_image_update_new_image": "{{rabbitmq_rpc_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_rabbitmq_rpc_image}}"}, "when": ["(pcmk_rabbitmq_rpc_image != \"\")", "(pcmk_rabbitmq_rpc_image != rabbitmq_rpc_image_latest)"]}]}, {"when": ["step|int == 0"], "name": "redis_external_update_init", "block": [{"name": "create redis virtual ip", "tripleo_service_vip": {"playbook_dir": "{{ playbook_dir }}", "stack_name": "standalone", "service_name": "redis", "network": "internal_api", "fixed_ips": [{"ip_address": "192.168.122.99", "use_neutron": false}]}}]}, {"when": "step|int == 1", "tags": "ha_image_update", "block": [{"block": [{"name": "Get redis image from pacemaker", "become": true, "register": "xmllint_pcmk_redis_image", "shell": "xmllint --xpath \"string(//bundle[@id='redis-bundle']/podman/@image)\" /var/lib/pacemaker/cib/cib.xml"}, {"name": "Get container redis image", "set_fact": {"redis_image": "registry.redhat.io/rhosp-rhel9/openstack-redis:17.1", "redis_image_latest": "cluster.common.tag/redis:pcmklatest", "pcmk_redis_image": "{{xmllint_pcmk_redis_image.stdout}}"}}], "delegate_to": "{{ (groups[\"redis\"] | difference(groups[\"excluded_overcloud\"]))[0] }}"}, {"name": "redis temporary pacemaker container tag in case of image switch", "become": true, "import_role": {"name": "tripleo_ha_image_update"}, "vars": {"tripleo_ha_image_update_node_names": "{{ groups[\"redis\"] | difference(groups[\"excluded_overcloud\"]) }}", "tripleo_ha_image_update_bundle": "redis-bundle", "tripleo_ha_image_update_new_image": "{{redis_image_latest}}", "tripleo_ha_image_update_old_image": "{{pcmk_redis_image}}"}, "when": ["(pcmk_redis_image != \"\")", "(pcmk_redis_image != redis_image_latest)"]}]}], "external_update_steps_playbook": "- hosts: Undercloud\n  name: External update step 0\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: 0\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_update_steps_tasks.yaml\n  tags:\n    - step0\n    - external\n    - external_update_steps\n- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n- hosts: Undercloud\n  name: External update step 1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '1'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_update_steps_tasks.yaml\n  tags:\n    - step1\n    - external\n    - external_update_steps\n- hosts: Undercloud\n  name: External update step 2\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '2'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_update_steps_tasks.yaml\n  tags:\n    - step2\n    - external\n    - external_update_steps\n# putting both update and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from update tasks\n- hosts: Undercloud\n  name: External deploy step 1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '1'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - step1\n# putting both update and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from update tasks\n- hosts: Undercloud\n  name: External deploy step 2\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '2'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - step2\n# putting both update and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from update tasks\n- hosts: Undercloud\n  name: External deploy step 3\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '3'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - step3\n# putting both update and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from update tasks\n- hosts: Undercloud\n  name: External deploy step 4\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '4'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - step4\n# putting both update and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from update tasks\n- hosts: Undercloud\n  name: External deploy step 5\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '5'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - external\n    - external_deploy_steps\n    - step5\n", "pre_upgrade_rolling_steps_tasks": "\n- include_tasks: \"{{ _task_file_path }}\"\n  vars:\n    _task_file_path: \"{{ tripleo_role_name }}/pre_upgrade_rolling_tasks.yaml\"\n  when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n  tags:\n    - always\n", "pre_upgrade_rolling_steps_playbook": "- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud:Standalone\"\n    deploy_target_host: \"standalone\"\n- hosts: Standalone\n  name: Run pre-upgrade rolling tasks\n  serial:  1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  tasks:\n    - include_tasks: pre_upgrade_rolling_steps_tasks.yaml\n      with_sequence: start=0 end=0\n      loop_control:\n        loop_var: step\n", "upgrade_steps_playbook": "- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 0\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '0'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step0\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 1\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '1'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step1\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 2\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '2'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step2\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 3\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '3'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step3\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 4\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '4'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step4\n- hosts: standalone\n  strategy: tripleo_free\n  name: Upgrade tasks for step 5\n  become: true\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    step: '5'\n    deploy_identifier: 1769792090\n    enable_debug: False\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n  tasks:\n\n    - include_tasks: \"{{ _task_file_path }}\"\n      vars:\n        _task_file_path: \"{{ tripleo_role_name }}/upgrade_tasks_step{{ step }}.yaml\"\n      when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n      tags:\n        - always\n\n  tags:\n    - upgrade_steps\n    - upgrade_step5\n", "post_upgrade_steps_tasks": "\n- include_tasks: \"{{ _task_file_path }}\"\n  vars:\n    _task_file_path: \"{{ tripleo_role_name }}/post_upgrade_tasks.yaml\"\n  when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n  tags:\n    - always\n", "post_upgrade_steps_playbook": "- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n- hosts: standalone\n  strategy: tripleo_free\n  any_errors_fatal: yes\n  tasks:\n    - include_tasks: post_upgrade_steps_tasks.yaml\n      with_sequence: start=0 end=3\n      vars:\n        bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n        deploy_identifier: 1769792090\n        enable_debug: False\n        enable_puppet: True\n        container_cli: podman\n        container_log_stdout_path: /var/log/containers/stdouts\n        container_healthcheck_disabled: False\n        docker_puppet_debug: False\n        docker_puppet_process_count: 6\n        docker_puppet_mount_host_puppet: True\n      loop_control:\n        loop_var: step\n", "external_upgrade_steps_tasks": [{"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop aodh api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["aodh_api", "aodh_api_cron"], "tripleo_delegate_to": "{{ groups['aodh_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop aodh evaluator container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["aodh_evaluator"], "tripleo_delegate_to": "{{ groups['aodh_evaluator'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop aodh listener container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["aodh_listener"], "tripleo_delegate_to": "{{ groups['aodh_listener'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop aodh notifier container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["aodh_notifier"], "tripleo_delegate_to": "{{ groups['aodh_notifier'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop barbican api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["barbican_api"], "tripleo_delegate_to": "{{ groups['barbican_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop ceilometer agent central container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["ceilometer_agent_central"], "tripleo_delegate_to": "{{ groups['ceilometer_agent_central'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop ceilometer agent notification container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["ceilometer_agent_notification"], "tripleo_delegate_to": "{{ groups['ceilometer_agent_notification'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": "step|int == 1", "block": [{"name": "Online data migration for Cinder", "command": "{{ container_cli }} exec cinder_api cinder-manage db online_data_migrations", "delegate_to": "{{ (groups['cinder_api'] | difference(groups['excluded_overcloud']))[0] }}", "become": true, "tags": ["online_upgrade", "online_upgrade_cinder"]}]}, {"when": "step|int == 1", "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop cinder api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["cinder_api", "cinder_api_cron"], "tripleo_delegate_to": "{{ groups['cinder_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop cinder scheduler container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["cinder_scheduler"], "tripleo_delegate_to": "{{ groups['cinder_scheduler'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop clustercheck container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["clustercheck"], "tripleo_delegate_to": "{{ groups['clustercheck'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop logrotate container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["logrotate_crond"], "tripleo_delegate_to": "{{ groups['logrotate_crond'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop glance api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["glance_api", "glance_api_cron"], "tripleo_delegate_to": "{{ groups['glance_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop glance api internal container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["glance_api_internal"], "tripleo_delegate_to": "{{ groups['glance_api_internal'] | default([]) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop gnocchi container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["gnocchi_api"], "tripleo_delegate_to": "{{ groups['gnocchi_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop gnocchi metricd container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["gnocchi_metricd"], "tripleo_delegate_to": "{{ groups['gnocchi_metricd'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop gnocchi statsd container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["gnocchi_statsd"], "tripleo_delegate_to": "{{ groups['gnocchi_statsd'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop heat api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["heat_api", "heat_api_cron"], "tripleo_delegate_to": "{{ groups['heat_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop heat cfn container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["heat_api_cfn"], "tripleo_delegate_to": "{{ groups['heat_api_cfn'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop heat engine container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["heat_engine"], "tripleo_delegate_to": "{{ groups['heat_engine'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop horizon container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["horizon"], "tripleo_delegate_to": "{{ groups['horizon'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop keystone container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["keystone", "keystone_cron"], "tripleo_delegate_to": "{{ groups['keystone'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop manila api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["manila_api"], "tripleo_delegate_to": "{{ groups['manila_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop manila scheduler container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["manila_scheduler"], "tripleo_delegate_to": "{{ groups['manila_scheduler'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop memcached container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["memcached"], "tripleo_delegate_to": "{{ groups['memcached'] | difference(groups['excluded_overcloud']) }}"}}]}, {"vars": {"mysql_upgrade_transfer": true}, "when": ["step|int == 2", "mysql_upgrade_transfer"], "tags": ["never", "system_upgrade_transfer_data"], "block": [{"name": "Transfer mysql data", "include_role": {"name": "tripleo_transfer"}, "vars": {"tripleo_transfer_src_dir": "/var/lib/mysql", "tripleo_transfer_src_host": "{{hostvars[groups['overcloud'][0]]['mysql_short_node_names'][1]}}", "tripleo_transfer_dest_dir": "/var/lib/mysql", "tripleo_transfer_dest_host": "{{hostvars[groups['overcloud'][0]]['mysql_short_bootstrap_node_name']}}", "tripleo_transfer_flag_file": "/var/lib/tripleo/transfer-flags/var-lib-mysql", "tripleo_transfer_sync_options": "--whole-file --ignore-times --inplace --archive --delete", "tripleo_transfer_include": ["/ibdata*", "/ib_lru_dump", "/ib_logfile[0-9]*", "/undo*", "/*/"], "tripleo_transfer_exclude": "/*"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop neutron api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["neutron_api"], "tripleo_delegate_to": "{{ groups['neutron_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop nova api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["nova_api", "nova_api_cron"], "tripleo_delegate_to": "{{ groups['nova_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": "step|int == 1", "block": [{"name": "Set facts for running online DB migrations", "set_fact": {"is_additional_cell": false}, "tags": ["online_upgrade", "online_upgrade_nova"]}, {"name": "Online data migration for Nova", "when": "not is_additional_cell|bool", "command": "{{ container_cli }} exec nova_conductor nova-manage db online_data_migrations", "delegate_to": "{{ (groups['nova_conductor'] | difference(groups['excluded_overcloud']))[0] }}", "become": true, "tags": ["online_upgrade", "online_upgrade_nova"]}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop nova conductor container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["nova_conductor"], "tripleo_delegate_to": "{{ groups['nova_conductor'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop nova metadata container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["nova_metadata"], "tripleo_delegate_to": "{{ groups['nova_metadata'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop nova scheduler container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["nova_scheduler"], "tripleo_delegate_to": "{{ groups['nova_scheduler'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop nova vnc proxy container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["nova_vnc_proxy"], "tripleo_delegate_to": "{{ groups['nova_vnc_proxy'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop octavia api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["octavia_api"], "tripleo_delegate_to": "{{ groups['octavia_api'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop octavia health manager container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["octavia_health_manager"], "tripleo_delegate_to": "{{ groups['octavia_health_manager'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop octavia housekeeping container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["octavia_housekeeping"], "tripleo_delegate_to": "{{ groups['octavia_housekeeping'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_transfer_data", "system_upgrade_stop_services"], "block": [{"name": "Stop octavia api container", "import_role": {"name": "tripleo_container_stop"}, "vars": {"tripleo_containers_to_stop": ["octavia_worker"], "tripleo_delegate_to": "{{ groups['octavia_worker'] | difference(groups['excluded_overcloud']) }}"}}]}, {"when": ["step|int == 1"], "tags": ["never", "system_upgrade_stop_services", "system_upgrade_transfer_data"], "block": [{"name": "Stop cluster", "become": true, "shell": "set -eu\nFILE=/usr/sbin/pcs\nif test -f \"$FILE\"; then\n  /usr/sbin/pcs cluster stop --force\nfi\n", "delegate_to": "{{ item }}", "with_items": "{{ groups['pacemaker'] | difference(groups['excluded_overcloud']) }}"}]}, {"name": "Clean up upgrade artifacts", "when": "step|int == 1", "tags": ["never", "system_upgrade_cleanup"], "block": [{"name": "cleanup tripleo_persist", "include_role": {"name": "tripleo_persist", "tasks_from": "cleanup.yml"}}]}], "external_upgrade_steps_playbook": "- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External upgrade step 0\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '0'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_upgrade_steps_tasks.yaml\n  tags:\n    - step0\n    - external\n    - external_upgrade_steps\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External upgrade step 1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '1'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_upgrade_steps_tasks.yaml\n  tags:\n    - step1\n    - external\n    - external_upgrade_steps\n- hosts: Undercloud\n  strategy: tripleo_free\n  name: External upgrade step 2\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '2'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_upgrade_steps_tasks.yaml\n  tags:\n    - step2\n    - external\n    - external_upgrade_steps\n# putting both upgrade and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from upgrade tasks\n- hosts: Undercloud\n  name: External deploy step 1\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '1'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - step1\n    - external\n    - external_deploy_steps\n# putting both upgrade and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from upgrade tasks\n- hosts: Undercloud\n  name: External deploy step 2\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '2'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - step2\n    - external\n    - external_deploy_steps\n# putting both upgrade and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from upgrade tasks\n- hosts: Undercloud\n  name: External deploy step 3\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '3'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - step3\n    - external\n    - external_deploy_steps\n# putting both upgrade and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from upgrade tasks\n- hosts: Undercloud\n  name: External deploy step 4\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '4'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - step4\n    - external\n    - external_deploy_steps\n# putting both upgrade and deploy tasks in the same\n# playbook allows influencing the deploy tasks by\n# variables \"exported\" from upgrade tasks\n- hosts: Undercloud\n  name: External deploy step 5\n  gather_facts: \"{{ gather_facts | default(false) }}\"\n  any_errors_fatal: yes\n  become: false\n  vars:\n    # Explicit ansible_python_interpreter to allow connecting\n    # to different OS releases (EL7/8) while using delegate_to.\n    ansible_python_interpreter: /usr/libexec/platform-python\n    step: '5'\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    container_healthcheck_disabled: False\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    - import_tasks: external_deploy_steps_tasks.yaml\n  tags:\n    - step5\n    - external\n    - external_deploy_steps\n", "scale_steps_tasks": [{"when": ["step|int == 1", "container_cli == 'podman'"], "tags": "down", "become": true, "environment": {"OS_CLOUD": "standalone"}, "block": [{"name": "Get nova-compute service ID", "command": "openstack compute service list --service nova-compute --column ID --column Host --format yaml", "register": "nova_compute_service_result", "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false, "changed_when": false}, {"name": "is additional Cell?", "set_fact": {"is_additional_cell": false}}, {"name": "Set fact for nova_compute services", "set_fact": {"nova_compute_service": "{{ nova_compute_service_result.stdout | from_yaml | selectattr('Host', 'match', ansible_facts['fqdn'] ~ '.*') | list }}"}, "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false}, {"name": "Check search output", "fail": {"msg": "Found multiple `{{ ansible_facts['fqdn'] }}`, which is unexpected. This means that the FQDN of the selected device to disable is either wrong or is sharing a name with another host, which is also wrong. Please correct this issue before continuing. Nova service list return data can be found here -> {{ nova_compute_service }}."}, "when": ["(nova_compute_service | length) > 1"]}, {"name": "Disable nova services", "when": ["(nova_compute_service | length) == 1"], "block": [{"name": "Disable nova-compute service", "command": "openstack compute service set {{ nova_compute_service[0].Host }} nova-compute --disable", "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false, "when": ["not is_additional_cell|bool"]}, {"name": "Stop nova-compute container", "service": {"name": "tripleo_nova_compute", "state": "stopped", "enabled": false}, "become": true, "register": "stop_nova_compute", "failed_when": "('msg' in stop_nova_compute and 'Could not find the requested service tripleo_nova_compute' not in stop_nova_compute.msg) or ('rc' in stop_nova_compute and stop_nova_compute.rc != 0)"}, {"name": "Delete nova-compute service", "command": "openstack compute service delete {{ nova_compute_service[0].ID }}", "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false}]}]}, {"when": ["step|int == 1", "container_cli == 'podman'"], "tags": "down", "become": true, "environment": {"OS_CLOUD": "standalone"}, "block": [{"name": "Get neutron agents ID", "command": "openstack network agent list --column ID --column Host --column Binary --format yaml", "register": "neutron_agents_result", "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false, "changed_when": false}, {"name": "Filter only current host", "set_fact": {"neutron_agents": "{{ neutron_agents_result.stdout | from_yaml | selectattr('Host', 'match', ansible_facts['fqdn'] ~ '.*') | list }}"}, "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false}, {"name": "Deleting OVN agents", "block": [{"name": "Stop OVN containers", "loop": ["tripleo_ovn_controller", "tripleo_ovn_metadata_agent"], "service": {"name": "{{ item }}", "state": "stopped", "enabled": false}, "become": true, "register": "stop_containers", "failed_when": "('msg' in stop_containers and 'Could not find the requested service' not in stop_containers.msg) or ('rc' in stop_containers and stop_containers.rc != 0)"}, {"name": "Delete neutron agents", "loop": "{{ neutron_agents }}", "loop_control": {"loop_var": "agent", "label": "{{ agent.Host }}/{{ agent.Binary }}"}, "command": "openstack network agent delete {{ agent.ID }}", "delegate_to": "{{ groups['Undercloud'] | first }}", "check_mode": false}]}]}, {"when": ["step|int == 1", "container_cli == 'podman'", "\"pacemaker_remote\" in enabled_services|list", "inventory_hostname_short in compute_instanceha_short_node_names"], "tags": "down", "become": true, "block": [{"name": "Getting Nova compute hostname", "command": "crm_node -n", "register": "nova_compute_hostname"}, {"name": "Check if pacemaker_short_bootstrap_node_name is a defined variable", "when": "pacemaker_short_bootstrap_node_name is not defined", "fail": {"msg": "Cannot delegate pacemaker cleanup to the bootstrap node. Please delete the resources manually."}, "ignore_errors": true}, {"name": "Clean up Pacemaker remote and STONITH resources for Compute node", "when": ["nova_compute_hostname.stdout in compute_instanceha_short_node_names", "pacemaker_short_bootstrap_node_name is defined"], "block": [{"name": "List STONITH resource for the Compute node", "command": "stonith_admin -l {{ nova_compute_hostname.stdout }}", "register": "stonith_service_results", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}"}, {"name": "Disable the STONITH resources for the Compute node", "command": "pcs stonith disable \"{{ item }}\"", "loop": "{{ stonith_service_results.stdout | regex_findall('^(stonith-fence(?!_compute-fence-nova).*)', multiline=True)}}", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}", "register": "disable_output", "failed_when": "disable_output.rc != 0", "retries": 3, "delay": 5, "until": "disable_output.rc == 0"}, {"name": "Delete the STONITH resources for the Compute node", "command": "pcs stonith delete \"{{ item }}\"", "loop": "{{ stonith_service_results.stdout | regex_findall('^(stonith-fence(?!_compute-fence-nova).*)', multiline=True)}}", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}", "register": "delete_output", "failed_when": "delete_output.rc != 0", "retries": 3, "delay": 5, "until": "delete_output.rc == 0"}, {"name": "Clear the stonith level hierarchy for the Compute node target", "command": "pcs stonith level clear target {{ nova_compute_hostname.stdout }}", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}"}, {"name": "Delete Compute node from cluster", "command": "pcs cluster node remove-remote {{ nova_compute_hostname.stdout }}", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}"}, {"name": "Remove compute node in pcmk_host_list parameter from stonith-fence_compute-fence-nova", "command": "crm_resource --set-parameter=pcmk_host_list -r stonith-fence_compute-fence-nova -v \"{{ pacemaker_remote_short_node_names | reject('search', nova_compute_hostname.stdout) | join(',') }}\"", "delegate_to": "{{ pacemaker_short_bootstrap_node_name }}"}]}]}], "scale_playbook": "# Collect the facts from the overcloud nodes but ignore unreachable\n# nodes in the case of a dead node which needs to be part of the\n# scale-down operation.\n- import_playbook: common_deploy_steps_playbooks.yaml\n  vars:\n    deploy_source_host: \"Undercloud\"\n    deploy_target_host: \"standalone\"\n\n- hosts: standalone\n  name: Scaling\n  # NOTE(cloudnull): This is set to true explicitly so that we have up-to-date facts\n  #                  on all standalone when performing a scaling operation.\n  #                  Without up-to-date facts, we're creating a potential failure\n  #                  scenario.\n  gather_facts: true\n  ignore_unreachable: true\n  become: false\n  vars:\n    bootstrap_server_id: fb25c029-076a-4dff-ad3a-b9572a4b081f\n    deploy_identifier: 1769792090\n    enable_debug: False\n    enable_puppet: True\n    container_cli: podman\n    container_log_stdout_path: /var/log/containers/stdouts\n    docker_puppet_debug: False\n    docker_puppet_process_count: 6\n    docker_puppet_mount_host_puppet: True\n  tasks:\n    # Only run the scale tasks on the nodes that are alive.\n    # We expect the tasks to work on the nodes that are alive.\n    # If a task is allowed to fail, it needs to be configured at\n    # the task definition level but not here.\n    - include_tasks: scale_steps_tasks.yaml\n      with_sequence: start=1 end=1\n      loop_control:\n        loop_var: step\n      tags: always\n      # we use ansible_facts['hostname'] to determine if the host is alive\n      # or not.\n      when: ansible_facts['hostname'] is defined\n    # We don't want to run the scale tasks on dead nodes, to allow\n    # the operator to scale down the cloud no matter the state of\n    # the servers.\n    # However, we notify the operator if the node wasn't reachable.\n    # Using fail and not debug module to make it more visible\n    # in the logs.\n    - fail:\n        msg: \"Node is unreachable. No scale tasks will be run.\"\n      ignore_errors: True\n      tags: always\n      # we use ansible_facts['hostname'] to determine if the host is alive\n      # or not.\n      when: ansible_facts['hostname'] is not defined\n  tags:\n    - scale\n", "post_update_steps_tasks": "\n- include_tasks: \"{{ _task_file_path }}\"\n  vars:\n    _task_file_path: \"{{ tripleo_role_name }}/post_update_tasks.yaml\"\n  when: \"'{{ playbook_dir }}/{{ _task_file_path }}' is exists\"\n  tags:\n    - always"}, "OS::stack_id": "arn:openstack:heat::admin:stacks/standalone-AllNodesDeploySteps-nrzdev7x5hip/be7ca831-87a3-4f2f-aa95-e9553a5b59cc"}


created_at: 2026-01-30 17:02:35.142327
data:
  {"value": {"service_configs": {"aodh_redis_password": "5za7UwuLS3XZxj1Yd06wUc6mL", "aodh::db::database_connection": "mysql+pymysql://aodh:k5rAlTmdade0g5L7o2IivnC7F@172.17.0.2/aodh?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "aodh::logging::debug": true, "aodh::notification_driver": ["messagingv2"], "aodh::rabbit_heartbeat_in_pthread": false, "aodh::service_credentials::auth_url": "http://172.17.0.2:5000", "aodh::service_credentials::password": "k5rAlTmdade0g5L7o2IivnC7F", "aodh::service_credentials::region_name": "regionOne", "aodh::service_credentials::project_name": "service", "aodh::service_credentials::user_domain_name": "Default", "aodh::service_credentials::project_domain_name": "Default", "apache::ip": "%{hiera('internal_api')}", "apache::default_vhost": false, "apache::trace_enable": "Off", "apache::server_signature": "Off", "apache::server_tokens": "Prod", "apache::timeout": 90, "apache::default_mods": false, "apache::mod::prefork::maxrequestworkers": 100, "apache::mod::prefork::serverlimit": 100, "apache::mod::remoteip::proxy_ips": ["172.17.0.0/24"], "apache::mod::alias::icons_options": "None", "aodh::wsgi::apache::ssl": false, "aodh::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "aodh::wsgi::apache::wsgi_process_display_name": "aodh_wsgi", "aodh::api::service_name": "httpd", "aodh::api::enable_proxy_headers_parsing": true, "aodh::api::gnocchi_external_project_owner": "service", "aodh::keystone::authtoken::project_name": "service", "aodh::keystone::authtoken::user_domain_name": "Default", "aodh::keystone::authtoken::project_domain_name": "Default", "aodh::keystone::authtoken::password": "k5rAlTmdade0g5L7o2IivnC7F", "aodh::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "aodh::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "aodh::keystone::authtoken::region_name": "regionOne", "aodh::keystone::authtoken::interface": "internal", "aodh::keystone::authtoken::memcache_use_advanced_pool": true, "aodh::policy::policies": {}, "aodh::wsgi::apache::bind_host": "%{hiera('internal_api')}", "aodh::alarm_history_time_to_live": "86400", "enable_aodh_expirer": true, "aodh::expirer::minute": "1", "aodh::expirer::hour": "0", "aodh::expirer::monthday": "*", "aodh::expirer::month": "*", "aodh::expirer::weekday": "*", "aodh::expirer::maxdelay": "3600", "barbican::keystone::authtoken::password": "DzUZkaXPZ8Seb1CcQ0gadMSBA", "barbican::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "barbican::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "barbican::keystone::authtoken::project_name": "service", "barbican::keystone::authtoken::region_name": "regionOne", "barbican::keystone::authtoken::interface": "internal", "barbican::keystone::authtoken::memcache_use_advanced_pool": true, "barbican::keystone::notification::enable_keystone_notification": true, "barbican::keystone::notification::keystone_notification_topic": "barbican_notifications", "barbican::policy::policies": {}, "barbican::api::host_href": "http://172.21.0.2:9311", "barbican::api::db_auto_create": false, "barbican::api::enabled_certificate_plugins": ["simple_certificate"], "barbican::api::enable_queue": true, "barbican::api::logging::debug": true, "barbican::api::notification_driver": ["messagingv2"], "barbican::api::rabbit_heartbeat_in_pthread": false, "barbican::api::service_name": "httpd", "barbican::wsgi::apache::bind_host": "%{hiera('internal_api')}", "barbican::wsgi::apache::ssl": false, "barbican::wsgi::apache::workers": "%{::processorcount}", "barbican::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "barbican::db::database_connection": "mysql+pymysql://barbican:DzUZkaXPZ8Seb1CcQ0gadMSBA@172.17.0.2/barbican?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "barbican::plugins::simple_crypto::simple_crypto_plugin_kek": "gdnvMXX0WiYVptwgff0QhEH1Rf62aAng8CMD1Ks7tIM=", "barbican::plugins::simple_crypto::global_default": true, "tripleo::trusted_cas::ca_map": {}, "ceilometer::logging::debug": true, "ceilometer::agent::polling::manage_polling": false, "ceilometer::agent::service_credentials::password": "edHsPrQkulhs2zT31cCjAeJwl", "ceilometer::agent::service_credentials::auth_url": "http://172.17.0.2:5000", "ceilometer::agent::service_credentials::region_name": "regionOne", "ceilometer::agent::service_credentials::project_name": "service", "ceilometer::agent::service_credentials::user_domain_name": "Default", "ceilometer::agent::service_credentials::auth_project_domain_name": "Default", "ceilometer::agent::service_credentials::interface": "internalURL", "ceilometer::notification_driver": ["messagingv2"], "ceilometer::amqp_rpc_address_prefix": "", "ceilometer::amqp_notify_address_prefix": "", "ceilometer::telemetry_secret": "jOVJ46fPoGvg4UJb9MrrJk9E0", "ceilometer::snmpd_readonly_username": "ro_snmp_user", "ceilometer::snmpd_readonly_user_password": "kqZJIOw5oyM1IEhHGr5rpTs2", "ceilometer::host": "%{hiera('fqdn_canonical')}", "ceilometer::rabbit_heartbeat_in_pthread": false, "ceilometer::cache::enabled": true, "ceilometer::cache::tls_enabled": false, "ceilometer::cache::backend": "dogpile.cache.memcached", "ceilometer_redis_password": "5za7UwuLS3XZxj1Yd06wUc6mL", "central_namespace": true, "ceilometer::agent::polling::tenant_name_discovery": false, "ceilometer::agent::notification::manage_event_pipeline": true, "ceilometer::agent::notification::manage_pipeline": true, "tripleo::profile::base::ceilometer::agent::notification::notifier_enabled": false, "tripleo::profile::base::ceilometer::agent::notification::notifier_events_enabled": false, "tripleo::profile::base::ceilometer::agent::notification::pipeline_publishers": ["gnocchi://"], "tripleo::profile::base::ceilometer::agent::notification::event_pipeline_publishers": ["gnocchi://"], "tripleo::profile::base::ceilometer::agent::notification::notifier_params": {"driver": "amqp", "topic": "metering"}, "tripleo::profile::base::ceilometer::agent::notification::notifier_event_params": {"driver": "amqp", "topic": "event"}, "cinder::database_connection": "mysql+pymysql://cinder:Bn1aGloxX2Dz6DzmHeq41qzjX@172.17.0.2/cinder?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "cinder::logging::debug": true, "cinder::storage_availability_zone": "nova", "cinder::rabbit_heartbeat_timeout_threshold": 60, "cinder::rpc_response_timeout": 60, "cinder::rabbit_heartbeat_in_pthread": false, "cinder::db::database_db_max_retries": -1, "cinder::db::database_max_retries": -1, "cinder::cron::db_purge::minute": "1", "cinder::cron::db_purge::hour": "0", "cinder::cron::db_purge::monthday": "*", "cinder::cron::db_purge::month": "*", "cinder::cron::db_purge::weekday": "*", "cinder::cron::db_purge::user": "cinder", "cinder::cron::db_purge::age": "30", "cinder::cron::db_purge::destination": "/var/log/cinder/cinder-rowsflush.log", "cinder::cron::db_purge::maxdelay": "3600", "cinder::glance::glance_api_servers": "http://172.17.0.2:9293", "cinder::keystone::service_user::send_service_user_token": true, "cinder::keystone::service_user::project_name": "service", "cinder::keystone::service_user::auth_type": "password", "cinder::keystone::service_user::auth_url": "http://172.17.0.2:5000/", "cinder::keystone::service_user::password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "cinder::keystone::service_user::region_name": "regionOne", "cinder::nova::interface": "admin", "cinder::nova::project_name": "service", "cinder::nova::auth_type": "password", "cinder::nova::auth_url": "http://172.17.0.2:5000/", "cinder::nova::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "cinder::nova::region_name": "regionOne", "keystone_resources_managed": false, "cinder::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "cinder::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "cinder::keystone::authtoken::password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "cinder::keystone::authtoken::project_name": "service", "cinder::keystone::authtoken::user_domain_name": "Default", "cinder::keystone::authtoken::project_domain_name": "Default", "cinder::keystone::authtoken::region_name": "regionOne", "cinder::keystone::authtoken::interface": "internal", "cinder::keystone::authtoken::memcache_use_advanced_pool": true, "cinder::policy::policies": {}, "cinder::notification_driver": ["messagingv2"], "cinder::api::default_volume_type": "tripleo", "cinder::api::enable_proxy_headers_parsing": true, "tripleo::profile::base::cinder::cinder_enable_db_purge": true, "cinder::api::bind_host": "%{hiera('fqdn_internal_api')}", "cinder::wsgi::apache::ssl": false, "cinder::api::service_name": "httpd", "cinder::wsgi::apache::bind_host": "%{hiera('internal_api')}", "cinder::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "cinder::wsgi::apache::vhost_custom_fragment": "Timeout 60", "cinder::wsgi::apache::workers": "1", "cinder::backup::backup_workers": 1, "cinder::backup::backup_max_operations": 15, "cinder::backup::ceph::backup_ceph_user": "openstack", "cinder::backup::ceph::backup_ceph_pool": "backups", "cinder::backup::ceph::backup_ceph_conf": "/etc/ceph/ceph.conf", "tripleo::profile::pacemaker::cinder::backup_bundle::cinder_backup_docker_image": "cluster.common.tag/cinder-backup:pcmklatest", "tripleo::profile::pacemaker::cinder::backup_bundle::docker_volumes": ["/etc/hosts:/etc/hosts:ro", "/etc/localtime:/etc/localtime:ro", "/etc/pki/ca-trust/extracted:/etc/pki/ca-trust/extracted:ro", "/etc/pki/ca-trust/source/anchors:/etc/pki/ca-trust/source/anchors:ro", "/etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro", "/etc/pki/tls/certs/ca-bundle.trust.crt:/etc/pki/tls/certs/ca-bundle.trust.crt:ro", "/etc/pki/tls/cert.pem:/etc/pki/tls/cert.pem:ro", "/dev/log:/dev/log", "/etc/puppet:/etc/puppet:ro", "/var/lib/config-data/puppet-generated/cinder:/var/lib/kolla/config_files/src:ro", "/var/log/containers/cinder:/var/log/cinder:z", "/var/lib/kolla/config_files/cinder_backup.json:/var/lib/kolla/config_files/config.json:ro", "/var/lib/config-data/puppet-generated/iscsid/etc/iscsi:/var/lib/kolla/config_files/src-iscsid:ro", "/var/lib/tripleo-config/ceph:/var/lib/kolla/config_files/src-ceph:z", "/dev:/dev", "/run:/run", "/sys:/sys", "/lib/modules:/lib/modules:ro", "/var/lib/cinder:/var/lib/cinder:z", "/var/lib/iscsi:/var/lib/iscsi:z"], "tripleo::profile::pacemaker::cinder::backup_bundle::docker_environment": {"KOLLA_CONFIG_STRATEGY": "COPY_ALWAYS"}, "tripleo::profile::pacemaker::cinder::backup_bundle::container_backend": "podman", "tripleo::profile::pacemaker::cinder::backup_bundle::ceph_conf_path": "/var/lib/tripleo-config/ceph", "cinder::backup::manage_service": false, "cinder::backup::enabled": false, "cinder::scheduler::scheduler_driver": "cinder.scheduler.filter_scheduler.FilterScheduler", "tripleo::profile::base::lvm::enable_udev": false, "tripleo::profile::base::cinder::volume::cinder_enable_iscsi_backend": false, "tripleo::profile::base::cinder::volume::cinder_enable_nfs_backend": false, "tripleo::profile::base::cinder::volume::cinder_enable_rbd_backend": true, "tripleo::profile::base::cinder::volume::cinder_volume_cluster": "", "tripleo::profile::base::cinder::volume::nfs::cinder_nfs_mount_options": "context=system_u:object_r:container_file_t:s0", "tripleo::profile::base::cinder::volume::nfs::cinder_nfs_servers": [], "tripleo::profile::base::cinder::volume::nfs::cinder_nfs_snapshot_support": false, "tripleo::profile::base::cinder::volume::nfs::cinder_nas_secure_file_operations": "False", "tripleo::profile::base::cinder::volume::nfs::cinder_nas_secure_file_permissions": "False", "tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_helper": "lioadm", "tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_protocol": "iscsi", "tripleo::profile::base::cinder::volume::rbd::backend_name": ["tripleo_ceph"], "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_ceph_conf": "/etc/ceph/ceph.conf", "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_pool_name": "volumes", "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_extra_pools": [], "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_secret_uuid": "56be444b-9558-5ccf-98dd-f9b25b713f89", "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_user_name": "openstack", "tripleo::profile::base::cinder::volume::rbd::cinder_rbd_flatten_volume_from_snapshot": false, "tripleo::profile::base::cinder::volume::rbd::multi_config": {}, "tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_address": "%{hiera('storage')}", "tripleo::profile::pacemaker::cinder::volume_bundle::cinder_volume_docker_image": "cluster.common.tag/cinder-volume:pcmklatest", "tripleo::profile::pacemaker::cinder::volume_bundle::docker_volumes": ["/etc/hosts:/etc/hosts:ro", "/etc/localtime:/etc/localtime:ro", "/etc/pki/ca-trust/extracted:/etc/pki/ca-trust/extracted:ro", "/etc/pki/ca-trust/source/anchors:/etc/pki/ca-trust/source/anchors:ro", "/etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro", "/etc/pki/tls/certs/ca-bundle.trust.crt:/etc/pki/tls/certs/ca-bundle.trust.crt:ro", "/etc/pki/tls/cert.pem:/etc/pki/tls/cert.pem:ro", "/dev/log:/dev/log", "/etc/puppet:/etc/puppet:ro", "/var/lib/config-data/puppet-generated/cinder:/var/lib/kolla/config_files/src:ro", "/var/log/containers/cinder:/var/log/cinder:z", "/var/lib/kolla/config_files/cinder_volume.json:/var/lib/kolla/config_files/config.json:ro", "/var/lib/config-data/puppet-generated/iscsid/etc/iscsi:/var/lib/kolla/config_files/src-iscsid:ro", "/var/lib/tripleo-config/ceph:/var/lib/kolla/config_files/src-ceph:z", "/lib/modules:/lib/modules:ro", "/dev:/dev", "/run:/run", "/sys:/sys", "/var/lib/cinder:/var/lib/cinder:z", "/var/lib/iscsi:/var/lib/iscsi:z"], "tripleo::profile::pacemaker::cinder::volume_bundle::docker_environment": {"KOLLA_CONFIG_STRATEGY": "COPY_ALWAYS"}, "tripleo::profile::pacemaker::cinder::volume_bundle::container_backend": "podman", "tripleo::profile::pacemaker::cinder::volume_bundle::ceph_conf_path": "/var/lib/tripleo-config/ceph", "cinder::volume::manage_service": false, "cinder::volume::enabled": false, "cinder::backend_host": "hostgroup", "mysql::server::package_name": "mariadb-galera-server", "mysql::server::manage_config_file": true, "mysql_ipv6": false, "mysql_max_connections": 4096, "mysql::server::root_password": "HMMQGjDRII", "mysql_clustercheck_password": "zT7LvENSGLZxSOFD8teOh4B9M", "enable_galera": true, "mysql_auth_ed25519": false, "mysql_bind_host": "%{hiera('internal_api')}", "tripleo::profile::base::database::mysql::bind_address": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::database::mysql::client_bind_address": "%{hiera('internal_api')}", "tripleo::profile::base::database::mysql::generate_dropin_file_limit": true, "innodb_buffer_pool_size": "128M", "tripleo::profile::pacemaker::database::mysql::bind_address": "%{hiera('fqdn_internal_api')}", "tripleo::profile::pacemaker::database::mysql::gmcast_listen_addr": "%{hiera('internal_api')}", "tripleo::profile::pacemaker::database::mysql::ca_file": "/etc/ipa/ca.crt", "tripleo::profile::pacemaker::database::mysql_bundle::mysql_docker_image": "cluster.common.tag/mariadb:pcmklatest", "tripleo::profile::pacemaker::database::mysql_bundle::control_port": 3123, "tripleo::profile::pacemaker::database::mysql_bundle::container_backend": "podman", "tripleo::profile::pacemaker::database::mysql_bundle::bind_address": "%{hiera('fqdn_internal_api')}", "tripleo::profile::pacemaker::database::mysql_bundle::sst_method": "rsync", "tripleo::profile::pacemaker::database::mysql_bundle::mariabackup_user": "mariabackup", "tripleo::profile::pacemaker::database::mysql_bundle::mariabackup_password": "Ai6xagKJ75i2NNemeQD0OP0pn", "tripleo::profile::pacemaker::database::mysql_bundle::force_ocf": true, "tripleo::profile::pacemaker::database::mysql_bundle::gcomm_cipher": "AES128-SHA256", "tripleo::profile::pacemaker::clustercheck::bind_address": "%{hiera('internal_api')}", "ceilometer::agent::polling::instance_discovery_method": "libvirt_metadata", "compute_namespace": true, "tripleo::profile::base::logging::logrotate::maxsize": "10M", "tripleo::profile::base::logging::logrotate::rotation": "daily", "tripleo::profile::base::logging::logrotate::rotate": "14", "tripleo::profile::base::logging::logrotate::purge_after_days": "14", "tripleo::profile::base::logging::logrotate::dateext": false, "glance::api::db::database_connection": "mysql+pymysql://glance:waK94ELSUw3fuZtmK4Cw3JGz3@172.17.0.2/glance?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "glance::api::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "glance::api::authtoken::auth_url": "http://172.17.0.2:5000", "glance::api::enable_v1_api": false, "glance::api::enable_v2_api": true, "glance::api::authtoken::password": "waK94ELSUw3fuZtmK4Cw3JGz3", "glance::api::enable_proxy_headers_parsing": true, "glance::api::logging::debug": true, "glance::policy::policies": {}, "glance::api::authtoken::project_name": "service", "glance::api::authtoken::region_name": "regionOne", "glance::api::authtoken::user_domain_name": "Default", "glance::api::authtoken::project_domain_name": "Default", "glance::api::authtoken::interface": "internal", "glance::api::authtoken::memcache_use_advanced_pool": true, "glance::api::pipeline": "keystone", "glance::api::os_region_name": "regionOne", "glance::api::image_member_quota": 128, "glance::api::enabled_import_methods": ["web-download"], "glance::api::node_staging_uri": "file:///var/lib/glance/staging", "glance::api::image_import_plugins": ["no_op", "image_conversion"], "glance::api::image_conversion_output_format": "raw", "glance::api::inject_metadata_properties": [], "glance::api::ignore_user_roles": ["admin"], "tripleo::profile::base::glance::api::tls_proxy_bind_ip": "%{hiera('internal_api')}", "tripleo::profile::base::glance::api::tls_proxy_fqdn": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::glance::api::tls_proxy_port": 9292, "glance::api::bind_host": "%{hiera('internal_api')}", "glance_notifier_strategy": "noop", "glance_log_file": "", "glance::backend::rbd::rbd_thin_provisioning": false, "glance::backend::file::filesystem_thin_provisioning": false, "glance::backend::swift::swift_store_auth_address": "http://172.17.0.2:5000/v3", "glance::backend::swift::swift_store_user": "service:glance", "glance::backend::swift::swift_store_key": "waK94ELSUw3fuZtmK4Cw3JGz3", "glance::backend::swift::swift_store_create_container_on_put": true, "glance::backend::swift::swift_store_auth_version": 3, "glance::backend::rbd::rbd_store_ceph_conf": "/etc/ceph/ceph.conf", "glance::backend::rbd::rbd_store_pool": "images", "glance::backend::rbd::rbd_store_user": "openstack", "glance_backend": "rbd", "tripleo::profile::base::glance::api::glance_backend_id": "default_backend", "tripleo::profile::base::glance::api::glance_store_description": "Default glance store backend.", "tripleo::profile::base::glance::api::multistore_config": {}, "tripleo::profile::base::glance::backend::rbd::glance_rbd_ceph_conf_path": "/var/lib/tripleo-config/ceph", "glance::notify::rabbitmq::notification_driver": ["messagingv2"], "glance::notify::rabbitmq::rabbit_heartbeat_in_pthread": false, "glance::cron::db_purge::minute": "1", "glance::cron::db_purge::hour": "0", "glance::cron::db_purge::monthday": "*", "glance::cron::db_purge::month": "*", "glance::cron::db_purge::weekday": "*", "glance::cron::db_purge::user": "glance", "glance::cron::db_purge::age": "30", "glance::cron::db_purge::max_rows": "100", "glance::cron::db_purge::destination": "/var/log/glance/glance-rowsflush.log", "glance::cron::db_purge::maxdelay": "3600", "glance::api::workers": "1", "gnocchi_redis_password": "5za7UwuLS3XZxj1Yd06wUc6mL", "gnocchi::logging::debug": true, "gnocchi::db::database_connection": "mysql+pymysql://gnocchi:jy7sWWT6Kq9qlpP1Q34qvcMVW@172.17.0.2/gnocchi?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "gnocchi::db::sync::extra_opts": " --sacks-number 128", "gnocchi::storage::file::file_basepath": "/var/lib/gnocchi", "gnocchi::storage::swift::swift_user": "service:gnocchi", "gnocchi::storage::swift::swift_auth_version": 3, "gnocchi::storage::swift::swift_key": "jy7sWWT6Kq9qlpP1Q34qvcMVW", "gnocchi::storage::swift::swift_authurl": "http://172.17.0.2:5000/v3", "gnocchi::storage::swift::swift_endpoint_type": "internalURL", "gnocchi::storage::ceph::ceph_pool": "metrics", "gnocchi::storage::ceph::ceph_username": "openstack", "gnocchi::storage::ceph::ceph_conffile": "/etc/ceph/ceph.conf", "gnocchi::storage::ceph::ceph_keyring": "/etc/ceph/ceph.client.openstack.keyring", "gnocchi::storage::s3::s3_endpoint_url": "", "gnocchi::storage::s3::s3_region_name": "", "gnocchi::storage::s3::s3_access_key_id": "", "gnocchi::storage::s3::s3_secret_access_key": "", "gnocchi::storage::s3::s3_bucket_prefix": "", "gnocchi::statsd::resource_id": "0a8b55df-f90f-491c-8cb9-7cdecec6fc26", "gnocchi::statsd::flush_delay": 10, "gnocchi::statsd::archive_policy_name": "low", "gnocchi::api::enabled": true, "gnocchi::api::enable_proxy_headers_parsing": true, "gnocchi::api::service_name": "httpd", "gnocchi::policy::policies": {}, "gnocchi::cors::max_age": 3600, "gnocchi::cors::allow_headers": "Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma,X-Auth-Token", "gnocchi::cors::expose_headers": "Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma", "gnocchi::cors::allow_methods": "GET,POST,PUT,DELETE,OPTIONS,PATCH", "gnocchi::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "gnocchi::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "gnocchi::keystone::authtoken::password": "jy7sWWT6Kq9qlpP1Q34qvcMVW", "gnocchi::keystone::authtoken::project_name": "service", "gnocchi::keystone::authtoken::user_domain_name": "Default", "gnocchi::keystone::authtoken::project_domain_name": "Default", "gnocchi::keystone::authtoken::region_name": "regionOne", "gnocchi::keystone::authtoken::interface": "internal", "gnocchi::keystone::authtoken::memcache_use_advanced_pool": true, "gnocchi::wsgi::apache::ssl": false, "gnocchi::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::gnocchi::api::gnocchi_backend": "swift", "tripleo::profile::base::gnocchi::api::incoming_storage_driver": "redis", "tripleo::profile::base::gnocchi::api::gnocchi_rbd_ceph_conf_path": "/var/lib/tripleo-config/ceph", "gnocchi::wsgi::apache::bind_host": "%{hiera('internal_api')}", "gnocchi::wsgi::apache::wsgi_process_display_name": "gnocchi_wsgi", "gnocchi::metricd::workers": "1", "gnocchi::metricd::metric_processing_delay": 30, "tripleo::haproxy::haproxy_service_manage": false, "tripleo::haproxy::haproxy_log_address": "/dev/log", "tripleo::haproxy::haproxy_log_facility": "local0", "tripleo::haproxy::haproxy_stats_user": "admin", "tripleo::haproxy::haproxy_stats_password": "DodupwQ8j3nu9jl5uTOJt9keK", "tripleo::haproxy::haproxy_stats_bind_address": "%{hiera('ctlplane')}", "tripleo::haproxy::redis_password": "5za7UwuLS3XZxj1Yd06wUc6mL", "tripleo::haproxy::crl_file": null, "tripleo::haproxy::haproxy_stats": true, "enable_load_balancer": true, "tripleo::profile::base::haproxy::certificates_specs": {}, "tripleo::haproxy::mysql_clustercheck": true, "haproxy_docker": true, "tripleo::profile::pacemaker::haproxy_bundle::container_backend": "podman", "tripleo::profile::pacemaker::haproxy_bundle::tls_mapping": [], "tripleo::profile::pacemaker::haproxy_bundle::tls_mapping_init_bundle": [], "tripleo::profile::pacemaker::haproxy_bundle::internal_certs_directory": "/etc/pki/tls/certs/haproxy", "tripleo::profile::pacemaker::haproxy_bundle::internal_keys_directory": "/etc/pki/tls/private/haproxy", "tripleo::profile::pacemaker::haproxy_bundle::haproxy_docker_image": "cluster.common.tag/haproxy:pcmklatest", "heat::notification_driver": ["messagingv2"], "heat::logging::debug": true, "heat::policy::policies": {}, "heat::enable_proxy_headers_parsing": true, "heat::rpc_response_timeout": 600, "heat::rabbit_heartbeat_timeout_threshold": 60, "heat::rabbit_heartbeat_in_pthread": false, "heat::region_name": "regionOne", "heat::keystone::authtoken::project_name": "service", "heat::keystone::authtoken::user_domain_name": "Default", "heat::keystone::authtoken::project_domain_name": "Default", "heat::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "heat::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "heat::keystone::authtoken::password": "29iel05njt4cB9RHPs4myPWwC", "heat::keystone::authtoken::region_name": "regionOne", "heat::keystone::authtoken::interface": "internal", "heat::keystone::authtoken::memcache_use_advanced_pool": true, "heat::keystone::domain::domain_name": "heat_stack", "heat::keystone::domain::domain_admin": "heat_stack_domain_admin", "heat::keystone::domain::domain_admin_email": "heat_stack_domain_admin@localhost", "heat::db::database_db_max_retries": -1, "heat::db::database_max_retries": -1, "heat::yaql_memory_quota": 100000, "heat::yaql_limit_iterators": 1000, "heat::cors::max_age": 3600, "heat::cors::allow_headers": "Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma,X-Auth-Token", "heat::cors::expose_headers": "Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma", "heat::cron::purge_deleted::ensure": "present", "heat::cron::purge_deleted::minute": "1", "heat::cron::purge_deleted::hour": "0", "heat::cron::purge_deleted::monthday": "*", "heat::cron::purge_deleted::month": "*", "heat::cron::purge_deleted::weekday": "*", "heat::cron::purge_deleted::maxdelay": "3600", "heat::cron::purge_deleted::user": "heat", "heat::cron::purge_deleted::age": "30", "heat::cron::purge_deleted::age_type": "days", "heat::cron::purge_deleted::destination": "/dev/null", "heat::max_json_body_size": 4194304, "heat::cache::enabled": true, "heat::cache::tls_enabled": false, "heat::cache::resource_finder_caching": false, "heat::cache::backend": "dogpile.cache.memcached", "heat::api::bind_host": "%{hiera('internal_api')}", "heat::wsgi::apache_api::ssl": false, "heat::wsgi::apache_api::vhost_custom_fragment": "Timeout 600", "heat::api::service_name": "httpd", "heat::wsgi::apache_api::bind_host": "%{hiera('internal_api')}", "heat::wsgi::apache_api::servername": "%{hiera('fqdn_internal_api')}", "heat::wsgi::apache_api::workers": 1, "heat::api_cfn::bind_host": "%{hiera('internal_api')}", "heat::wsgi::apache_api_cfn::ssl": false, "heat::api_cfn::service_name": "httpd", "heat::wsgi::apache_api_cfn::bind_host": "%{hiera('internal_api')}", "heat::wsgi::apache_api_cfn::servername": "%{hiera('fqdn_internal_api')}", "heat::wsgi::apache_api_cfn::workers": 1, "heat::engine::configure_delegated_roles": false, "heat::engine::trusts_delegated_roles": [], "heat::engine::max_nested_stack_depth": 6, "heat::engine::max_resources_per_stack": 1000, "heat::engine::reauthentication_auth_method": "", "heat::engine::heat_metadata_server_url": "http://172.21.0.2:8000", "heat::engine::heat_waitcondition_server_url": "http://172.21.0.2:8000/v1/waitcondition", "heat::engine::convergence_engine": true, "heat::engine::client_retry_limit": 2, "tripleo::profile::base::heat::manage_db_purge": true, "heat::database_connection": "mysql+pymysql://heat:29iel05njt4cB9RHPs4myPWwC@172.17.0.2/heat?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "heat::keystone_ec2_uri": "http://172.17.0.2:5000/v3/ec2tokens", "heat::keystone::domain::domain_password": "LjFSoVOlepc9795Gz5WIDxDtH", "heat::engine::auth_encryption_key": "wQWgOIMDhRyZsCbLj17pZpOIzpzGnTPo", "heat::engine::plugin_dirs": [], "heat::engine::num_engine_workers": 1, "horizon::allowed_hosts": ["*"], "horizon::enable_secure_proxy_ssl_header": true, "horizon::secure_proxy_addr_header": "HTTP_X_FORWARDED_FOR", "horizon::disable_password_reveal": true, "horizon::enforce_password_check": true, "horizon::disallow_iframe_embed": true, "horizon::cache_backend": "django.core.cache.backends.memcached.MemcachedCache", "horizon::django_session_engine": "django.contrib.sessions.backends.cache", "horizon::vhost_extra_params": {"add_listen": true, "priority": 10, "access_log_format": "%a %l %u %t \\\"%r\\\" %>s %b \\\"%%{}{Referer}i\\\" \\\"%%{}{User-Agent}i\\\"", "options": ["FollowSymLinks", "MultiViews"]}, "horizon::bind_address": "%{hiera('internal_api')}", "horizon::keystone_url": "http://172.21.0.2:5000/v3", "horizon::password_validator": "", "horizon::password_validator_help": "", "horizon::secret_key": "c414nfREFH", "horizon::secure_cookies": false, "horizon::session_timeout": 1800, "memcached_ipv6": false, "horizon::servername": "%{hiera('fqdn_internal_api')}", "horizon::listen_ssl": false, "horizon::customization_module": "", "horizon::timezone": "UTC", "horizon::file_upload_temp_dir": "/var/tmp", "horizon::help_url": "http://docs.openstack.org", "horizon::enable_user_pass": "UNSET", "horizon::django_debug": true, "horizon::log_level": "DEBUG", "tripleo::profile::base::iscsid::chap_algs": "SHA3-256,SHA256,SHA1,MD5", "keystone::database_connection": "mysql+pymysql://keystone:wUKw6jlwOwhGSUQbbh6QBIeWh@172.17.0.2/keystone?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "keystone::token_expiration": 3600, "keystone::policy::policies": {}, "keystone_ssl_certificate": "", "keystone_ssl_certificate_key": "", "keystone::token_provider": "fernet", "keystone::enable_fernet_setup": true, "keystone::fernet_max_active_keys": 5, "keystone::enable_proxy_headers_parsing": true, "keystone::enable_credential_setup": true, "keystone::credential_keys": {"/etc/keystone/credential-keys/0": {"content": "c-b5tEty_xZ_frEVM6NPdxb_GBq6XTLzdSPZ-35JBDA="}, "/etc/keystone/credential-keys/1": {"content": "8TITDB4nwZVtmCCKnKQA1EKMkXBw14jX4j6UOZ9GSoU="}}, "keystone::fernet_keys": {"/etc/keystone/fernet-keys/0": {"content": "HDvatCTLWVpcZBA97y7jO77Tt9AWGzsviOR9CyM4A9k="}, "/etc/keystone/fernet-keys/1": {"content": "q8SBB9zMWDuMCjt2xXGaL74RqehR7aZ9u1-hDocYDFk="}}, "keystone::fernet_replace_keys": true, "keystone::logging::debug": true, "keystone::notification_driver": ["messagingv2"], "keystone::notification_format": "basic", "tripleo::profile::base::keystone::extra_notification_topics": [], "keystone_enable_db_purge": true, "keystone::cron::trust_flush::ensure": "present", "keystone::cron::trust_flush::minute": "1", "keystone::cron::trust_flush::hour": "*", "keystone::cron::trust_flush::monthday": "*", "keystone::cron::trust_flush::month": "*", "keystone::cron::trust_flush::weekday": "*", "keystone::cron::trust_flush::maxdelay": 0, "keystone::cron::trust_flush::destination": "/var/log/keystone/keystone-trustflush.log", "keystone::cron::trust_flush::user": "keystone", "keystone::rabbit_heartbeat_timeout_threshold": 60, "keystone::rabbit_heartbeat_in_pthread": false, "keystone::service_name": "httpd", "keystone::enable_ssl": false, "keystone::wsgi::apache::api_port": [5000, "35357"], "keystone::wsgi::apache::ssl": false, "keystone::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "keystone::wsgi::apache::workers": "1", "keystone::wsgi::apache::threads": 1, "keystone::db::database_db_max_retries": -1, "keystone::db::database_max_retries": -1, "keystone::wsgi::apache::bind_host": ["%{hiera('internal_api')}", "%{hiera('ctlplane')}"], "keystone::cache::enabled": true, "keystone::cache::backend_argument": ["memcached_expire_time: 3600"], "keystone::cache::tls_enabled": false, "keystone::cache::backend": "dogpile.cache.memcached", "manila::storage_availability_zone": "nova", "manila::notification_driver": ["messagingv2"], "manila::logging::debug": true, "manila::db::database_db_max_retries": -1, "manila::db::database_max_retries": -1, "manila::sql_connection": "mysql+pymysql://manila:G75aaoGj6XCQnuz0NbhM1Jdpz@172.17.0.2/manila?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "manila::network::neutron::network_plugin_ipv6_enabled": false, "manila::network::neutron::network_plugin_ipv4_enabled": true, "manila::rabbit_heartbeat_in_pthread": false, "manila::keystone::authtoken::password": "G75aaoGj6XCQnuz0NbhM1Jdpz", "manila::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000/", "manila::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "manila::keystone::authtoken::project_name": "service", "manila::keystone::authtoken::user_domain_name": "Default", "manila::keystone::authtoken::project_domain_name": "Default", "manila::keystone::authtoken::region_name": "regionOne", "manila::keystone::authtoken::interface": "internal", "manila::keystone::authtoken::memcache_use_advanced_pool": true, "manila::api::bind_host": "%{hiera('internal_api')}", "manila::wsgi::apache::bind_host": "%{hiera('internal_api')}", "manila::wsgi::apache::ssl": false, "manila::api::service_name": "httpd", "manila::api::enable_proxy_headers_parsing": true, "manila::api::default_share_type": "default", "manila_enabled_share_protocols": [], "manila::policy::policies": {}, "manila::cron::db_purge::minute": "1", "manila::cron::db_purge::hour": "0", "manila::cron::db_purge::monthday": "*", "manila::cron::db_purge::month": "*", "manila::cron::db_purge::weekday": "*", "manila::cron::db_purge::user": "manila", "manila::cron::db_purge::age": "30", "manila::cron::db_purge::destination": "/var/log/manila/manila-rowsflush.log", "manila::cron::db_purge::maxdelay": "3600", "manila::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "manila::wsgi::apache::workers": "%{::os_workers}", "manila::backend::cephfs::title": "cephfs", "manila::backend::cephfs::driver_handles_share_servers": false, "manila::backend::cephfs::pool_name": "manila_data", "manila::backend::cephfs::share_backend_name": "cephfs", "manila::backend::cephfs::cephfs_filesystem_name": "cephfs", "manila_cephfs_ceph_conf_path": "/var/lib/tripleo-config/ceph", "manila::backend::cephfs::cephfs_conf_path": "/etc/ceph/ceph.conf", "manila::backend::cephfs::cephfs_auth_id": "manila", "manila::backend::cephfs::cephfs_cluster_name": "ceph", "manila::backend::cephfs::cephfs_volume_mode": "0755", "manila::backend::cephfs::cephfs_protocol_helper_type": "CEPHFS", "manila::compute::nova::username": "manila", "manila::compute::nova::password": "G75aaoGj6XCQnuz0NbhM1Jdpz", "manila::compute::nova::auth_type": "password", "manila::compute::nova::project_name": "service", "manila::compute::nova::user_domain_name": "Default", "manila::compute::nova::project_domain_name": "Default", "manila::compute::nova::auth_url": "http://172.17.0.2:5000", "manila::compute::nova::region_name": "regionOne", "manila::network::neutron::username": "manila", "manila::network::neutron::password": "G75aaoGj6XCQnuz0NbhM1Jdpz", "manila::network::neutron::auth_type": "password", "manila::network::neutron::project_name": "service", "manila::network::neutron::user_domain_name": "Default", "manila::network::neutron::project_domain_name": "Default", "manila::network::neutron::auth_url": "http://172.17.0.2:5000", "manila::network::neutron::region_name": "regionOne", "manila::volume::cinder::username": "manila", "manila::volume::cinder::password": "G75aaoGj6XCQnuz0NbhM1Jdpz", "manila::volume::cinder::auth_type": "password", "manila::volume::cinder::project_name": "service", "manila::volume::cinder::user_domain_name": "Default", "manila::volume::cinder::project_domain_name": "Default", "manila::volume::cinder::auth_url": "http://172.17.0.2:5000", "manila::volume::cinder::region_name": "regionOne", "tripleo::profile::pacemaker::manila::share_bundle::manila_share_docker_image": "cluster.common.tag/manila-share:pcmklatest", "tripleo::profile::pacemaker::manila::share_bundle::docker_volumes": ["/etc/hosts:/etc/hosts:ro", "/etc/localtime:/etc/localtime:ro", "/etc/pki/ca-trust/extracted:/etc/pki/ca-trust/extracted:ro", "/etc/pki/ca-trust/source/anchors:/etc/pki/ca-trust/source/anchors:ro", "/etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro", "/etc/pki/tls/certs/ca-bundle.trust.crt:/etc/pki/tls/certs/ca-bundle.trust.crt:ro", "/etc/pki/tls/cert.pem:/etc/pki/tls/cert.pem:ro", "/dev/log:/dev/log", "/etc/puppet:/etc/puppet:ro", "/var/lib/kolla/config_files/manila_share.json:/var/lib/kolla/config_files/config.json:ro", "/var/lib/config-data/puppet-generated/manila:/var/lib/kolla/config_files/src:ro", "/var/lib/tripleo-config/ceph:/var/lib/kolla/config_files/src-ceph:z", "/dev:/dev", "/run:/run", "/sys:/sys", "/lib/modules:/lib/modules:ro", "/var/lib/manila:/var/lib/manila:z", "/var/log/containers/manila:/var/log/manila:z"], "tripleo::profile::pacemaker::manila::share_bundle::docker_environment": {"KOLLA_CONFIG_STRATEGY": "COPY_ALWAYS"}, "tripleo::profile::pacemaker::manila::share_bundle::container_backend": "podman", "tripleo::profile::pacemaker::manila::share_bundle::ceph_conf_path": "/var/lib/tripleo-config/ceph", "manila::share::manage_service": false, "manila::share::enabled": false, "manila::host": "hostgroup", "memcached::listen": ["127.0.0.1", "%{hiera('internal_api')}"], "memcached::listen_ip": ["127.0.0.1", "%{hiera('internal_api')}"], "memcached::listen_ip_uri": ["127.0.0.1", "%{hiera('internal_api_uri')}"], "memcached::tcp_port": 11211, "memcached::max_connections": 8192, "memcached::max_memory": "50%", "memcached::udp_port": 0, "memcached::verbosity": "vv", "memcached::disable_cachedump": true, "memcached::logstdout": true, "tripleo::profile::base::memcached::enable_internal_memcached_tls": false, "tripleo::profile::base::database::mysql::client::mysql_client_bind_address": "%{hiera('internal_api')}", "tripleo::profile::base::database::mysql::client::enable_ssl": false, "tripleo::profile::base::database::mysql::client::ssl_ca": "/etc/ipa/ca.crt", "neutron::notification_driver": ["messagingv2"], "neutron::core_plugin": "ml2", "neutron::service_plugins": ["qos", "ovn-router", "trunk", "segments", "port_forwarding", "log"], "neutron::report_interval": 300, "neutron::logging::debug": true, "neutron::purge_config": false, "neutron::allow_overlapping_ips": true, "neutron::dhcp_agent_notification": true, "neutron::dns_domain": "localdomain", "neutron::rabbit_heartbeat_timeout_threshold": 60, "neutron::host": "%{hiera('fqdn_canonical')}", "neutron::db::database_db_max_retries": -1, "neutron::db::database_max_retries": -1, "neutron::db::sync::db_sync_timeout": 900, "neutron::global_physnet_mtu": 1500, "neutron::db::sync::extra_params": "", "neutron::vlan_transparent": false, "neutron::rabbit_heartbeat_in_pthread": false, "neutron::db::database_connection": "mysql+pymysql://neutron:KUvpScgcoRXJAuKhHGZjwcCg7@172.17.0.2/ovs_neutron?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "neutron::policy::policies": {}, "if": [false, {"neutron::policy::enforce_scope": true, "neutron::policy::enforce_new_defaults": true}], "neutron::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "neutron::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "neutron::server::agent_down_time": 600, "neutron::server::allow_automatic_l3agent_failover": "True", "neutron::server::enable_proxy_headers_parsing": true, "neutron::server::igmp_snooping_enable": false, "neutron::keystone::authtoken::password": "KUvpScgcoRXJAuKhHGZjwcCg7", "neutron::server::notifications::nova::auth_url": "http://172.17.0.2:5000", "neutron::server::notifications::nova::project_name": "service", "neutron::server::notifications::nova::user_domain_name": "Default", "neutron::server::notifications::nova::project_domain_name": "Default", "neutron::server::notifications::nova::region_name": "regionOne", "neutron::server::notifications::nova::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "neutron::server::notifications::nova::endpoint_type": "internal", "neutron::keystone::authtoken::project_name": "service", "neutron::keystone::authtoken::user_domain_name": "Default", "neutron::keystone::authtoken::project_domain_name": "Default", "neutron::keystone::authtoken::region_name": "regionOne", "neutron::keystone::authtoken::interface": "internal", "neutron::keystone::authtoken::memcache_use_advanced_pool": true, "neutron::quota::quota_port": "500", "neutron::quota::quota_security_group": "10", "neutron::server::placement::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "neutron::server::placement::project_domain_name": "Default", "neutron::server::placement::project_name": "service", "neutron::server::placement::user_domain_name": "Default", "neutron::server::placement::username": "nova", "neutron::server::placement::auth_url": "http://172.17.0.2:5000", "neutron::server::placement::auth_type": "password", "neutron::server::placement::region_name": "regionOne", "tripleo::profile::base::neutron::server::tls_proxy_bind_ip": "%{hiera('internal_api')}", "tripleo::profile::base::neutron::server::tls_proxy_fqdn": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::neutron::server::tls_proxy_port": "9696", "neutron::bind_host": "%{hiera('internal_api')}", "tripleo::profile::base::neutron::server::l3_ha_override": "", "neutron::server::api_workers": "1", "neutron::server::rpc_workers": "1", "neutron::plugins::ml2::mechanism_drivers": ["sriovnicswitch", "ovn"], "neutron::plugins::ml2::type_drivers": ["geneve", "vxlan", "vlan", "flat"], "neutron::plugins::ml2::flat_networks": ["datacentre"], "neutron::plugins::ml2::extension_drivers": ["qos", "port_security", "dns_domain_ports"], "neutron::plugins::ml2::network_vlan_ranges": ["datacentre:1:1000"], "neutron::plugins::ml2::tunnel_id_ranges": ["1:4094"], "neutron::plugins::ml2::vni_ranges": ["1:65536"], "neutron::plugins::ml2::tenant_network_types": ["geneve"], "neutron::plugins::ml2::ovs_driver::vnic_type_blacklist": [], "neutron::plugins::ml2::sriov_driver::vnic_type_blacklist": [], "neutron::plugins::ml2::overlay_ip_version": 4, "ovn::southbound::port": 6642, "ovn::northbound::port": 6641, "neutron::plugins::ml2::ovn::ovsdb_connection_timeout": 180, "neutron::plugins::ml2::ovn::ovsdb_probe_interval": 60000, "neutron::plugins::ml2::ovn::neutron_sync_mode": "log", "neutron::plugins::ml2::ovn::ovn_metadata_enabled": true, "neutron::server::qos_notification_drivers": "ovn-qos", "neutron::plugins::ml2::max_header_size": 38, "neutron::plugins::ml2::ovn::dns_servers": [], "neutron::plugins::ml2::ovn::ovn_emit_need_to_frag": true, "neutron::plugins::ml2::ovn::dvr_enabled": true, "neutron::plugins::ml2::ovn::network_log_rate_limit": 100, "neutron::plugins::ml2::ovn::network_log_burst_limit": 25, "neutron::agents::ml2::sriov::physical_device_mappings": ["dummy_sriov_net:dummy-dev"], "neutron::agents::ml2::sriov::exclude_devices": [], "neutron::agents::ml2::sriov::extensions": [], "neutron::agents::ml2::sriov::resource_provider_bandwidths": [], "ContainerNeutronSriovImage": "registry.redhat.io/rhosp-rhel9/openstack-neutron-sriov-agent:17.1", "ContainerNeutronConfigImage": "registry.redhat.io/rhosp-rhel9/openstack-neutron-server:17.1", "neutron::agents::ml2::sriov::resource_provider_default_hypervisor": "%{hiera('fqdn_canonical')}", "tripleo::profile::base::neutron::dhcp_agent_wrappers::enable_dnsmasq_wrapper": true, "tripleo::profile::base::neutron::dhcp_agent_wrappers::dnsmasq_process_wrapper": "/var/lib/neutron/dnsmasq_wrapper", "tripleo::profile::base::neutron::dhcp_agent_wrappers::dnsmasq_image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-dhcp-agent:17.1", "tripleo::profile::base::neutron::dhcp_agent_wrappers::enable_haproxy_wrapper": true, "tripleo::profile::base::neutron::dhcp_agent_wrappers::haproxy_process_wrapper": "/var/lib/neutron/dhcp_haproxy_wrapper", "tripleo::profile::base::neutron::dhcp_agent_wrappers::haproxy_image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-dhcp-agent:17.1", "tripleo::profile::base::neutron::dhcp_agent_wrappers::debug": true, "tripleo::profile::base::neutron::container_cli": "podman", "neutron::agents::dhcp::enable_isolated_metadata": false, "neutron::agents::dhcp::enable_force_metadata": true, "neutron::agents::dhcp::enable_metadata_network": false, "neutron::agents::dhcp::dnsmasq_local_resolv": false, "neutron::agents::dhcp::dnsmasq_dns_servers": [], "neutron::agents::dhcp::interface_driver": "neutron.agent.linux.interface.OVSInterfaceDriver", "neutron::agents::dhcp::dhcp_broadcast_reply": false, "neutron::agents::dhcp::dnsmasq_enable_addr6_list": true, "neutron::agents::dhcp::debug": true, "nova::my_ip": "%{hiera('internal_api')}", "nova::rabbit_use_ssl": "False", "nova::keystone::service_user::send_service_user_token": true, "nova::keystone::service_user::project_name": "service", "nova::keystone::service_user::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "nova::keystone::service_user::auth_url": "http://172.17.0.2:5000", "nova::keystone::service_user::region_name": "regionOne", "nova::placement::project_name": "service", "nova::placement::password": "VkmxbDV7nnIeFpoTiurMJ3pM7", "nova::placement::auth_url": "http://172.17.0.2:5000", "nova::placement::region_name": "regionOne", "nova::placement::valid_interfaces": "internal", "nova::os_region_name": "regionOne", "nova::logging::debug": true, "nova::purge_config": false, "nova::network::neutron::project_name": "service", "nova::network::neutron::username": "neutron", "nova::network::neutron::region_name": "regionOne", "nova::dhcp_domain": "", "nova::network::neutron::password": "KUvpScgcoRXJAuKhHGZjwcCg7", "nova::network::neutron::auth_url": "http://172.17.0.2:5000/v3", "nova::network::neutron::valid_interfaces": "internal", "nova::glance::valid_interfaces": "internal", "nova::rabbit_heartbeat_timeout_threshold": 60, "nova::cinder_catalog_info": "volumev3:cinderv3:internalURL", "nova::host": "%{hiera('fqdn_canonical')}", "nova::notify_on_state_change": "vm_and_task_state", "nova::notification_driver": ["messagingv2"], "nova::notification_format": "unversioned", "nova::network::neutron::auth_type": "v3password", "nova::db::database_db_max_retries": -1, "nova::db::database_max_retries": -1, "nova::network::neutron::ovs_bridge": "br-int", "nova::compute::sync_power_state_interval": 600, "nova_is_additional_cell": false, "nova::cross_az_attach": true, "nova::cache::enabled": true, "nova::cache::tls_enabled": false, "nova::cache::backend": "dogpile.cache.memcached", "nova::rabbit_heartbeat_in_pthread": false, "nova::ovsdb_connection": "", "nova::api_database_connection": "mysql+pymysql://nova_api:G0hcdxsuQmhYtL5CyRnP0gPJ0@172.17.0.2/nova_api?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "nova::database_connection": "mysql+pymysql://nova:G0hcdxsuQmhYtL5CyRnP0gPJ0@172.17.0.2/nova?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "nova::keystone::authtoken::project_name": "service", "nova::keystone::authtoken::user_domain_name": "Default", "nova::keystone::authtoken::project_domain_name": "Default", "nova::keystone::authtoken::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "nova::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "nova::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "nova::keystone::authtoken::region_name": "regionOne", "nova::keystone::authtoken::interface": "internal", "nova::keystone::authtoken::memcache_use_advanced_pool": true, "nova::api::max_limit": 1000, "nova::api::enabled": true, "nova::network::neutron::default_floating_pool": "public", "nova::api::enable_proxy_headers_parsing": true, "nova::api::api_bind_address": "%{hiera('fqdn_internal_api')}", "nova::api::service_name": "httpd", "nova::wsgi::apache_api::ssl": false, "nova::wsgi::apache_api::bind_host": "%{hiera('internal_api')}", "nova::wsgi::apache_api::servername": "%{hiera('fqdn_internal_api')}", "nova::api::instance_name_template": "instance-%08x", "nova::policy::policies": {}, "nova::api::allow_resize_to_same_host": false, "nova_enable_db_purge": true, "nova::cron::purge_shadow_tables::minute": "0", "nova::cron::purge_shadow_tables::hour": "5", "nova::cron::purge_shadow_tables::monthday": "*", "nova::cron::purge_shadow_tables::month": "*", "nova::cron::purge_shadow_tables::weekday": "*", "nova::cron::purge_shadow_tables::user": "nova", "nova::cron::purge_shadow_tables::destination": "/var/log/nova/nova-rowspurge.log", "nova::cron::purge_shadow_tables::maxdelay": "3600", "nova::cron::purge_shadow_tables::age": 14, "nova::cron::purge_shadow_tables::verbose": false, "nova::cron::purge_shadow_tables::all_cells": true, "nova_enable_db_archive": true, "nova::cron::archive_deleted_rows::minute": "1", "nova::cron::archive_deleted_rows::hour": "0", "nova::cron::archive_deleted_rows::monthday": "*", "nova::cron::archive_deleted_rows::month": "*", "nova::cron::archive_deleted_rows::weekday": "*", "nova::cron::archive_deleted_rows::max_rows": "1000", "nova::cron::archive_deleted_rows::user": "nova", "nova::cron::archive_deleted_rows::destination": "/var/log/nova/nova-rowsflush.log", "nova::cron::archive_deleted_rows::maxdelay": "3600", "nova::cron::archive_deleted_rows::until_complete": true, "nova::cron::archive_deleted_rows::purge": false, "nova::cron::archive_deleted_rows::all_cells": true, "nova::cron::archive_deleted_rows::age": 90, "nova::policy::enforce_new_defaults": false, "nova::policy::enforce_scope": false, "nova::api::osapi_compute_workers": 1, "nova::wsgi::apache_api::workers": 1, "nova::conductor::workers": 1, "nova::wsgi::apache_metadata::api_port": "8775", "nova::wsgi::apache_metadata::ssl": false, "nova::metadata::local_metadata_per_cell": false, "nova::wsgi::apache_metadata::bind_host": "%{hiera('internal_api')}", "nova::wsgi::apache_metadata::servername": "%{hiera('fqdn_internal_api')}", "nova::wsgi::apache_metadata::workers": 1, "nova::metadata::neutron_metadata_proxy_shared_secret": "f2ZZBU020C4MNnSX9aibQzWjF", "nova::scheduler::filter::scheduler_available_filters": ["nova.scheduler.filters.all_filters", "nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"], "nova::scheduler::filter::scheduler_enabled_filters": ["AvailabilityZoneFilter", "ComputeFilter", "ComputeCapabilitiesFilter", "ImagePropertiesFilter", "ServerGroupAntiAffinityFilter", "ServerGroupAffinityFilter", "PciPassthroughFilter"], "nova::scheduler::filter::scheduler_max_attempts": 3, "nova::scheduler::filter::scheduler_host_subset_size": 1, "nova::scheduler::filter::shuffle_best_same_weighed_hosts": false, "nova::scheduler::discover_hosts_in_cells_interval": -1, "nova::scheduler::query_placement_for_image_type_support": true, "nova::scheduler::limit_tenants_to_placement_aggregate": false, "nova::scheduler::placement_aggregate_required_for_tenants": false, "nova::scheduler::enable_isolated_aggregate_filtering": false, "nova::scheduler::query_placement_for_availability_zone": false, "nova::scheduler::query_placement_for_routed_network_aggregates": false, "nova::scheduler::workers": 1, "nova::compute::vcpu_pin_set": [], "nova::compute::cpu_shared_set": [], "nova::compute::cpu_dedicated_set": [], "nova::compute::reserved_host_memory": 512, "nova::compute::reserved_huge_pages": [], "nova::compute::neutron_physnets_numa_nodes_mapping": {}, "nova::compute::neutron_tunnel_numa_nodes": [], "nova::compute::resume_guests_state_on_host_boot": false, "nova::compute::libvirt::rx_queue_size": 512, "nova::compute::libvirt::tx_queue_size": 512, "nova::compute::libvirt::file_backed_memory": 0, "nova::compute::libvirt::volume_use_multipath": false, "nova::compute::libvirt::hw_machine_type": "x86_64=pc-q35-rhel9.0.0", "nova::compute::mkisofs_cmd": "mkisofs", "compute_enable_ksm": false, "nova::compute::rbd::libvirt_images_rbd_pool": "vms", "tripleo::profile::base::nova::compute::nova_nfs_enabled": false, "nfs_backend_enable": false, "nfs_share": "", "nfs_options": "context=system_u:object_r:nfs_t:s0", "nfs_vers": "4.2", "nova::compute::libvirt::num_pcie_ports": 16, "nova::compute::libvirt::mem_stats_period_seconds": 10, "nova::compute::rbd::ephemeral_storage": true, "resume_guests_state_on_host_boot": false, "nova::cpu_allocation_ratio": 0.0, "nova::ram_allocation_ratio": 1.0, "nova::disk_allocation_ratio": 0.0, "nova::compute::max_disk_devices_to_attach": -1, "nova::compute::libvirt::pmem_namespaces": "", "nova_pmem_namespaces": "", "nova::compute::image_cache::remove_unused_original_minimum_age_seconds": 86400, "nova::compute::libvirt::swtpm_enabled": false, "nova::compute::vgpu::vgpu_types_device_addresses_mapping": {}, "compute_disable_irqbalance": false, "nova::compute::libvirt::cpu_mode": "host-model", "nova::compute::libvirt::cpu_models": [], "nova::compute::libvirt::cpu_model_extra_flags": "", "nova_compute_opt_volumes": [], "nova_compute_startup_delay": 0, "nova_compute_opt_env_vars": {}, "nova::workarounds::never_download_image_if_on_rbd": false, "nova::compute::image_type_exclude_list": [], "nova_permit_post_copy": true, "nova_permit_auto_converge": true, "nova_libvirt_max_queues": 0, "nova_glance_enable_rbd_download": false, "nova_glance_rbd_download_multistore_id": "", "nova::compute::force_raw_images": true, "nova::compute::use_cow_images": true, "nova::compute::libvirt::preallocate_images": "none", "nova::compute::image_cache::manager_interval": 2400, "nova::compute::image_cache::remove_unused_base_images": true, "nova::compute::image_cache::remove_unused_resized_minimum_age_seconds": 3600, "nova::compute::image_cache::precache_concurrency": 1, "nova::compute::provider::custom_inventories": {}, "nova::compute::rbd::libvirt_images_rbd_glance_copy_poll_interval": 15, "nova::compute::rbd::libvirt_images_rbd_glance_copy_timeout": 600, "ContainerNovaComputeImage": "registry.redhat.io/rhosp-rhel9/openstack-nova-compute:17.1", "ContainerNovaLibvirtConfigImage": "registry.redhat.io/rhosp-rhel9/openstack-nova-libvirt:17.1", "nova::compute::libvirt::manage_libvirt_services": false, "nova::compute::pci::passthrough": "[{\"devname\": \"dummy-dev\", \"physical_network\": \"dummy_sriov_net\"}]", "nova::compute::libvirt::migration_support": false, "tripleo::profile::base::nova::migration::client::nova_compute_enabled": true, "tripleo::profile::base::nova::migration::client::ssh_private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAxAqsrDl05KA5spqgnwH+dP6wTQ+LtlSdM/P7M/h/ZAxD8l4H\naMKPCW4Az7OVzxbGhussPduunTpWJMWbCaRMuUQPVkm6NqaeJY40V735wje+Z5Yv\nXSgx93rYysoaHR9/KuiavO5n2Qk3drAvxY7EocfNDvewrZw85nYqmKnUyf1x9shD\n/a8PClzbZhzQ9GOUgrW8nx7eDiCAZgwrPhJ+m0ctVgtVT5JzKJBW+/9eDFkTnPES\nrzpGDhLoX4z5FgPAY+9ms/vkixREuU/RgW7p6Diud0bhRSAKeeIYItIGIcK1Q4PW\nz0xkr0ZTVb/2ogw9Y/bXDrra3K9ge3Fl8wZ7ZQIDAQABAoIBAFRSFRAkzHrz0a1Z\nJeIOrQBsda9HkvvTLCSm+fLSHRUO04DhYcV0/an8JxwvLa37qVtptsdKgLH+4AOD\n/RnqEdgUBpbCMnaENvyHTEs7GrynVl3esrOacNd1/t5GjHHfVMbDcp712jP3a2RB\nBuMt87R0KGaaMeOSkn078TllvvE7sKQ6f/Nsnux41rWMtrZgrrhTouj8pnMm+MBv\nr/3SGbebw/1vl+rLKgYVSyI/pzYRKDhna2RnmoFzekdls7/TFq95IZq1zVRXq1YE\nhjjS8BcmxVM9XxCqC/hiT3kP5Gai2xc8+8lihbmvNZ/MFRAJb62NbK67VrGkP2m7\nCvXShLcCgYEA+TSh4gDh87oJ5vgYBqXqFpcpdGhrQUiEsNydUdT2Sv41PKkOCvZY\nywoq7PT0QTUOYCoANQiMCUY4dAKr5UvU4mIsO7ngmJ/7/mzm4wkSmfWsGHoNvlwN\nUn5JCMwlqa4sLItjKyKjb40vUQqsmpcKHYw3bmp7PwjQlzIFXoYspRsCgYEAyWL6\nDsy2fXRadreTqCwNIMAszJ6VEQ0the9VwKmvVGM4Pcu9RlS1+4g1epjC8fWr3Rjh\neWLQH0O8uTQPxQYXk7oZpwHndS8xsCvjt/2FE4x2fFnzRcG1GBKSdErHB6oSSwkN\n24ueLlwXQqxqiBxngr9P+VSBmgeVA9Y62YqB6X8CgYAHIyfDxkyyY1CnSdG+VwAm\nV3v7doYj34TVX+wtjNDlAvTZYOojDD0sy4TBNp7MQ02/GVTaL/16woUZZX4w2gQl\n27Pynfc9x8860TmnpPngaPXd2ZkNK6vCAhXrZ5Voj7F6MR/M+3f82OlTA+A/qTXD\n9OEdi3UuL/1xZyBaPbOHowKBgQCMxjduaQOYJuGl4yXAhSqYHj4yuxgQ11lfKrKS\n/wqkvsbty6H/q++aaNiZXnfHk6gT4fSbWcuKT1t5Sz9KxrtsdMbBy770V40wTT3d\nu8Zup92bh3Va6dGhhjoCONNwNB6dfTLGqY5lcdKAtO2zP8fLydgpvjzqYypziCmT\nMBMoGQKBgEtSm6d5Px+LLayFT/pGXre4xnzTfBeW2O8Z5WcLjvNbwLQHUnsyJJva\nx+3+7c7NSD9+hvyBB4W0H9deM7HW2z11vhE7dxqNGGGWfDwchCby6+35E7pH5PZv\nnYaglS7psSYkbme3VRRk9kxRwM0X2rrYjOmT72Qg4KEdS9GDq0vN\n-----END RSA PRIVATE KEY-----\n", "tripleo::profile::base::nova::migration::client::ssh_port": 2022, "nova::compute::rbd::libvirt_images_rbd_glance_store_name": "default_backend", "nova::compute::rbd::libvirt_images_rbd_ceph_conf": "/etc/ceph/ceph.conf", "nova::compute::rbd::libvirt_rbd_user": "openstack", "nova::compute::rbd::rbd_keyring": "client.openstack", "tripleo::profile::base::nova::compute::cinder_nfs_backend": false, "rbd_persistent_storage": true, "rbd_disk_cachemodes": ["network=writeback"], "nova::cinder::username": "cinder", "nova::cinder::auth_type": "v3password", "nova::cinder::project_name": "service", "nova::cinder::password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "nova::cinder::auth_url": "http://172.17.0.2:5000/v3", "nova::cinder::region_name": "regionOne", "nova::compute::rbd::libvirt_rbd_secret_key": "AQBa4nxpAAAAABAAYaFs37pYmrkQAXDsJ4KtiQ==", "nova::compute::rbd::libvirt_rbd_secret_uuid": "56be444b-9558-5ccf-98dd-f9b25b713f89", "nova::compute::instance_usage_audit": true, "nova::compute::instance_usage_audit_period": "hour", "nova::compute::consecutive_build_service_disable_threshold": "10", "nova::compute::live_migration_wait_for_vif_plug": true, "nova::migration::libvirt::live_migration_permit_post_copy": true, "nova::migration::libvirt::live_migration_permit_auto_converge": true, "nova::migration::libvirt::live_migration_tunnelled": false, "nova::compute::vncserver_proxyclient_address": "%{hiera('internal_api')}", "nova::compute::vncproxy_host": "172.21.0.2", "nova::vncproxy::common::vncproxy_protocol": "http", "nova::vncproxy::common::vncproxy_host": "172.21.0.2", "nova::vncproxy::common::vncproxy_port": "6080", "nova::compute::verify_glance_signatures": false, "nova::workarounds::disable_compute_service_check_for_ffu": false, "vhostuser_socket_group": "qemu", "nova_libvirt_opt_volumes": [], "ContainerNovaLibvirtImage": "registry.redhat.io/rhosp-rhel9/openstack-nova-libvirt:17.1", "nova::compute::libvirt::log_outputs": "1:file:/var/log/libvirt/libvirtd.log", "nova::compute::libvirt::virtlogd::log_outputs": "1:file:/var/log/libvirt/virtlogd.log", "nova::compute::libvirt::virtsecretd::log_outputs": "1:file:/var/log/libvirt/virtsecretd.log", "nova::compute::libvirt::virtnodedevd::log_outputs": "1:file:/var/log/libvirt/virtnodedevd.log", "nova::compute::libvirt::virtqemud::log_outputs": "1:file:/var/log/libvirt/virtqemud.log", "nova::compute::libvirt::virtproxyd::log_outputs": "1:file:/var/log/libvirt/virtproxyd.log", "nova::compute::libvirt::virtstoraged::log_outputs": "1:file:/var/log/libvirt/virtstoraged.log", "nova::compute::libvirt::qemu::memory_backing_dir": "", "tripleo::profile::base::nova::virtlogd_wrapper::enable_wrapper": true, "tripleo::profile::base::nova::virtlogd_wrapper::virtlogd_process_wrapper": "/var/lib/container-config-scripts/virtlogd_wrapper", "tripleo::profile::base::nova::virtlogd_wrapper::virtlogd_image": "registry.redhat.io/rhosp-rhel9/openstack-nova-libvirt:17.1", "tripleo::profile::base::nova::virtlogd_wrapper::debug": true, "tripleo::profile::base::nova::compute_libvirt_shared::nova_rbd_ceph_conf_path": "/var/lib/tripleo-config/ceph", "tripleo::profile::base::nova::migration::client::libvirt_enabled": true, "nova::compute::libvirt::services::libvirt_virt_type": "kvm", "nova::compute::libvirt::virt_type": "kvm", "nova::compute::libvirt::enabled_perf_events": [], "nova::compute::libvirt::qemu::configure_qemu": true, "nova::compute::libvirt::qemu::max_files": 32768, "nova::compute::libvirt::qemu::max_processes": 131072, "nova::migration::qemu::configure_qemu": true, "nova::migration::qemu::migration_port_min": 61152, "nova::migration::qemu::migration_port_max": 61215, "nova::compute::libvirt::vncserver_listen": "%{hiera('internal_api')}", "nova::compute::libvirt::log_filters": "1:libvirt 1:qemu 1:conf 1:security 3:event 3:json 3:file 3:object 1:util", "nova::compute::libvirt::virtlogd::log_filters": "1:logging 4:object 4:json 4:event 1:util", "nova::compute::libvirt::virtsecretd::log_filters": "1:qemu 1:libvirt 4:object 4:json 4:event 1:util", "nova::compute::libvirt::virtnodedevd::log_filters": "1:qemu 1:libvirt 4:object 4:json 4:event 1:util", "nova::compute::libvirt::virtstoraged::log_filters": "1:qemu 1:libvirt 4:object 4:json 4:event 1:util", "nova::compute::libvirt::virtqemud::log_filters": "1:qemu 1:libvirt 4:object 4:json 4:event 1:util", "nova::compute::libvirt::virtproxyd::log_filters": "1:qemu 1:libvirt 4:object 4:json 4:event 1:util", "tripleo::profile::base::nova::libvirt::modular_libvirt": true, "nova::compute::libvirt::services::modular_libvirt": true, "nova::compute::libvirt::modular_libvirt": true, "nova::migration::libvirt::modular_libvirt": true, "nova::migration::libvirt::live_migration_inbound_addr": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::sshd::bannertext": "", "tripleo::profile::base::sshd::motd": "", "tripleo::profile::base::sshd::options": {"HostKey": ["/etc/ssh/ssh_host_rsa_key", "/etc/ssh/ssh_host_ecdsa_key", "/etc/ssh/ssh_host_ed25519_key"], "SyslogFacility": "AUTHPRIV", "AuthorizedKeysFile": ".ssh/authorized_keys", "ChallengeResponseAuthentication": "no", "GSSAPIAuthentication": "no", "GSSAPICleanupCredentials": "no", "UsePAM": "yes", "UseDNS": "no", "PrintMotd": "no", "X11Forwarding": "yes", "AcceptEnv": ["LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES", "LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT", "LC_IDENTIFICATION LC_ALL LANGUAGE", "XMODIFIERS"], "Subsystem": "sftp  /usr/libexec/openssh/sftp-server"}, "tripleo::profile::base::sshd::password_authentication": "no", "tripleo::profile::base::nova::migration::target::ssh_authorized_keys": ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDECqysOXTkoDmymqCfAf50/rBND4u2VJ0z8/sz+H9kDEPyXgdowo8JbgDPs5XPFsaG6yw9266dOlYkxZsJpEy5RA9WSbo2pp4ljjRXvfnCN75nli9dKDH3etjKyhodH38q6Jq87mfZCTd2sC/FjsShx80O97CtnDzmdiqYqdTJ/XH2yEP9rw8KXNtmHND0Y5SCtbyfHt4OIIBmDCs+En6bRy1WC1VPknMokFb7/14MWROc8RKvOkYOEuhfjPkWA8Bj72az++SLFES5T9GBbunoOK53RuFFIAp54hgi0gYhwrVDg9bPTGSvRlNVv/aiDD1j9tcOutrcr2B7cWXzBntl Generated by TripleO"], "tripleo::profile::base::nova::migration::target::ssh_localaddrs": ["%{hiera('cold_migration_ssh_inbound_addr')}", "%{hiera('live_migration_ssh_inbound_addr')}"], "live_migration_ssh_inbound_addr": "%{hiera('internal_api')}", "cold_migration_ssh_inbound_addr": "%{hiera('internal_api')}", "tripleo::profile::base::sshd::port": [22], "nova::vncproxy::enabled": true, "nova::vncproxy::host": "%{hiera('internal_api')}", "ovn::controller::ovn_bridge_mappings": ["datacentre:br-ctlplane"], "ovn::controller::ovn_cms_options": "enable-chassis-as-gw", "ovn::controller::ovn_encap_tos": "0", "vswitch::ovs::enable_hw_offload": false, "container_cpuset_cpus": "", "ContainerOvnControllerImage": "registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1", "ContainerOvnControllerConfigImage": "registry.redhat.io/rhosp-rhel9/openstack-ovn-controller:17.1", "ovn::controller::ovn_encap_ip": "%{hiera('tenant')}", "ovn::controller::ovn_encap_type": "geneve", "ovn::controller::ovn_bridge": "br-int", "ovn::controller::hostname": "%{hiera('fqdn_canonical')}", "ovn::controller::ovn_remote_probe_interval": 60000, "ovn::controller::ovn_openflow_probe_interval": 60, "ovn::controller::ovn_ofctrl_wait_before_clear": 8000, "ovn::controller::garp_max_timeout_sec": 0, "ovn::controller::ovn_monitor_all": true, "tripleo::profile::base::neutron::ovn_metadata_agent_wrappers::enable_haproxy_wrapper": true, "tripleo::profile::base::neutron::ovn_metadata_agent_wrappers::haproxy_process_wrapper": "/var/lib/neutron/ovn_metadata_haproxy_wrapper", "tripleo::profile::base::neutron::ovn_metadata_agent_wrappers::haproxy_image": "registry.redhat.io/rhosp-rhel9/openstack-neutron-metadata-agent-ovn:17.1", "tripleo::profile::base::neutron::ovn_metadata_agent_wrappers::debug": true, "neutron::agents::ovn_metadata::shared_secret": "f2ZZBU020C4MNnSX9aibQzWjF", "neutron::agents::ovn_metadata::auth_password": "KUvpScgcoRXJAuKhHGZjwcCg7", "neutron::agents::ovn_metadata::auth_url": "http://172.17.0.2:5000", "neutron::agents::ovn_metadata::auth_tenant": "service", "neutron::agents::ovn_metadata::metadata_host": "172.17.0.2", "neutron::agents::ovn_metadata::ovsdb_connection_timeout": 180, "neutron::agents::ovn_metadata::ovsdb_probe_interval": 60000, "neutron::agents::ovn_metadata::hwol_qos_enabled": false, "neutron::agents::ovn_metadata::debug": true, "neutron::agents::ovn_metadata::metadata_protocol": "http", "neutron::agents::ovn_metadata::metadata_workers": "1", "octavia::logging::debug": true, "octavia::purge_config": false, "octavia::notification_driver": ["messagingv2"], "octavia::db::database_connection": "mysql+pymysql://octavia:n3bAveE2Ecn5BCAKrvsShhUd0@172.17.0.2/octavia?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "octavia::service_auth::auth_url": "http://172.17.0.2:5000/v3", "octavia::service_auth::auth_type": "password", "octavia::service_auth::username": "octavia", "octavia::service_auth::password": "n3bAveE2Ecn5BCAKrvsShhUd0", "octavia::service_auth::project_name": "service", "octavia::service_auth::project_domain_name": "Default", "octavia::service_auth::user_domain_name": "Default", "octavia::service_auth::region_name": "regionOne", "octavia::nova::endpoint_type": "internalURL", "octavia::neutron::endpoint_type": "internalURL", "octavia::glance::endpoint_type": "internalURL", "octavia::cinder::endpoint_type": "internalURL", "octavia::certificates::endpoint_type": "internalURL", "octavia::certificates::ca_certificate": "/etc/octavia/certs/ca_01.pem", "octavia::certificates::ca_private_key": "/etc/octavia/certs/private/cakey.pem", "octavia::certificates::client_cert": "/etc/octavia/certs/client.pem", "octavia::certificates::server_certs_key_passphrase": "6GlvXGy5OvlPnJGR8zrTwiplM4uha9JZ", "octavia::certificates::ca_private_key_passphrase": "ZbJOUh5fMhIOwWHfo9XP1RLin", "octavia::worker::manage_nova_flavor": false, "octavia::controller::amp_boot_network_list": [], "octavia::controller::amp_flavor_id": "65", "octavia::controller::amp_image_tag": "amphora-image", "octavia::controller::amp_ssh_key_name": "octavia-ssh-key", "octavia::controller::enable_ssh_access": true, "octavia::controller::timeout_client_data": 50000, "octavia::controller::timeout_member_connect": 5000, "octavia::controller::timeout_member_data": 50000, "octavia::controller::timeout_tcp_inspect": 0, "octavia::controller::connection_max_retries": 120, "octavia::controller::connection_logging": true, "octavia::controller::build_active_retries": 120, "octavia::controller::port_detach_timeout": 300, "octavia::controller::administrative_log_facility": 1, "octavia::controller::forward_all_logs": true, "octavia::controller::user_log_facility": 0, "octavia::controller::disable_local_log_storage": false, "octavia::nova::enable_anti_affinity": true, "octavia::rabbit_heartbeat_in_pthread": false, "octavia::driver_agent::enabled_provider_agents": "ovn", "tripleo::profile::base::octavia::provider::ovn::protocol": "tcp", "octavia::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "octavia::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "octavia::keystone::authtoken::project_name": "service", "octavia::keystone::authtoken::password": "n3bAveE2Ecn5BCAKrvsShhUd0", "octavia::keystone::authtoken::user_domain_name": "Default", "octavia::keystone::authtoken::project_domain_name": "Default", "octavia::keystone::authtoken::region_name": "regionOne", "octavia::keystone::authtoken::interface": "internal", "octavia::keystone::authtoken::memcache_use_advanced_pool": true, "octavia::policy::policies": {}, "octavia::api::service_name": "httpd", "octavia::api::enable_proxy_headers_parsing": true, "octavia::api::healthcheck_enabled": true, "octavia::api::tls_cipher_prohibit_list": [], "octavia::api::default_listener_tls_versions": ["TLSv1.2", "TLSv1.3"], "octavia::api::default_pool_tls_versions": ["TLSv1.2", "TLSv1.3"], "octavia::wsgi::apache::ssl": false, "octavia::wsgi::apache::bind_host": "%{hiera('internal_api')}", "octavia::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "octavia::api::host": "%{hiera('internal_api')}", "tripleo::profile::base::octavia::enable_driver_agent": true, "octavia::api::provider_drivers": "amphora: The Octavia Amphora driver.,octavia: Deprecated alias of the Octavia Amphora driver.,ovn: Octavia OVN driver.", "octavia::health_manager::heartbeat_key": "QjrDlBwzi9T5w9BhRmUmKxfGm", "rabbitmq::file_limit": 65536, "rabbitmq::default_user": "guest", "rabbitmq::default_pass": "njWEOTXVO4VMPgNV7hGatwrMg", "rabbit_ipv6": false, "rabbitmq::delete_guest_user": false, "rabbitmq::wipe_db_on_cookie_change": true, "rabbitmq::port": 5672, "rabbitmq::loopback_users": [], "rabbitmq::tcp_backlog": 4096, "rabbitmq::repos_ensure": false, "rabbitmq::tcp_keepalive": true, "rabbitmq_environment": {"LANG": "en_US.UTF-8", "LC_ALL": "en_US.UTF-8", "NODE_PORT": "", "NODE_IP_ADDRESS": "", "RABBITMQ_NODENAME": "rabbit@%{hiera('fqdn_internal_api')}", "RABBITMQ_USE_LONGNAME": "true", "RABBITMQ_CTL_DIST_PORT_MIN": "25673", "RABBITMQ_CTL_DIST_PORT_MAX": "25683", "export ERL_EPMD_ADDRESS": "%{hiera('rabbitmq::interface')}"}, "tripleo::profile::base::rabbitmq::additional_erl_args": "'+sbwt none +sbwtdcpu none +sbwtdio none'", "rabbitmq_kernel_variables": {"inet_dist_listen_min": "25672", "inet_dist_listen_max": "25672", "net_ticktime": 15}, "rabbitmq_config_variables": {"cluster_partition_handling": "ignore", "queue_master_locator": "<<\"min-masters\">>"}, "rabbitmq::config_additional_variables": {"lager": "[{crash_log_count, 0}, { crash_log_date, \"\"}, { crash_log_size, 0 }]"}, "rabbitmq::erlang_cookie": "QyZET60emAsRn4r9Mx5m", "rabbitmq::interface": "%{hiera('internal_api')}", "rabbitmq::nr_ha_queues": 0, "rabbitmq::ssl": false, "rabbitmq::ssl_erl_dist": false, "rabbitmq::ssl_port": 5672, "rabbitmq::ssl_depth": 1, "rabbitmq::ssl_only": false, "rabbitmq::ssl_interface": "%{hiera('internal_api')}", "tripleo::profile::base::rabbitmq::enable_internal_tls": false, "tripleo::profile::base::rabbitmq::fips_mode": false, "rabbitmq::collect_statistics_interval": 30000, "rabbitmq::admin_enable": false, "rabbitmq::management_enable": true, "rabbitmq::use_config_file_for_plugins": true, "rabbitmq::management_ip_address": "127.0.0.1", "rabbitmq::management_port": 15672, "rabbitmq::config_management_variables": {"rates_mode": "none"}, "rabbitmq::ssl_cacert": "/etc/ipa/ca.crt", "rabbitmq::ssl_management_cacert": "/etc/ipa/ca.crt", "rabbitmq::service_manage": false, "tripleo::profile::pacemaker::rabbitmq_bundle::rabbitmq_docker_image": "cluster.common.tag/rabbitmq:pcmklatest", "tripleo::profile::pacemaker::rabbitmq_bundle::control_port": 3122, "tripleo::profile::pacemaker::rabbitmq_bundle::container_backend": "podman", "tripleo::profile::pacemaker::rabbitmq_bundle::force_ocf": true, "pacemaker::corosync::cluster_name": "tripleo_cluster", "pacemaker::corosync::manage_fw": false, "pacemaker::resource_defaults::defaults": {"resource-stickiness": {"value": "INFINITY"}}, "corosync_token_timeout": 10000, "pacemaker::corosync::settle_tries": 360, "pacemaker::resource::bundle::deep_compare": true, "pacemaker::resource::ip::deep_compare": true, "pacemaker::resource::ocf::deep_compare": true, "corosync_ipv6": false, "tripleo::fencing::config": {}, "tripleo::fencing::deep_compare": true, "enable_fencing": false, "hacluster_pwd": "hxGq4c75KoYw88In", "tripleo::profile::base::pacemaker::remote_authkey": "[encoded data, 4096 characters]", "tripleo::profile::base::pacemaker::pcsd_bind_addr": "%{hiera('internal_api')}", "tripleo::profile::base::pacemaker::resource_op_defaults": {"bundle": {"name": "timeout", "value": "120s"}}, "placement::keystone::authtoken::project_name": "service", "placement::keystone::authtoken::password": "VkmxbDV7nnIeFpoTiurMJ3pM7", "placement::keystone::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "placement::keystone::authtoken::auth_url": "http://172.17.0.2:5000", "placement::keystone::authtoken::region_name": "regionOne", "placement::keystone::authtoken::interface": "internal", "placement::keystone::authtoken::memcache_use_advanced_pool": true, "placement::logging::debug": true, "placement::policy::enforce_new_defaults": false, "placement::policy::enforce_scope": false, "placement::policy::policies": {}, "placement::wsgi::apache::api_port": "8778", "placement::wsgi::apache::ssl": false, "placement::wsgi::apache::bind_host": "%{hiera('internal_api')}", "placement::wsgi::apache::servername": "%{hiera('fqdn_internal_api')}", "placement::db::database_connection": "mysql+pymysql://placement:VkmxbDV7nnIeFpoTiurMJ3pM7@172.17.0.2/placement?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo", "placement::wsgi::apache::workers": 1, "redis::requirepass": "5za7UwuLS3XZxj1Yd06wUc6mL", "redis::masterauth": "5za7UwuLS3XZxj1Yd06wUc6mL", "redis::sentinel_auth_pass": "5za7UwuLS3XZxj1Yd06wUc6mL", "redis_ipv6": false, "redis::bind": "%{hiera('internal_api')}", "redis::port": 6379, "redis::sentinel::master_name": "%{hiera('redis_short_bootstrap_node_name')}", "redis::sentinel::redis_host": "%{hiera('redis_bootstrap_node_ip')}", "redis::sentinel::notification_script": "/usr/local/bin/redis-notifications.sh", "redis::sentinel::sentinel_bind": "%{hiera('internal_api')}", "redis::ulimit": 10240, "redis::daemonize": false, "tripleo::stunnel::manage_service": false, "tripleo::stunnel::foreground": "yes", "tripleo::profile::base::database::redis::tls_proxy_bind_ip": "%{hiera('internal_api')}", "tripleo::profile::base::database::redis::tls_proxy_fqdn": "%{hiera('fqdn_internal_api')}", "tripleo::profile::base::database::redis::tls_proxy_port": 6379, "redis::service_manage": false, "redis::notify_service": false, "redis::managed_by_cluster_manager": true, "tripleo::profile::pacemaker::database::redis_bundle::redis_docker_image": "cluster.common.tag/redis:pcmklatest", "tripleo::profile::pacemaker::database::redis_bundle::control_port": 3124, "tripleo::profile::pacemaker::database::redis_bundle::container_backend": "podman", "tripleo::profile::pacemaker::database::redis_bundle::force_ocf": true, "tripleo::profile::pacemaker::database::redis_bundle::tls_proxy_bind_ip": "%{hiera('internal_api')}", "tripleo::profile::pacemaker::database::redis_bundle::tls_proxy_fqdn": "%{hiera('fqdn_internal_api')}", "tripleo::profile::pacemaker::database::redis_bundle::tls_proxy_port": 6379, "tripleo::profile::pacemaker::database::redis::tls_proxy_bind_ip": "%{hiera('internal_api')}", "tripleo::profile::pacemaker::database::redis::tls_proxy_fqdn": "%{hiera('fqdn_internal_api')}", "tripleo::profile::pacemaker::database::redis::tls_proxy_port": 6379, "tripleo::profile::base::snmp::snmpd_user": "ro_snmp_user", "tripleo::profile::base::snmp::snmpd_password": "kqZJIOw5oyM1IEhHGr5rpTs2", "snmp::agentaddress": ["udp:161", "udp6:[::1]:161"], "snmp::snmpd_options": "-LS0-5d", "swift::swift_hash_path_suffix": "sFJvrfKdydI2EETmELKoNwUGZ", "swift::swift_hash_path_prefix": "", "swift::proxy::authtoken::www_authenticate_uri": "http://172.21.0.2:5000", "swift::proxy::authtoken::auth_url": "http://172.17.0.2:5000", "swift::proxy::authtoken::password": "QWNSzqJlJEfuEYyX2NWMw1iH0", "swift::proxy::authtoken::project_name": "service", "swift::proxy::authtoken::region_name": "regionOne", "swift::proxy::authtoken::interface": "internal", "swift::proxy::s3token::auth_uri": "http://172.17.0.2:5000/v3", "swift::proxy::node_timeout": 60, "swift::proxy::recoverable_node_timeout": 30, "swift::proxy::workers": "1", "swift::proxy::staticweb::url_base": "http://172.21.0.2:8080", "tripleo::profile::base::swift::proxy::ceilometer_enabled": false, "swift::proxy::keystone::operator_roles": ["admin", "swiftoperator", "ResellerAdmin"], "swift::proxy::versioned_writes::allow_versioned_writes": true, "swift::proxy::keystone::system_reader_roles": ["SwiftSystemReader"], "swift::proxy::pipeline": ["catch_errors", "gatekeeper", "healthcheck", "proxy-logging", "cache", "listing_formats", "ratelimit", "bulk", "tempurl", "formpost", "authtoken", "s3api", "s3token", "keystone", "staticweb", "copy", "container_quotas", "account_quotas", "slo", "dlo", "versioned_writes", "proxy-logging", "proxy-server"], "swift::proxy::account_autocreate": true, "tripleo::profile::base::swift::proxy::tls_proxy_bind_ip": "%{hiera('storage')}", "tripleo::profile::base::swift::proxy::tls_proxy_fqdn": "%{hiera('fqdn_storage')}", "tripleo::profile::base::swift::proxy::tls_proxy_port": "8080", "swift::proxy::port": "8080", "swift::proxy::proxy_local_net_ip": "%{hiera('storage')}", "swift::proxy::cache::tls_enabled": false, "tripleo::profile::base::swift::ringbuilder::skip_consistency_check": true, "tripleo::profile::base::swift::ringbuilder::swift_ring_get_tempurl": "", "tripleo::profile::base::swift::ringbuilder::swift_ring_put_tempurl": "", "tripleo::profile::base::swift::ringbuilder::build_ring": true, "tripleo::profile::base::swift::ringbuilder::replicas": 1, "tripleo::profile::base::swift::ringbuilder::part_power": 10, "tripleo::profile::base::swift::ringbuilder::min_part_hours": 1, "tripleo::profile::base::swift::ringbuilder::raw_disk_prefix": "r1z1-", "tripleo::profile::base::swift::ringbuilder::raw_disks": [":%PORT%/d1"], "swift::storage::all::mount_check": false, "tripleo::profile::base::swift::storage::use_local_dir": true, "swift::storage::all::incoming_chmod": "Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r", "swift::storage::all::outgoing_chmod": "Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r", "swift::storage::all::account_port": 6002, "swift::storage::all::container_port": 6001, "swift::storage::all::object_port": 6000, "swift::storage::all::object_pipeline": ["healthcheck", "recon", "object-server"], "swift::storage::all::container_pipeline": ["healthcheck", "recon", "container-server"], "swift::storage::all::account_pipeline": ["healthcheck", "recon", "account-server"], "swift::storage::disks::args": {}, "swift::storage::all::storage_local_net_ip": "%{hiera('storage_mgmt')}", "rsync::server::pid_file": "UNSET", "swift::objectexpirer::cache_tls_enabled": false, "tripleo::firewall::manage_firewall": false, "tripleo::firewall::purge_firewall_rules": false, "tripleo::packages::enable_install": true, "memcached_port": 11211, "memcached_authtoken_port": 11211, "ovn_db_clustered": true, "oslo_messaging_notify_scheme": "rabbit", "oslo_messaging_notify_user_name": "guest", "oslo_messaging_notify_password": "njWEOTXVO4VMPgNV7hGatwrMg", "oslo_messaging_notify_use_ssl": "False", "oslo_messaging_notify_port": 5672, "oslo_messaging_rpc_scheme": "rabbit", "oslo_messaging_rpc_user_name": "guest", "oslo_messaging_rpc_password": "njWEOTXVO4VMPgNV7hGatwrMg", "oslo_messaging_rpc_use_ssl": "False", "oslo_messaging_rpc_port": 5672, "aodh::db::mysql::user": "aodh", "aodh::db::mysql::password": "k5rAlTmdade0g5L7o2IivnC7F", "aodh::db::mysql::host": "%", "aodh::db::mysql::dbname": "aodh", "barbican::db::mysql::password": "DzUZkaXPZ8Seb1CcQ0gadMSBA", "barbican::db::mysql::user": "barbican", "barbican::db::mysql::host": "%", "barbican::db::mysql::dbname": "barbican", "cinder::db::mysql::password": "Bn1aGloxX2Dz6DzmHeq41qzjX", "cinder::db::mysql::user": "cinder", "cinder::db::mysql::host": "%", "cinder::db::mysql::dbname": "cinder", "glance::db::mysql::password": "waK94ELSUw3fuZtmK4Cw3JGz3", "glance::db::mysql::user": "glance", "glance::db::mysql::host": "%", "glance::db::mysql::dbname": "glance", "gnocchi::db::mysql::password": "jy7sWWT6Kq9qlpP1Q34qvcMVW", "gnocchi::db::mysql::user": "gnocchi", "gnocchi::db::mysql::host": "%", "gnocchi::db::mysql::dbname": "gnocchi", "heat::db::mysql::password": "29iel05njt4cB9RHPs4myPWwC", "heat::db::mysql::user": "heat", "heat::db::mysql::host": "%", "heat::db::mysql::dbname": "heat", "keystone::db::mysql::password": "wUKw6jlwOwhGSUQbbh6QBIeWh", "keystone::db::mysql::user": "keystone", "keystone::db::mysql::host": "%", "keystone::db::mysql::dbname": "keystone", "manila::db::mysql::password": "G75aaoGj6XCQnuz0NbhM1Jdpz", "manila::db::mysql::user": "manila", "manila::db::mysql::host": "%", "manila::db::mysql::dbname": "manila", "neutron::db::mysql::password": "KUvpScgcoRXJAuKhHGZjwcCg7", "neutron::db::mysql::user": "neutron", "neutron::db::mysql::host": "%", "neutron::db::mysql::dbname": "ovs_neutron", "nova::db::mysql_api::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "nova::db::mysql_api::user": "nova_api", "nova::db::mysql_api::host": "%", "nova::db::mysql_api::dbname": "nova_api", "nova::db::mysql::password": "G0hcdxsuQmhYtL5CyRnP0gPJ0", "nova::db::mysql::user": "nova", "nova::db::mysql::host": "%", "nova::db::mysql::dbname": "nova", "octavia::db::mysql::password": "n3bAveE2Ecn5BCAKrvsShhUd0", "octavia::db::mysql::user": "octavia", "octavia::db::mysql::host": "%", "octavia::db::mysql::dbname": "octavia", "octavia::db::mysql::persistence_dbname": "octavia_persistence", "placement::db::mysql::password": "VkmxbDV7nnIeFpoTiurMJ3pM7", "placement::db::mysql::user": "placement", "placement::db::mysql::host": "%", "placement::db::mysql::dbname": "placement", "nova::compute::keymgr_backend": "barbican", "nova::compute::barbican_endpoint": "http://172.17.0.2:9311", "nova::compute::barbican_auth_endpoint": "http://172.17.0.2:5000", "cinder::keymgr_backend": "barbican", "cinder::keymgr_encryption_api_url": "http://172.17.0.2:9311", "cinder::keymgr_encryption_auth_url": "http://172.17.0.2:5000", "glance::api::keymgr_backend": "barbican", "glance::api::keymgr_encryption_api_url": "http://172.17.0.2:9311", "glance::api::keymgr_encryption_auth_url": "http://172.17.0.2:5000", "tripleo::profile::base::keystone::barbican_notification_topics": ["barbican_notifications"], "tripleo::profile::base::keystone::ceilometer_notification_topics": ["notifications"], "keystone::endpoint::public_url": "http://172.21.0.2:5000", "keystone::endpoint::internal_url": "http://172.17.0.2:5000", "keystone::endpoint::admin_url": "http://192.168.122.99:35357", "keystone::endpoint::region": "regionOne", "keystone::admin_password": "zUd9H9Bvu6VmpDBPIzpujf04d"}, "service_names": ["keystone_admin_api", "keystone_public_api", "aodh_api", "aodh_evaluator", "aodh_listener", "aodh_notifier", "boot_params_service", "barbican_api", "barbican_backend_simple_crypto", "ca_certs", "ceilometer_agent_central", "ceilometer_agent_notification", "ceph_client", "ceph_mds", "ceph_mgr", "ceph_mon", "ceph_osd", "cinder_api", "cinder_backup", "cinder_scheduler", "cinder_volume", "clustercheck", "ceilometer_agent_compute", "container_image_prepare", "logrotate_crond", "docker_registry", "glance_api", "glance_api_internal", "gnocchi_api", "gnocchi_metricd", "gnocchi_statsd", "haproxy", "heat_api", "heat_api_cfn", "heat_engine", "horizon", "iscsid", "kernel", "keystone", "manila_api", "manila_backend_cephfs", "manila_scheduler", "manila_share", "memcached", "mysql", "mysql_client", "neutron_api", "neutron_plugin_ml2_ovn", "neutron_sriov_agent", "neutron_dhcp", "nova_api", "nova_conductor", "nova_metadata", "nova_scheduler", "nova_compute", "nova_libvirt", "nova_migration_target", "nova_vnc_proxy", "ovn_controller", "ovn_dbs", "ovn_metadata", "octavia_api", "octavia_deployment_config", "octavia_health_manager", "octavia_housekeeping", "octavia_worker", "openstack_clients", "oslo_messaging_notify", "oslo_messaging_rpc", "pacemaker", "placement", "podman", "redis", "rsyslog_baremetal_ansible", "snmp", "sshd", "swift_proxy", "swift_ringbuilder", "swift_storage", "chrony", "timezone", "logrotate_tmpwatch", "tripleo_firewall", "tripleo_packages", "tuned"], "role_extraconfig": {"tripleo::profile::base::metrics::collectd::sensubility::subscriptions": ["overcloud-ceilometer-aodh-api", "overcloud-ceilometer-aodh-evaluator", "overcloud-ceilometer-aodh-listener", "overcloud-ceilometer-aodh-notifier", "overcloud-ceilometer-agent-central", "overcloud-ceilometer-agent-notification", "overcloud-cinder-api", "overcloud-cinder-backup", "overcloud-cinder-scheduler", "overcloud-cinder-volume", "overcloud-ceilometer-agent-compute", "overcloud-glance-api", "overcloud-glance-api", "overcloud-gnocchi-api", "overcloud-gnocchi-metricd", "overcloud-gnocchi-statsd", "overcloud-haproxy", "overcloud-heat-api", "overcloud-heat-api-cfn", "overcloud-heat-engine", "overcloud-horizon", "overcloud-keystone", "overcloud-manila-api", "overcloud-manila-scheduler", "overcloud-memcached", "overcloud-neutron-server", "overcloud-neutron-dhcp", "overcloud-nova-api", "overcloud-nova-conductor", "overcloud-nova-metadata", "overcloud-nova-scheduler", "overcloud-nova-compute", "overcloud-nova-libvirt", "overcloud-ovn-metadata", "overcloud-octavia-api", "overcloud-octavia-health-manager", "overcloud-octavia-housekeeping", "overcloud-octavia-worker", "overcloud-pacemaker", "overcloud-swift-proxy"], "tripleo_collectd_sensubility_subscriptions": ["overcloud-ceilometer-aodh-api", "overcloud-ceilometer-aodh-evaluator", "overcloud-ceilometer-aodh-listener", "overcloud-ceilometer-aodh-notifier", "overcloud-ceilometer-agent-central", "overcloud-ceilometer-agent-notification", "overcloud-cinder-api", "overcloud-cinder-backup", "overcloud-cinder-scheduler", "overcloud-cinder-volume", "overcloud-ceilometer-agent-compute", "overcloud-glance-api", "overcloud-glance-api", "overcloud-gnocchi-api", "overcloud-gnocchi-metricd", "overcloud-gnocchi-statsd", "overcloud-haproxy", "overcloud-heat-api", "overcloud-heat-api-cfn", "overcloud-heat-engine", "overcloud-horizon", "overcloud-keystone", "overcloud-manila-api", "overcloud-manila-scheduler", "overcloud-memcached", "overcloud-neutron-server", "overcloud-neutron-dhcp", "overcloud-nova-api", "overcloud-nova-conductor", "overcloud-nova-metadata", "overcloud-nova-scheduler", "overcloud-nova-compute", "overcloud-nova-libvirt", "overcloud-ovn-metadata", "overcloud-octavia-api", "overcloud-octavia-health-manager", "overcloud-octavia-housekeeping", "overcloud-octavia-worker", "overcloud-pacemaker", "overcloud-swift-proxy"]}, "extraconfig": {}, "hieradata_files": ["%{::uuid}", "fqdn", "docker_puppet", "ansible_managed", "heat_config_%{::deploy_config_name}", "config_step", "role_extraconfig", "extraconfig", "pci_passthrough_whitelist", "service_names", "service_configs", "cloud_domain", "bootstrap_node", "all_nodes", "vip_data", "net_ip_map", "ovn_chassis_mac_map", "%{::osfamily}", "neutron_bigswitch_data", "upgrade"]}}


