From d25bfbfad941a017c1dcf21baf7911de6318b7e5 Mon Sep 17 00:00:00 2001 From: Marios Andreou Date: Fri, 16 Dec 2022 12:10:29 +0200 Subject: [PATCH] Add support for role specific container prep to undercloud-deploy This adds support for the per-role container image prepare params into the undercloud-deploy role. See [1] for other related patches. The undercloud-mixed-os play is changed to resolve the rhel/centos8 ci-testing hash for periodic jobs before undercloud-deploy for the multi container prep. Vars are being set with [2] but the single deploy workflow will not be enabled until [3] merges. [1] https://review.opendev.org/q/topic:role-image-prepare-stable/wallaby [2] https://review.opendev.org/c/openstack/tripleo-quickstart/+/868208 [3] https://review.opendev.org/c/openstack/tripleo-ci/+/868207 Change-Id: Ieaad3d17bb9c63f7042f0454d81dffada98c5947 --- ...node-overcloud-mixed-os-deploy-control.yml | 13 + playbooks/multinode-undercloud-mixed-os.yml | 30 ++- .../tasks/create-scripts.yml | 9 + ...tainers-prepare-parameter-mixed-os.yaml.j2 | 225 ++++++++++++++++++ 4 files changed, 275 insertions(+), 2 deletions(-) create mode 100644 roles/undercloud-deploy/templates/containers-prepare-parameter-mixed-os.yaml.j2 diff --git a/playbooks/multinode-overcloud-mixed-os-deploy-control.yml b/playbooks/multinode-overcloud-mixed-os-deploy-control.yml index 98e3e42bc..948ee5b35 100644 --- a/playbooks/multinode-overcloud-mixed-os-deploy-control.yml +++ b/playbooks/multinode-overcloud-mixed-os-deploy-control.yml @@ -5,6 +5,7 @@ environment: TRIPLEO_ROOT: "{{ lookup('env','TRIPLEO_ROOT') }}" tasks: + # TODO(marios) remove this task after we merge tripleo-ci/+/868207 - name: Deploy the overcloud include_role: name: overcloud-deploy @@ -14,6 +15,18 @@ extra_args: " --disable-protected-resource-types --baremetal-deployment " tags: - overcloud-deploy + when: registry_distro_lower is not defined + + - name: Deploy the overcloud + include_role: + name: overcloud-deploy + vars: + overcloud_roles: "{{ overcloud_roles_mixed }}" + topology_map: "{{ topology_map_mixed }}" + extra_args: " --disable-protected-resource-types --baremetal-deployment " + tags: + - overcloud-deploy + when: registry_distro_lower is defined - name: Check the overcloud_deployment_result.json if this is CI job tags: diff --git a/playbooks/multinode-undercloud-mixed-os.yml b/playbooks/multinode-undercloud-mixed-os.yml index c83fbc313..ee2aff393 100644 --- a/playbooks/multinode-undercloud-mixed-os.yml +++ b/playbooks/multinode-undercloud-mixed-os.yml @@ -52,9 +52,35 @@ - build - name: Install the undercloud + tags: undercloud-install hosts: undercloud - roles: - - undercloud-deploy + tasks: + - name: get hash set fact mixed_os_dlrn_hash_8 for periodic jobs (no content provider) + when: + - not job.consumer_job | default(false) | bool + - registry_distro_lower is defined + block: + - include_role: + name: repo-setup + tasks_from: tripleo-get-hash-set-fact.yml + vars: + search_tag: "{{ dlrn_hash_tag }}" + tgh_os_version_override: "{{ (ansible_distribution == 'RedHat') | ternary('rhel', 'centos') }}8" + fact_name: "mixed_os_dlrn_hash_8" + - name: "debug dlrn_hash_tag resolution " + debug: + msg: "d_h_t {{ dlrn_hash_tag }} resolved to mixed_os_dlrn_hash_8 {{ mixed_os_dlrn_hash_8 }} " + - name: set fact mixed_os_dlrn_hash_8 for check/gate jobs (with content provider) + when: + - job.consumer_job | default(false) | bool + - job.provider_dlrn_hash_distro is defined + - registry_distro_lower is defined + set_fact: + mixed_os_dlrn_hash_8: "{{ job.provider_dlrn_hash_distro[registry_distro_lower] }}" + + - name: Deploy the undercloud + include_role: + name: undercloud-deploy - name: Validate the undercloud hosts: undercloud diff --git a/roles/undercloud-deploy/tasks/create-scripts.yml b/roles/undercloud-deploy/tasks/create-scripts.yml index 8b58bcf88..4ce1d34c5 100644 --- a/roles/undercloud-deploy/tasks/create-scripts.yml +++ b/roles/undercloud-deploy/tasks/create-scripts.yml @@ -172,8 +172,17 @@ when: add_repos_update|length > 0 - name: Create containers-prepare-parameter.yaml + when: registry_distro_lower is not defined block: - name: Write containers-prepare-parameter.yaml template: src: containers-prepare-parameter.yaml.j2 dest: "{{ working_dir }}/containers-prepare-parameter.yaml" + +- name: Create containers-prepare-parameter.yaml + when: registry_distro_lower is defined + block: + - name: Write containers-prepare-parameter.yaml + template: + src: containers-prepare-parameter-mixed-os.yaml.j2 + dest: "{{ working_dir }}/containers-prepare-parameter.yaml" diff --git a/roles/undercloud-deploy/templates/containers-prepare-parameter-mixed-os.yaml.j2 b/roles/undercloud-deploy/templates/containers-prepare-parameter-mixed-os.yaml.j2 new file mode 100644 index 000000000..4bcfbcb4e --- /dev/null +++ b/roles/undercloud-deploy/templates/containers-prepare-parameter-mixed-os.yaml.j2 @@ -0,0 +1,225 @@ +parameter_defaults: + DockerInsecureRegistryAddress: + - {{ local_docker_registry_host }}:8787 +{% if build_container_images|default(false)|bool %} + - {{ local_registry_ip }}:{{ local_registry_port }} +{% endif %} +{% if job.consumer_job | default(false) | bool %} +{% if registry_distro_lower is defined and registry_distro_lower | default('') | length > 0 %} + - {{ job.registry_ip_address_distro[registry_distro_lower] }}:{{ local_registry_port }} +{% endif %} +{% if registry_distro is defined and registry_distro | default('') | length > 0 %} + - {{ job.registry_ip_address_distro[registry_distro] }}:{{ local_registry_port }} +{% else %} + - {{ job.registry_ip_address_branch[release] }}:{{ local_registry_port }} +{% endif %} +{% else %} + - quay.io +{% endif %} +{% if undercloud_docker_registry_mirror is defined and undercloud_docker_registry_mirror %} + DockerRegistryMirror: {{ undercloud_docker_registry_mirror }} +{% endif %} + ContainerImagePrepare: + - push_destination: "{{ local_docker_registry_host }}:8787" +{% if update_containers|bool + and not use_overcloud_mixed_upgrade|default(false)|bool + and not job.consumer_job | default(false) | bool + and not build_container_images|default(false)|bool %} + modify_role: tripleo-modify-image + modify_append_tag: "{{ update_containers_append_tag }}" + modify_only_with_source: + - kolla + - tripleo + modify_vars: + tasks_from: yum_update.yml + yum_repos_dir_path: /etc/yum.repos.d + yum_cache: /var/tmp/tripleo-container-image-prepare-cache + update_repo: "{{ update_containers_repo }}" + container_build_tool: buildah +{% endif %} + set: + tag: "{{ container_build_id }}" +{% if job.consumer_job | default(false) | bool %} +{% if registry_distro is defined and registry_distro | default('') | length > 0 %} + namespace: "{{ job.registry_ip_address_distro[registry_distro] }}:{{ local_registry_port }}/{{ docker_registry_namespace_used }}" +{% else %} + namespace: "{{ job.registry_ip_address_branch[release] }}:{{ local_registry_port }}/{{ docker_registry_namespace_used }}" +{% endif %} +{% else %} + namespace: "{{ docker_registry_host }}/{{ docker_registry_namespace_used }}" +{% endif %} + name_prefix: "{{ docker_prep_prefix }}" + name_suffix: "{{ docker_prep_suffix }}" + rhel_containers: "{{ rhel_containers }}" + ceph_namespace: "{{ docker_ceph_namespace }}" + ceph_image: "{{ docker_ceph_image }}" + ceph_tag: "{{ docker_ceph_tag }}" +{% if custom_ceph_alertmanager_image is defined %} + ceph_alertmanager_image: "{{ custom_ceph_alertmanager_image }}" +{% endif %} +{% if custom_ceph_alertmanager_namespace is defined %} + ceph_alertmanager_namespace: "{{ custom_ceph_alertmanager_namespace }}" +{% endif %} +{% if custom_ceph_alertmanager_tag is defined %} + ceph_alertmanager_tag: "{{ custom_ceph_alertmanager_tag }}" +{% endif %} +{% if custom_ceph_grafana_image is defined %} + ceph_grafana_image: "{{ custom_ceph_grafana_image }}" +{% endif %} +{% if custom_ceph_grafana_namespace is defined %} + ceph_grafana_namespace: "{{ custom_ceph_grafana_namespace }}" +{% endif %} +{% if custom_ceph_grafana_tag is defined %} + ceph_grafana_tag: "{{ custom_ceph_grafana_tag }}" +{% endif %} +{% if custom_ceph_node_exporter_image is defined %} + ceph_node_exporter_image: "{{ custom_ceph_node_exporter_image }}" +{% endif %} +{% if custom_ceph_node_exporter_namespace is defined %} + ceph_node_exporter_namespace: "{{ custom_ceph_node_exporter_namespace }}" +{% endif %} +{% if custom_ceph_node_exporter_tag is defined %} + ceph_node_exporter_tag: "{{ custom_ceph_node_exporter_tag }}" +{% endif %} +{% if custom_ceph_prometheus_image is defined %} + ceph_prometheus_image: "{{ custom_ceph_prometheus_image }}" +{% endif %} +{% if custom_ceph_prometheus_namespace is defined %} + ceph_prometheus_namespace: "{{ custom_ceph_prometheus_namespace }}" +{% endif %} +{% if custom_ceph_prometheus_tag is defined %} + ceph_prometheus_tag: "{{ custom_ceph_prometheus_tag }}" +{% endif %} +{% if docker_openshift_namespace is defined %} + openshift_namespace: "{{ docker_openshift_namespace }}" +{% endif %} +{% if docker_openshift_tag is defined %} + openshift_tag: "{{ docker_openshift_tag }}" +{% endif %} +{% if docker_openshift_prefix is defined %} + openshift_prefix: "{{ docker_openshift_prefix }}" +{% endif %} +{% if docker_openshift_cockpit_namespace is defined %} + openshift_cockpit_namespace: "{{ docker_openshift_cockpit_namespace }}" +{% endif %} +{% if docker_openshift_cockpit_image is defined %} + openshift_cockpit_image: "{{ docker_openshift_cockpit_image }}" +{% endif %} +{% if docker_openshift_cockpit_tag is defined %} + openshift_cockpit_tag: "{{ docker_openshift_cockpit_tag }}" +{% endif %} +{% if docker_openshift_etcd_namespace is defined %} + openshift_etcd_namespace: "{{ docker_openshift_etcd_namespace }}" +{% endif %} +{% if docker_openshift_etcd_image is defined %} + openshift_etcd_image: "{{ docker_openshift_etcd_image }}" +{% endif %} +{% if docker_openshift_etcd_tag is defined %} + openshift_etcd_tag: "{{ docker_openshift_etcd_tag }}" +{% endif %} +{% if docker_openshift_gluster_namespace is defined %} + openshift_gluster_namespace: "{{ docker_openshift_gluster_namespace }}" +{% endif %} +{% if docker_openshift_gluster_image is defined %} + openshift_gluster_image: "{{ docker_openshift_gluster_image }}" +{% endif %} +{% if docker_openshift_gluster_block_image is defined %} + openshift_gluster_block_image: "{{ docker_openshift_gluster_block_image }}" +{% endif %} +{% if docker_openshift_gluster_tag is defined %} + openshift_gluster_tag: "{{ docker_openshift_gluster_tag }}" +{% endif %} +{% if docker_openshift_heketi_namespace is defined %} + openshift_heketi_namespace: "{{ docker_openshift_heketi_namespace }}" +{% endif %} +{% if docker_openshift_heketi_image is defined %} + openshift_heketi_image: "{{ docker_openshift_heketi_image }}" +{% endif %} +{% if docker_openshift_heketi_tag is defined %} + openshift_heketi_tag: "{{ docker_openshift_heketi_tag }}" +{% endif %} +{% if docker_openshift_cluster_monitoring_namespace is defined %} + openshift_cluster_monitoring_namespace: "{{ docker_openshift_cluster_monitoring_namespace }}" +{% endif %} +{% if docker_openshift_cluster_monitoring_image is defined %} + openshift_cluster_monitoring_image: "{{ docker_openshift_cluster_monitoring_image }}" +{% endif %} +{% if docker_openshift_cluster_monitoring_tag is defined %} + openshift_cluster_monitoring_tag: "{{ docker_openshift_cluster_monitoring_tag }}" +{% endif %} +{% if docker_openshift_configmap_reload_namespace is defined %} + openshift_configmap_reload_namespace: "{{ docker_openshift_configmap_reload_namespace }}" +{% endif %} +{% if docker_openshift_configmap_reload_image is defined %} + openshift_configmap_reload_image: "{{ docker_openshift_configmap_reload_image }}" +{% endif %} +{% if docker_openshift_configmap_reload_tag is defined %} + openshift_configmap_reload_tag: "{{ docker_openshift_configmap_reload_tag }}" +{% endif %} +{% if docker_openshift_prometheus_operator_namespace is defined %} + openshift_prometheus_operator_namespace: "{{ docker_openshift_prometheus_operator_namespace }}" +{% endif %} +{% if docker_openshift_prometheus_operator_image is defined %} + openshift_prometheus_operator_image: "{{ docker_openshift_prometheus_operator_image }}" +{% endif %} +{% if docker_openshift_prometheus_operator_tag is defined %} + openshift_prometheus_operator_tag: "{{ docker_openshift_prometheus_operator_tag }}" +{% endif %} +{% if docker_openshift_prometheus_config_reload_namespace is defined %} + openshift_prometheus_config_reload_namespace: "{{ docker_openshift_prometheus_config_reload_namespace }}" +{% endif %} +{% if docker_openshift_prometheus_config_reload_image is defined %} + openshift_prometheus_config_reload_image: "{{ docker_openshift_prometheus_config_reload_image }}" +{% endif %} +{% if docker_openshift_prometheus_config_reload_tag is defined %} + openshift_prometheus_config_reload_tag: "{{ docker_openshift_prometheus_config_reload_tag }}" +{% endif %} +{% if docker_openshift_prometheus_tag is defined %} + openshift_prometheus_tag: "{{ docker_openshift_prometheus_tag }}" +{% endif %} +{% if docker_openshift_prometheus_alertmanager_tag is defined %} + openshift_prometheus_alertmanager_tag: "{{ docker_openshift_prometheus_alertmanager_tag }}" +{% endif %} +{% if docker_openshift_prometheus_node_exporter_tag is defined %} + openshift_prometheus_node_exporter_tag: "{{ docker_openshift_prometheus_node_exporter_tag }}" +{% endif %} +{% if docker_openshift_oauth_proxy_tag is defined %} + openshift_oauth_proxy_tag: "{{ docker_openshift_oauth_proxy_tag }}" +{% endif %} +{% if docker_openshift_kube_rbac_proxy_namespace is defined %} + openshift_kube_rbac_proxy_namespace: "{{ docker_openshift_kube_rbac_proxy_namespace }}" +{% endif %} +{% if docker_openshift_kube_rbac_proxy_image is defined %} + openshift_kube_rbac_proxy_image: "{{ docker_openshift_kube_rbac_proxy_image }}" +{% endif %} +{% if docker_openshift_kube_rbac_proxy_tag is defined %} + openshift_kube_rbac_proxy_tag: "{{ docker_openshift_kube_rbac_proxy_tag }}" +{% endif %} +{% if docker_openshift_kube_state_metrics_namespace is defined %} + openshift_kube_state_metrics_namespace: "{{ docker_openshift_kube_state_metrics_namespace }}" +{% endif %} +{% if docker_openshift_kube_state_metrics_image is defined %} + openshift_kube_state_metrics_image: "{{ docker_openshift_kube_state_metrics_image }}" +{% endif %} +{% if docker_openshift_kube_state_metrics_tag is defined %} + openshift_kube_state_metrics_tag: "{{ docker_openshift_kube_state_metrics_tag }}" +{% endif %} +{% if docker_openshift_grafana_namespace is defined %} + openshift_grafana_namespace: "{{ docker_openshift_grafana_namespace }}" +{% endif %} +{% if docker_openshift_grafana_tag is defined %} + openshift_grafana_tag: "{{ docker_openshift_grafana_tag }}" +{% endif %} + ComputeContainerImagePrepare: + - push_destination: "{{ local_docker_registry_host }}:8787" + set: + tag: "{{ mixed_os_dlrn_hash_8 }}" +{% if job.consumer_job | default(false) | bool %} + namespace: "{{ mixed_os_registry_host_8 }}:{{ local_registry_port }}/{{ mixed_os_docker_registry_namespace_8 }}" +{% else %} + namespace: "{{ mixed_os_registry_host_8 }}/{{ mixed_os_docker_registry_namespace_8 }}" +{% endif %} + name_prefix: "{{ docker_prep_prefix }}" + name_suffix: "{{ docker_prep_suffix }}" + rhel_containers: "{{ rhel_containers }}" + ceph_images: false