heat_template_version: queens description: > OpenStack containerized etcd services parameters: DockerEtcdImage: description: image type: string DockerEtcdConfigImage: description: The container image to use for the etcd 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 DefaultPasswords: default: {} 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 EtcdInitialClusterToken: description: Initial cluster token for the etcd cluster during bootstrap. type: string hidden: true resources: EtcdPuppetBase: type: ../../puppet/services/etcd.yaml properties: EndpointMap: {get_param: EndpointMap} ServiceData: {get_param: ServiceData} ServiceNetMap: {get_param: ServiceNetMap} DefaultPasswords: {get_param: DefaultPasswords} EtcdInitialClusterToken: {get_param: EtcdInitialClusterToken} outputs: role_data: description: Role data for the etcd role. value: service_name: {get_attr: [EtcdPuppetBase, role_data, service_name]} logging_source: {get_attr: [EtcdPuppetBase, role_data, logging_source]} logging_groups: {get_attr: [EtcdPuppetBase, role_data, logging_groups]} config_settings: map_merge: - {get_attr: [EtcdPuppetBase, role_data, config_settings]} - etcd::manage_service: false # BEGIN DOCKER SETTINGS puppet_config: config_volume: etcd config_image: &etcd_config_image {get_param: DockerEtcdConfigImage} step_config: list_join: - "\n" - - "['Etcd_key'].each |String $val| { noop_resource($val) }" - get_attr: [EtcdPuppetBase, role_data, step_config] kolla_config: /var/lib/kolla/config_files/etcd.json: command: /usr/bin/etcd --config-file /etc/etcd/etcd.yml config_files: - source: "/var/lib/kolla/config_files/src/*" dest: "/" merge: true preserve_properties: true permissions: - path: /var/lib/etcd owner: etcd:etcd recurse: true docker_config: step_2: etcd: image: {get_param: DockerEtcdImage} net: host privileged: false restart: always volumes: - /var/lib/etcd:/var/lib/etcd - /etc/localtime:/etc/localtime:ro - /var/lib/kolla/config_files/etcd.json:/var/lib/kolla/config_files/config.json:ro - /var/lib/config-data/puppet-generated/etcd/:/var/lib/kolla/config_files/src:ro environment: - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS docker_puppet_tasks: # Etcd keys initialization occurs only on single node step_2: config_volume: 'etcd_init_tasks' puppet_tags: 'etcd_key' step_config: get_attr: [EtcdPuppetBase, role_data, step_config] config_image: *etcd_config_image volumes: - /var/lib/config-data/etcd/etc/etcd/:/etc/etcd:ro - /var/lib/etcd:/var/lib/etcd:ro host_prep_tasks: - name: create /var/lib/etcd file: path: /var/lib/etcd state: directory upgrade_tasks: - name: Check if etcd is deployed command: systemctl is-enabled --quiet etcd tags: common ignore_errors: True register: etcd_enabled - name: "PreUpgrade step0,validation: Check if etcd is running" command: systemctl is-active --quiet etcd when: - step|int == 0 - etcd_enabled.rc == 0 tags: validation - name: Stop and disable etcd service when: - step|int == 2 - etcd_enabled.rc == 0 service: name=etcd state=stopped enabled=no