heat_template_version: wallaby description: > OpenStack containerized Gnocchi Metricd service parameters: ContainerGnocchiMetricdImage: description: image type: string tags: - role_specific ContainerGnocchiConfigImage: description: The container image to use for the gnocchi config_volume type: string tags: - role_specific GnocchiMetricdLoggingSource: type: json default: tag: openstack.gnocchi.metricd file: /var/log/containers/gnocchi/gnocchi-metricd.log 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. Use parameter_merge_strategies to merge it with the defaults. 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 CephClientUserName: default: openstack type: string CephClusterName: type: string default: ceph description: The Ceph cluster name. constraints: - allowed_pattern: "[a-zA-Z0-9]+" description: > The Ceph cluster name must be at least 1 character and contain only letters and numbers. GnocchiFileBasePath: default: '/var/lib/gnocchi' description: Path to use when file driver is used. This could be NFS or a flat file. type: string GnocchiNfsEnabled: default: false description: > When using GnocchiBackend 'file', mount NFS share for data storage type: boolean MonitoringSubscriptionGnocchiMetricd: default: 'overcloud-gnocchi-metricd' type: string GnocchiMetricdWorkers: default: '%{::os_workers}' description: Number of workers for Gnocchi MetricD type: string MetricProcessingDelay: default: 30 description: Delay between processing metrics. type: number CephConfigPath: type: string default: "/var/lib/tripleo-config/ceph" description: | The path where the Ceph Cluster config files are stored on the host. conditions: nfs_backend_enabled: {equals: [{get_param: GnocchiNfsEnabled}, true]} resources: ContainersCommon: type: ../containers-common.yaml MySQLClient: type: ../../deployment/database/mysql-client.yaml GnocchiServiceBase: type: ./gnocchi-base.yaml properties: ServiceData: {get_param: ServiceData} ServiceNetMap: {get_param: ServiceNetMap} EndpointMap: {get_param: EndpointMap} RoleName: {get_param: RoleName} RoleParameters: {get_param: RoleParameters} RoleParametersValue: type: OS::Heat::Value properties: type: json value: map_replace: - map_replace: - ContainerGnocchiMetricdImage: ContainerGnocchiMetricdImage ContainerGnocchiConfigImage: ContainerGnocchiConfigImage - values: {get_param: [RoleParameters]} - values: ContainerGnocchiMetricdImage: {get_param: ContainerGnocchiMetricdImage} ContainerGnocchiConfigImage: {get_param: ContainerGnocchiConfigImage} outputs: role_data: description: Role data for the Gnocchi API role. value: service_name: gnocchi_metricd config_settings: map_merge: - get_attr: [GnocchiServiceBase, role_data, config_settings] - gnocchi::metricd::workers: {get_param: GnocchiMetricdWorkers} gnocchi::metricd::metric_processing_delay: {get_param: MetricProcessingDelay} monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiMetricd} service_config_settings: map_merge: - get_attr: [GnocchiServiceBase, role_data, service_config_settings] - rsyslog: tripleo_logging_sources_gnocchi_metricd: - {get_param: GnocchiMetricdLoggingSource} # BEGIN DOCKER SETTINGS puppet_config: config_volume: gnocchi puppet_tags: gnocchi_config step_config: list_join: - "\n" - - "include tripleo::profile::base::gnocchi::metricd" - {get_attr: [MySQLClient, role_data, step_config]} config_image: {get_attr: [RoleParametersValue, value, ContainerGnocchiConfigImage]} kolla_config: /var/lib/kolla/config_files/gnocchi_metricd.json: command: /usr/bin/gnocchi-metricd config_files: - source: "/var/lib/kolla/config_files/src/*" dest: "/" merge: true preserve_properties: true - source: "/var/lib/kolla/config_files/src-ceph/" dest: "/etc/ceph/" merge: true preserve_properties: true permissions: - path: /var/log/gnocchi owner: gnocchi:gnocchi recurse: true - path: str_replace: template: /etc/ceph/CLUSTER.client.USER.keyring params: CLUSTER: {get_param: CephClusterName} USER: {get_param: CephClientUserName} owner: gnocchi:gnocchi perm: '0600' docker_config: step_5: gnocchi_metricd: start_order: 1 image: {get_attr: [RoleParametersValue, value, ContainerGnocchiMetricdImage]} net: host privileged: false restart: always healthcheck: test: /openstack/healthcheck volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} - - /var/lib/kolla/config_files/gnocchi_metricd.json:/var/lib/kolla/config_files/config.json:ro - /var/lib/config-data/puppet-generated/gnocchi:/var/lib/kolla/config_files/src:ro - /var/log/containers/gnocchi:/var/log/gnocchi:z - list_join: - ':' - - {get_param: CephConfigPath} - - '/var/lib/kolla/config_files/src-ceph' - - 'ro' - str_replace: template: GNOCCHI_FILE_BASE_PATH:GNOCCHI_FILE_BASE_PATH:SE_FLAGS params: GNOCCHI_FILE_BASE_PATH: {get_param: GnocchiFileBasePath} SE_FLAGS: if: - nfs_backend_enabled - 'shared' - 'shared,z' environment: KOLLA_CONFIG_STRATEGY: COPY_ALWAYS host_prep_tasks: - name: create persistent directories file: path: "{{ item.path }}" state: directory setype: "{{ item.setype }}" mode: "{{ item.mode }}" with_items: - { 'path': /var/log/containers/gnocchi, 'setype': container_file_t, 'mode': '0750' } - name: create persistent data directory file: path: {get_param: GnocchiFileBasePath} state: directory setype: container_file_t - name: ensure ceph configurations exist file: path: {get_param: CephConfigPath} state: directory upgrade_tasks: [] external_upgrade_tasks: - when: - step|int == 1 tags: - never - system_upgrade_transfer_data - system_upgrade_stop_services block: - name: Stop gnocchi metricd container import_role: name: tripleo_container_stop vars: tripleo_containers_to_stop: - gnocchi_metricd tripleo_delegate_to: "{{ groups['gnocchi_metricd'] | default([]) }}"