tripleo-heat-templates/deployment/gnocchi/gnocchi-metricd-container-puppet.yaml
Takashi Kajinami 190420f1bb Fix inconsistent <service>Workers
Currently the <service>Workers parameters are implemented in different
ways according to services. Because of this, these parameters enforce
different type(number vs string) and behave differently for a specific
value such as 0. These are quite confusing for users.

This change introduces the standard implementation for all Workers
parameters so that the parameters behave consistently in all services.

This also introduces the following changes as side-effects.

- Outdated description of some workers parameter is removed. Currently
  workers are limited to a certain number(such as 12) even in a system
  with many CPU cores

- Default value of BarbicanWorkers is effectively lowered down to
  $::os_workers from $::processorcount, to use the consistent default
  workers for all services.

Change-Id: Ie7a12a297e00efebca017d51afb9bf9e8c56ee50
2022-09-27 12:28:44 +09:00

241 lines
8.2 KiB
YAML

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: 0
description: Number of workers for Gnocchi MetricD
type: number
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]}
gnocchi_metricd_workers_set:
not: {equals: [{get_param: GnocchiMetricdWorkers}, 0]}
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:
if:
- gnocchi_metricd_workers_set
- {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'] | difference(groups['excluded_overcloud']) }}"