heat_template_version: wallaby description: > MySQL HA clustercheck service deployment using puppet This service is used by HAProxy in a HA scenario to report whether the local galera node is synced parameters: ContainerClustercheckImage: description: image type: string ContainerClustercheckConfigImage: description: The container image to use for the clustercheck config_volume type: string EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json ServiceData: default: {} description: Dictionary packing service data type: json ServiceNetMap: default: {} description: Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry. This mapping overrides those in ServiceNetMapDefaults. type: json RoleName: default: '' description: Role name on which the service is applied type: string RoleParameters: default: {} description: Parameters specific to the role type: json ClustercheckListener: default: 'socat' description: How to expose the clustercheck service over TCP type: string constraints: - allowed_values: ['socat', 'xinetd'] resources: ContainersCommon: type: ../containers-common.yaml MysqlPuppetBase: type: ../database/mysql-pacemaker-puppet.yaml properties: EndpointMap: {get_param: EndpointMap} ServiceData: {get_param: ServiceData} ServiceNetMap: {get_param: ServiceNetMap} RoleName: {get_param: RoleName} RoleParameters: {get_param: RoleParameters} conditions: socat_listener: {equals: [{get_param: ClustercheckListener}, 'socat']} outputs: role_data: description: Containerized service clustercheck using composable services. value: service_name: clustercheck config_settings: map_merge: - get_attr: [MysqlPuppetBase, role_data, config_settings] - tripleo::profile::pacemaker::clustercheck::bind_address: str_replace: template: "%{hiera('$FQDN$NETWORK')}" params: $FQDN: {if: ["socat_listener", "", "fqdn_"]} $NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]} # BEGIN DOCKER SETTINGS # puppet_config: config_volume: clustercheck puppet_tags: file # set this even though file is the default step_config: "include tripleo::profile::pacemaker::clustercheck" config_image: {get_param: ContainerClustercheckConfigImage} kolla_config: /var/lib/kolla/config_files/clustercheck.json: command: if: - socat_listener # Note: we can't quotes multiple parameters in kolla command, hence the workaround - bash -c $* -- eval source /etc/sysconfig/clustercheck; exec socat "$TRIPLEO_SOCAT_BIND" exec:/usr/bin/clustercheck,nofork - /usr/sbin/xinetd -dontfork config_files: - source: "/var/lib/kolla/config_files/src/*" dest: "/" merge: true preserve_properties: true docker_config: step_2: clustercheck: start_order: 1 image: {get_param: ContainerClustercheckImage} restart: always net: host healthcheck: test: /openstack/healthcheck volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} - - /var/lib/kolla/config_files/clustercheck.json:/var/lib/kolla/config_files/config.json - /var/lib/config-data/puppet-generated/clustercheck:/var/lib/kolla/config_files/src:ro - /var/lib/mysql:/var/lib/mysql environment: KOLLA_CONFIG_STRATEGY: COPY_ALWAYS host_prep_tasks: upgrade_tasks: update_tasks: # Nothing: It's not managed by pacemaker, so let tripleo_container_manage do it. external_upgrade_tasks: - 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'] | default([]) }}"