heat_template_version: 2016-10-14 description: 'Upgrade for Pacemaker deployments' parameters: servers: type: json input_values: type: json description: input values for the software deployments UpgradeLevelNovaCompute: type: string description: Nova Compute upgrade level default: '' MySqlMajorUpgrade: type: string description: Can be auto,yes,no and influences if the major upgrade should do or detect an automatic mysql upgrade constraints: - allowed_values: ['auto', 'yes', 'no'] default: 'auto' IgnoreCephUpgradeWarnings: type: boolean default: false description: If enabled, Ceph upgrade will be forced even though cluster or PGs status is not clean KeepSaharaServicesOnUpgrade: type: boolean default: true description: Whether to keep Sahara services when upgrading controller nodes from mitaka to newton resources: # TODO(jistr): for Mitaka->Newton upgrades and further we can use # map_merge with input_values instead of feeding params into scripts # via str_replace on bash snippets CephMonUpgradeConfig: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - str_replace: template: | #!/bin/bash ignore_ceph_upgrade_warnings='IGNORE_CEPH_UPGRADE_WARNINGS' params: IGNORE_CEPH_UPGRADE_WARNINGS: {get_param: IgnoreCephUpgradeWarnings} - get_file: major_upgrade_ceph_mon.sh CephMonUpgradeDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: servers: {get_param: [servers, Controller]} config: {get_resource: CephMonUpgradeConfig} input_values: {get_param: input_values} update_policy: batch_create: max_batch_size: 1 rolling_update: max_batch_size: 1 ControllerPacemakerUpgradeConfig_Step1: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - str_replace: template: | #!/bin/bash upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE' params: UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute} - str_replace: template: | #!/bin/bash mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE' params: MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade} - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_check.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_1.sh ControllerPacemakerUpgradeDeployment_Step1: type: OS::Heat::SoftwareDeploymentGroup depends_on: CephMonUpgradeDeployment properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step1} input_values: {get_param: input_values} BlockStorageUpgradeConfig: type: OS::Heat::SoftwareConfig depends_on: ControllerPacemakerUpgradeDeployment_Step1 properties: group: script config: list_join: - '' - - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_block_storage.sh BlockStorageUpgradeDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: servers: {get_param: [servers, BlockStorage]} config: {get_resource: BlockStorageUpgradeConfig} input_values: {get_param: input_values} ControllerPacemakerUpgradeConfig_Step2: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - str_replace: template: | #!/bin/bash upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE' params: UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute} - str_replace: template: | #!/bin/bash mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE' params: MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade} - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_check.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_2.sh ControllerPacemakerUpgradeDeployment_Step2: type: OS::Heat::SoftwareDeploymentGroup depends_on: BlockStorageUpgradeDeployment properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step2} input_values: {get_param: input_values} ControllerPacemakerUpgradeConfig_Step3: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_3.sh ControllerPacemakerUpgradeDeployment_Step3: type: OS::Heat::SoftwareDeploymentGroup depends_on: ControllerPacemakerUpgradeDeployment_Step2 properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step3} input_values: {get_param: input_values} ControllerPacemakerUpgradeConfig_Step4: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_4.sh ControllerPacemakerUpgradeDeployment_Step4: type: OS::Heat::SoftwareDeploymentGroup depends_on: ControllerPacemakerUpgradeDeployment_Step3 properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step4} input_values: {get_param: input_values} ControllerPacemakerUpgradeConfig_Step5: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_5.sh ControllerPacemakerUpgradeDeployment_Step5: type: OS::Heat::SoftwareDeploymentGroup depends_on: ControllerPacemakerUpgradeDeployment_Step4 properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step5} input_values: {get_param: input_values} ControllerPacemakerUpgradeConfig_Step6: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - str_replace: template: | #!/bin/bash keep_sahara_services_on_upgrade='KEEP_SAHARA_SERVICES_ON_UPGRADE' params: KEEP_SAHARA_SERVICES_ON_UPGRADE: {get_param: KeepSaharaServicesOnUpgrade} - get_file: pacemaker_common_functions.sh - get_file: major_upgrade_pacemaker_migrations.sh - get_file: major_upgrade_controller_pacemaker_6.sh ControllerPacemakerUpgradeDeployment_Step6: type: OS::Heat::SoftwareDeploymentGroup depends_on: ControllerPacemakerUpgradeDeployment_Step5 properties: servers: {get_param: [servers, Controller]} config: {get_resource: ControllerPacemakerUpgradeConfig_Step6} input_values: {get_param: input_values}