diff --git a/deployment/cinder/cinder-backup-pacemaker-puppet.yaml b/deployment/cinder/cinder-backup-pacemaker-puppet.yaml index 5f390151f8..cc1a88c5ff 100644 --- a/deployment/cinder/cinder-backup-pacemaker-puppet.yaml +++ b/deployment/cinder/cinder-backup-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerCinderConfigImage: description: The container image to use for the cinder config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean CinderBackupBackend: default: swift description: The short name of the Cinder Backup backend to use. @@ -73,6 +81,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -108,12 +117,15 @@ outputs: map_merge: - get_attr: [CinderBackupBase, role_data, config_settings] - tripleo::profile::pacemaker::cinder::backup_bundle::cinder_backup_docker_image: &cinder_backup_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerCinderBackupImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerCinderBackupImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerCinderBackupImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::cinder::backup_bundle::docker_volumes: {get_attr: [CinderCommon, cinder_backup_volumes]} tripleo::profile::pacemaker::cinder::backup_bundle::docker_environment: {get_attr: [CinderCommon, cinder_backup_environment]} tripleo::profile::pacemaker::cinder::backup_bundle::container_backend: {get_param: ContainerCli} diff --git a/deployment/cinder/cinder-volume-pacemaker-puppet.yaml b/deployment/cinder/cinder-volume-pacemaker-puppet.yaml index fa4490ed65..e07c409878 100644 --- a/deployment/cinder/cinder-volume-pacemaker-puppet.yaml +++ b/deployment/cinder/cinder-volume-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerCinderConfigImage: description: The container image to use for the cinder config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -61,6 +69,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -94,12 +103,15 @@ outputs: - get_attr: [CinderBase, role_data, config_settings] - tripleo::profile::base::lvm::enable_udev: false tripleo::profile::pacemaker::cinder::volume_bundle::cinder_volume_docker_image: &cinder_volume_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerCinderVolumeImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerCinderVolumeImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerCinderVolumeImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::cinder::volume_bundle::docker_volumes: {get_attr: [CinderCommon, cinder_volume_volumes]} tripleo::profile::pacemaker::cinder::volume_bundle::docker_environment: {get_attr: [CinderCommon, cinder_volume_environment]} tripleo::profile::pacemaker::cinder::volume_bundle::container_backend: {get_param: ContainerCli} diff --git a/deployment/database/mysql-pacemaker-puppet.yaml b/deployment/database/mysql-pacemaker-puppet.yaml index ad8f3d03d7..f4b81f2491 100644 --- a/deployment/database/mysql-pacemaker-puppet.yaml +++ b/deployment/database/mysql-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerMysqlConfigImage: description: The container image to use for the mysql config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -93,6 +101,7 @@ conditions: puppet_debug_enabled: {get_param: ConfigDebug} internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} outputs: role_data: @@ -133,12 +142,15 @@ outputs: tripleo::profile::pacemaker::database::mysql::ca_file: get_param: InternalTLSCAFile tripleo::profile::pacemaker::database::mysql_bundle::mysql_docker_image: &mysql_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerMysqlImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerMysqlImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerMysqlImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::database::mysql_bundle::control_port: 3123 tripleo::profile::pacemaker::database::mysql_bundle::container_backend: {get_param: ContainerCli} tripleo::profile::pacemaker::database::mysql_bundle::bind_address: diff --git a/deployment/database/redis-pacemaker-puppet.yaml b/deployment/database/redis-pacemaker-puppet.yaml index aae59fe9b2..3fc68705cb 100644 --- a/deployment/database/redis-pacemaker-puppet.yaml +++ b/deployment/database/redis-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerRedisConfigImage: description: The container image to use for the redis config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -65,6 +73,7 @@ conditions: internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]} redis_ipv6: {get_param: RedisIPv6} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -99,12 +108,15 @@ outputs: redis::notify_service: false redis::managed_by_cluster_manager: true tripleo::profile::pacemaker::database::redis_bundle::redis_docker_image: &redis_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerRedisImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerRedisImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerRedisImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::database::redis_bundle::control_port: 3124 tripleo::profile::pacemaker::database::redis_bundle::container_backend: {get_param: ContainerCli} tripleo::stunnel::manage_service: false diff --git a/deployment/haproxy/haproxy-pacemaker-puppet.yaml b/deployment/haproxy/haproxy-pacemaker-puppet.yaml index ba8dcfbab9..fc07ff4f43 100644 --- a/deployment/haproxy/haproxy-pacemaker-puppet.yaml +++ b/deployment/haproxy/haproxy-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerHAProxyConfigImage: description: The container image to use for the haproxy config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean ServiceData: default: {} description: Dictionary packing service data @@ -110,6 +118,7 @@ conditions: - true internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -176,12 +185,15 @@ outputs: # disable the use CRL file until we can restart the container when the file expires tripleo::haproxy::crl_file: null tripleo::profile::pacemaker::haproxy_bundle::haproxy_docker_image: &haproxy_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerHAProxyImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerHAProxyImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerHAProxyImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") # BEGIN DOCKER SETTINGS puppet_config: config_volume: haproxy diff --git a/deployment/manila/manila-share-pacemaker-puppet.yaml b/deployment/manila/manila-share-pacemaker-puppet.yaml index 07f9cfce40..a29a1c3b32 100644 --- a/deployment/manila/manila-share-pacemaker-puppet.yaml +++ b/deployment/manila/manila-share-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerManilaConfigImage: description: image type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -56,6 +64,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -87,12 +96,15 @@ outputs: map_merge: - get_attr: [ManilaShareContainerBase, role_data, config_settings] - tripleo::profile::pacemaker::manila::share_bundle::manila_share_docker_image: &manila_share_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerManilaShareImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerManilaShareImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerManilaShareImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::manila::share_bundle::docker_volumes: {get_attr: [ManilaCommon, manila_share_volumes]} tripleo::profile::pacemaker::manila::share_bundle::docker_environment: {get_attr: [ManilaCommon, manila_share_environment]} tripleo::profile::pacemaker::manila::share_bundle::container_backend: {get_param: ContainerCli} diff --git a/deployment/ovn/ovn-dbs-pacemaker-puppet.yaml b/deployment/ovn/ovn-dbs-pacemaker-puppet.yaml index 8a636ad22c..a1d4352e7f 100644 --- a/deployment/ovn/ovn-dbs-pacemaker-puppet.yaml +++ b/deployment/ovn/ovn-dbs-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerOvnDbsConfigImage: description: image type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -78,6 +86,7 @@ conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -113,12 +122,15 @@ outputs: map_merge: - get_attr: [OVNDbsBase, role_data, config_settings] - tripleo::profile::pacemaker::ovn_dbs_bundle::ovn_dbs_docker_image: &ovn_dbs_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerOvnDbsImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerOvnDbsImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerOvnDbsImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") - tripleo::profile::pacemaker::ovn_dbs_bundle::nb_db_port: {get_param: OVNNorthboundServerPort} - tripleo::profile::pacemaker::ovn_dbs_bundle::sb_db_port: {get_param: OVNSouthboundServerPort} - tripleo::profile::pacemaker::ovn_dbs_bundle::container_backend: {get_param: ContainerCli} diff --git a/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml index 5b981e833c..89fe745ce6 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-notify-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerRabbitmqConfigImage: description: The container image to use for the rabbitmq config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -60,6 +68,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -94,12 +103,15 @@ outputs: - {get_attr: [RabbitmqBase, role_data, config_settings]} - rabbitmq::service_manage: false tripleo::profile::pacemaker::rabbitmq_bundle::rabbitmq_docker_image: &rabbitmq_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerRabbitmqImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerRabbitmqImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerRabbitmqImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::rabbitmq_bundle::control_port: 3122 tripleo::profile::pacemaker::rabbitmq_bundle::container_backend: {get_param: ContainerCli} service_config_settings: {get_attr: [RabbitmqBase, role_data, service_config_settings]} diff --git a/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml index e18b735c76..e187e8ea4b 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerRabbitmqConfigImage: description: The container image to use for the rabbitmq config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -60,6 +68,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -94,12 +103,15 @@ outputs: - get_attr: [RabbitMQServiceBase, role_data, config_settings] - rabbitmq::service_manage: false tripleo::profile::pacemaker::rabbitmq_bundle::rabbitmq_docker_image: &rabbitmq_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerRabbitmqImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerRabbitmqImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerRabbitmqImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::rabbitmq_bundle::control_port: 3122 tripleo::profile::pacemaker::rabbitmq_bundle::container_backend: {get_param: ContainerCli} service_config_settings: {get_attr: [RabbitmqBase, role_data, service_config_settings]} diff --git a/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml b/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml index 1a11100a7d..917402e97f 100644 --- a/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml +++ b/deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml @@ -10,6 +10,14 @@ parameters: ContainerRabbitmqConfigImage: description: The container image to use for the rabbitmq config_volume type: string + ClusterCommonTag: + default: false + description: When set to false, a pacemaker service is configured + to use a floating tag for its container image name, + e.g. 'REGISTRY/NAMESPACE/IMAGENAME:pcmklatest'. When + set to true, the service uses a floating prefix as + well, e.g. 'cluster-common-tag/IMAGENAME:pcmklatest'. + type: boolean EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set @@ -60,6 +68,7 @@ parameters: conditions: puppet_debug_enabled: {get_param: ConfigDebug} docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']} + common_tag_enabled: {equals: [{get_param: ClusterCommonTag}, true]} resources: @@ -94,12 +103,15 @@ outputs: - {get_attr: [RabbitmqBase, role_data, config_settings]} - rabbitmq::service_manage: false tripleo::profile::pacemaker::rabbitmq_bundle::rabbitmq_docker_image: &rabbitmq_image_pcmklatest - list_join: - - ':' - - - yaql: - data: {get_param: ContainerRabbitmqImage} - expression: $.data.rightSplit(separator => ":", maxSplits => 1)[0] - - 'pcmklatest' + yaql: + data: + if: + - common_tag_enabled + - yaql: + data: {get_param: ContainerRabbitmqImage} + expression: concat("cluster-common-tag/", $.data.rightSplit(separator => "/", maxSplits => 1)[1]) + - {get_param: ContainerRabbitmqImage} + expression: concat($.data.rightSplit(separator => ":", maxSplits => 1)[0], ":pcmklatest") tripleo::profile::pacemaker::rabbitmq_bundle::control_port: 3122 tripleo::profile::pacemaker::rabbitmq_bundle::container_backend: {get_param: ContainerCli} service_config_settings: {get_attr: [RabbitmqBase, role_data, service_config_settings]} diff --git a/releasenotes/notes/pacemaker-cluster-common-tag-45c4e8a6e7b08735.yaml b/releasenotes/notes/pacemaker-cluster-common-tag-45c4e8a6e7b08735.yaml new file mode 100644 index 0000000000..d16c347a05 --- /dev/null +++ b/releasenotes/notes/pacemaker-cluster-common-tag-45c4e8a6e7b08735.yaml @@ -0,0 +1,12 @@ +--- +features: + - HA services use a special container image name derived from the one + configured in Heat parameter plus a fixed tag part, i.e. + '//:pcmklatest'. To implement rolling + update without service disruption, this 'pcmklatest' tag is adjusted + automatically during minor update every time a new image is pulled. + A new Heat parameter ClusterCommonTag can now control the prefix part + of the container image name. When set to true, the container name + for HA services will look like + 'container-common-tag/:pcmklatest'. This allows rolling + update of HA services even when the changes in Heat.