Generate MySQL client config if service requires database

Services that access database have to read an extra MySQL configuration file
/etc/my.cnf.d/tripleo.cnf which holds client-only settings, like client bind
address and SSL configuration. The configuration file is thus used by
containerized services, but also by non-containerized services that still
run on the host.

In order to generate that client configuration file appropriately both on the
host and for containers, 1) the MySQLClient service must be included by the
role; 2) every containerized service which uses the database must include the
mysql::client profile in the docker-puppet config generation step.

By including the mysql::client profile in each containerized service, we ensure
that any change in configuration file will be reflected in the service's
/var/lib/config-data/{service}, and that paunch will restart the service's
container automatically.

We now only rely on MySQLClient from puppet/services, to make it possible to
generate /etc/my.cnf.d/tripleo.cnf on the host, and to set the hiera keys that
drive the generation of that config file in containers via docker-puppet.

We include a new YAML validation step to ensure that any service which depends
on MySQL will initialize the mysql::client profile during the docker-puppet
step.

Change-Id: I0dab1dc9caef1e749f1c42cfefeba179caebc8d7
This commit is contained in:
Damien Ciabrini 2017-07-07 10:44:26 -04:00
parent 017f8b9b47
commit 0cb45d65c6
44 changed files with 359 additions and 116 deletions

View File

@ -49,6 +49,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
AodhApiPuppetBase:
type: ../../puppet/services/aodh-api.yaml
properties:
@ -68,7 +71,10 @@ outputs:
- get_attr: [AodhApiPuppetBase, role_data, config_settings]
- apache::default_vhost: false
step_config: &step_config
get_attr: [AodhApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [AodhApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [AodhApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
AodhEvaluatorBase:
type: ../../puppet/services/aodh-evaluator.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [AodhEvaluatorBase, role_data, config_settings]
step_config: &step_config
get_attr: [AodhEvaluatorBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [AodhEvaluatorBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [AodhEvaluatorBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
AodhListenerBase:
type: ../../puppet/services/aodh-listener.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [AodhListenerBase, role_data, config_settings]
step_config: &step_config
get_attr: [AodhListenerBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [AodhListenerBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [AodhListenerBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
AodhNotifierBase:
type: ../../puppet/services/aodh-notifier.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [AodhNotifierBase, role_data, config_settings]
step_config: &step_config
get_attr: [AodhNotifierBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [AodhNotifierBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [AodhNotifierBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -49,6 +49,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
CinderBase:
type: ../../puppet/services/cinder-api.yaml
properties:
@ -66,7 +69,10 @@ outputs:
service_name: {get_attr: [CinderBase, role_data, service_name]}
config_settings: {get_attr: [CinderBase, role_data, config_settings]}
step_config: &step_config
get_attr: [CinderBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [CinderBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [CinderBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
CinderBase:
type: ../../puppet/services/cinder-backup.yaml
properties:
@ -60,7 +63,10 @@ outputs:
service_name: {get_attr: [CinderBase, role_data, service_name]}
config_settings: {get_attr: [CinderBase, role_data, config_settings]}
step_config: &step_config
get_attr: [CinderBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [CinderBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [CinderBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
CinderBase:
type: ../../puppet/services/cinder-scheduler.yaml
properties:
@ -60,7 +63,10 @@ outputs:
service_name: {get_attr: [CinderBase, role_data, service_name]}
config_settings: {get_attr: [CinderBase, role_data, config_settings]}
step_config: &step_config
get_attr: [CinderBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [CinderBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [CinderBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -51,6 +51,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
CinderBase:
type: ../../puppet/services/cinder-volume.yaml
properties:
@ -75,6 +78,7 @@ outputs:
- "\n"
- - "include ::tripleo::profile::base::lvm"
- get_attr: [CinderBase, role_data, step_config]
- get_attr: [MySQLClient, role_data, step_config]
service_config_settings: {get_attr: [CinderBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
CongressBase:
type: ../../puppet/services/congress.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [CongressBase, role_data, config_settings]
step_config: &step_config
get_attr: [CongressBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [CongressBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [CongressBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -1,62 +0,0 @@
heat_template_version: pike
description: >
Configuration for containerized MySQL clients
parameters:
DockerMysqlClientConfigImage:
description: The container image to use for the mysql_client config_volume
type: string
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
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
EnableInternalTLS:
type: boolean
default: false
InternalTLSCAFile:
default: '/etc/ipa/ca.crt'
type: string
description: Specifies the default CA cert to use if TLS is used for
services in the internal network.
outputs:
role_data:
description: Role for setting mysql client parameters
value:
service_name: mysql_client
config_settings:
tripleo::profile::base::database::mysql::client::mysql_client_bind_address: {get_param: [ServiceNetMap, MysqlNetwork]}
tripleo::profile::base::database::mysql::client::enable_ssl: {get_param: EnableInternalTLS}
tripleo::profile::base::database::mysql::client::ssl_ca: {get_param: InternalTLSCAFile}
# BEGIN DOCKER SETTINGS #
step_config: ""
puppet_config:
config_volume: mysql_client
puppet_tags: file # set this even though file is the default
step_config: "include ::tripleo::profile::base::database::mysql::client"
config_image: {get_param: DockerMysqlClientConfigImage}
# no need for a docker config, this service only generates configuration files
docker_config: {}

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
Ec2ApiPuppetBase:
type: ../../puppet/services/ec2-api.yaml
properties:
@ -58,7 +61,10 @@ outputs:
service_name: {get_attr: [Ec2ApiPuppetBase, role_data, service_name]}
config_settings: {get_attr: [Ec2ApiPuppetBase, role_data, config_settings]}
step_config: &step_config
get_attr: [Ec2ApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [Ec2ApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [Ec2ApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -50,6 +50,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
GlanceApiPuppetBase:
type: ../../puppet/services/glance-api.yaml
properties:
@ -70,7 +73,10 @@ outputs:
- get_attr: [GlanceApiPuppetBase, role_data, config_settings]
- glance::api::sync_db: false
step_config: &step_config
get_attr: [GlanceApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [GlanceApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [GlanceApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
GnocchiMetricdBase:
type: ../../puppet/services/gnocchi-metricd.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [GnocchiMetricdBase, role_data, service_name]}
config_settings: {get_attr: [GnocchiMetricdBase, role_data, config_settings]}
step_config: &step_config
get_attr: [GnocchiMetricdBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [GnocchiMetricdBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [GnocchiMetricdBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
GnocchiStatsdBase:
type: ../../puppet/services/gnocchi-statsd.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [GnocchiStatsdBase, role_data, service_name]}
config_settings: {get_attr: [GnocchiStatsdBase, role_data, config_settings]}
step_config: &step_config
get_attr: [GnocchiStatsdBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [GnocchiStatsdBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [GnocchiStatsdBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
HeatBase:
type: ../../puppet/services/heat-engine.yaml
properties:
@ -63,7 +66,10 @@ outputs:
- get_attr: [HeatBase, role_data, config_settings]
- apache::default_vhost: false
step_config: &step_config
get_attr: [HeatBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [HeatBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [HeatBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
IronicApiBase:
type: ../../puppet/services/ironic-api.yaml
properties:
@ -62,7 +65,10 @@ outputs:
- get_attr: [IronicApiBase, role_data, config_settings]
- apache::default_vhost: false
step_config: &step_config
get_attr: [IronicApiBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [IronicApiBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [IronicApiBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
IronicConductorBase:
type: ../../puppet/services/ironic-conductor.yaml
properties:
@ -69,7 +72,10 @@ outputs:
- ironic::pxe::http_root: /var/lib/ironic/httpboot
- ironic::conductor::http_root: /var/lib/ironic/httpboot
step_config: &step_config
get_attr: [IronicConductorBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [IronicConductorBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [IronicConductorBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -55,6 +55,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
KeystoneBase:
type: ../../puppet/services/keystone.yaml
properties:
@ -83,6 +86,7 @@ outputs:
- "\n"
- - "['Keystone_user', 'Keystone_endpoint', 'Keystone_domain', 'Keystone_tenant', 'Keystone_user_role', 'Keystone_role', 'Keystone_service'].each |String $val| { noop_resource($val) }"
- {get_attr: [KeystoneBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [KeystoneBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
ManilaApiPuppetBase:
type: ../../puppet/services/manila-api.yaml
properties:
@ -57,7 +60,10 @@ outputs:
service_name: {get_attr: [ManilaApiPuppetBase, role_data, service_name]}
config_settings: {get_attr: [ManilaApiPuppetBase, role_data, config_settings]}
step_config: &step_config
{get_attr: [ManilaApiPuppetBase, role_data, step_config]}
list_join:
- "\n"
- - {get_attr: [ManilaApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [ManilaApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
ManilaSchedulerPuppetBase:
type: ../../puppet/services/manila-scheduler.yaml
properties:
@ -57,7 +60,10 @@ outputs:
service_name: {get_attr: [ManilaSchedulerPuppetBase, role_data, service_name]}
config_settings: {get_attr: [ManilaSchedulerPuppetBase, role_data, config_settings]}
step_config: &step_config
{get_attr: [ManilaSchedulerPuppetBase, role_data, step_config]}
list_join:
- "\n"
- - {get_attr: [ManilaSchedulerPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [ManilaSchedulerPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
ManilaBase:
type: ../../puppet/services/manila-share.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [ManilaBase, role_data, service_name]}
config_settings: {get_attr: [ManilaBase, role_data, config_settings]}
step_config: &step_config
get_attr: [ManilaBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [ManilaBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [ManilaBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
MistralApiBase:
type: ../../puppet/services/mistral-api.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [MistralApiBase, role_data, config_settings]
step_config: &step_config
get_attr: [MistralApiBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [MistralApiBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [MistralApiBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
MistralBase:
type: ../../puppet/services/mistral-engine.yaml
properties:
@ -62,7 +65,10 @@ outputs:
map_merge:
- get_attr: [MistralBase, role_data, config_settings]
step_config: &step_config
get_attr: [MistralBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [MistralBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [MistralBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
MistralBase:
type: ../../puppet/services/mistral-executor.yaml
properties:
@ -62,7 +65,10 @@ outputs:
map_merge:
- get_attr: [MistralBase, role_data, config_settings]
step_config: &step_config
get_attr: [MistralBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [MistralBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [MistralBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -49,6 +49,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NeutronBase:
type: ../../puppet/services/neutron-api.yaml
properties:
@ -68,7 +71,10 @@ outputs:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
step_config: &step_config
get_attr: [NeutronBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NeutronBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NeutronBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaApiBase:
type: ../../puppet/services/nova-api.yaml
properties:
@ -69,6 +72,7 @@ outputs:
- "\n"
- - "['Nova_cell_v2'].each |String $val| { noop_resource($val) }"
- {get_attr: [NovaApiBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaApiBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -47,6 +47,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaComputeBase:
type: ../../puppet/services/nova-compute.yaml
properties:
@ -66,7 +69,10 @@ outputs:
config_settings:
get_attr: [NovaComputeBase, role_data, config_settings]
step_config: &step_config
get_attr: [NovaComputeBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaComputeBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
puppet_config:
config_volume: nova_libvirt
puppet_tags: nova_config,nova_paste_api_ini

View File

@ -43,6 +43,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaConductorBase:
type: ../../puppet/services/nova-conductor.yaml
properties:
@ -60,7 +63,10 @@ outputs:
service_name: {get_attr: [NovaConductorBase, role_data, service_name]}
config_settings: {get_attr: [NovaConductorBase, role_data, config_settings]}
step_config: &step_config
get_attr: [NovaConductorBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaConductorBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaConductorBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaConsoleauthPuppetBase:
type: ../../puppet/services/nova-consoleauth.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [NovaConsoleauthPuppetBase, role_data, service_name]}
config_settings: {get_attr: [NovaConsoleauthPuppetBase, role_data, config_settings]}
step_config: &step_config
get_attr: [NovaConsoleauthPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaConsoleauthPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaConsoleauthPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaIronicBase:
type: ../../puppet/services/nova-ironic.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [NovaIronicBase, role_data, service_name]}
config_settings: {get_attr: [NovaIronicBase, role_data, config_settings]}
step_config: &step_config
get_attr: [NovaIronicBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaIronicBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
puppet_config:
config_volume: nova
puppet_tags: nova_config,nova_paste_api_ini

View File

@ -74,6 +74,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaLibvirtBase:
type: ../../puppet/services/nova-libvirt.yaml
properties:
@ -93,7 +96,10 @@ outputs:
config_settings:
get_attr: [NovaLibvirtBase, role_data, config_settings]
step_config: &step_config
get_attr: [NovaLibvirtBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaLibvirtBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
puppet_config:
config_volume: nova_libvirt
puppet_tags: libvirtd_config,nova_config,file,exec

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaPlacementBase:
type: ../../puppet/services/nova-placement.yaml
properties:
@ -62,7 +65,10 @@ outputs:
- get_attr: [NovaPlacementBase, role_data, config_settings]
- apache::default_vhost: false
step_config: &step_config
get_attr: [NovaPlacementBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaPlacementBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaPlacementBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaSchedulerBase:
type: ../../puppet/services/nova-scheduler.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [NovaSchedulerBase, role_data, service_name]}
config_settings: {get_attr: [NovaSchedulerBase, role_data, config_settings]}
step_config: &step_config
get_attr: [NovaSchedulerBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaSchedulerBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaSchedulerBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
NovaVncProxyPuppetBase:
type: ../../puppet/services/nova-vnc-proxy.yaml
properties:
@ -59,7 +62,10 @@ outputs:
service_name: {get_attr: [NovaVncProxyPuppetBase, role_data, service_name]}
config_settings: {get_attr: [NovaVncProxyPuppetBase, role_data, config_settings]}
step_config: &step_config
get_attr: [NovaVncProxyPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [NovaVncProxyPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [NovaVncProxyPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -50,6 +50,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
OctaviaApiPuppetBase:
type: ../../puppet/services/octavia-api.yaml
properties:
@ -67,7 +70,10 @@ outputs:
service_name: {get_attr: [OctaviaApiPuppetBase, role_data, service_name]}
config_settings: {get_attr: [OctaviaApiPuppetBase, role_data, config_settings]}
step_config: &step_config
get_attr: [OctaviaApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [OctaviaApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [OctaviaApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -52,6 +52,9 @@ parameters:
resources:
MySQLClient:
type: ../../../puppet/services/database/mysql-client.yaml
CinderBackupBase:
type: ../../../puppet/services/cinder-backup.yaml
properties:
@ -82,7 +85,11 @@ outputs:
puppet_config:
config_volume: cinder
puppet_tags: cinder_config,file,concat,file_line
step_config: {get_attr: [CinderBackupBase, role_data, step_config]}
step_config:
list_join:
- "\n"
- - {get_attr: [CinderBackupBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
config_image: {get_param: DockerCinderConfigImage}
kolla_config:
/var/lib/kolla/config_files/cinder_backup.json:

View File

@ -48,6 +48,9 @@ parameters:
resources:
MySQLClient:
type: ../../../puppet/services/database/mysql-client.yaml
CinderBase:
type: ../../../puppet/services/cinder-volume.yaml
properties:
@ -76,7 +79,11 @@ outputs:
puppet_config:
config_volume: cinder
puppet_tags: cinder_config,file,concat,file_line
step_config: {get_attr: [CinderBase, role_data, step_config]}
step_config:
list_join:
- "\n"
- - {get_attr: [CinderBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
config_image: {get_param: DockerCinderConfigImage}
kolla_config:
/var/lib/kolla/config_files/cinder_volume.json:

View File

@ -51,6 +51,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
PankoApiPuppetBase:
type: ../../puppet/services/panko-api.yaml
properties:
@ -71,7 +74,10 @@ outputs:
- get_attr: [PankoApiPuppetBase, role_data, config_settings]
- apache::default_vhost: false
step_config: &step_config
get_attr: [PankoApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [PankoApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [PankoApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
SaharaApiPuppetBase:
type: ../../puppet/services/sahara-api.yaml
properties:
@ -60,7 +63,10 @@ outputs:
- get_attr: [SaharaApiPuppetBase, role_data, config_settings]
- sahara::sync_db: false
step_config: &step_config
get_attr: [SaharaApiPuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [SaharaApiPuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [SaharaApiPuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
SaharaEnginePuppetBase:
type: ../../puppet/services/sahara-engine.yaml
properties:
@ -60,7 +63,10 @@ outputs:
- get_attr: [SaharaEnginePuppetBase, role_data, config_settings]
- sahara::sync_db: false
step_config: &step_config
get_attr: [SaharaEnginePuppetBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [SaharaEnginePuppetBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [SaharaEnginePuppetBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS #
puppet_config:

View File

@ -42,6 +42,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
TackerBase:
type: ../../puppet/services/tacker.yaml
properties:
@ -61,7 +64,10 @@ outputs:
map_merge:
- get_attr: [TackerBase, role_data, config_settings]
step_config: &step_config
get_attr: [TackerBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [TackerBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [TackerBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -49,6 +49,9 @@ resources:
ContainersCommon:
type: ./containers-common.yaml
MySQLClient:
type: ../../puppet/services/database/mysql-client.yaml
ZaqarBase:
type: ../../puppet/services/zaqar.yaml
properties:
@ -66,7 +69,10 @@ outputs:
service_name: {get_attr: [ZaqarBase, role_data, service_name]}
config_settings: {get_attr: [ZaqarBase, role_data, config_settings]}
step_config: &step_config
get_attr: [ZaqarBase, role_data, step_config]
list_join:
- "\n"
- - {get_attr: [ZaqarBase, role_data, step_config]}
- {get_attr: [MySQLClient, role_data, step_config]}
service_config_settings: {get_attr: [ZaqarBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:

View File

@ -33,7 +33,6 @@ resource_registry:
OS::TripleO::Services::NeutronDhcpAgent: ../docker/services/neutron-dhcp.yaml
OS::TripleO::Services::NeutronL3Agent: ../docker/services/neutron-l3.yaml
OS::TripleO::Services::MySQL: ../docker/services/database/mysql.yaml
OS::TripleO::Services::MySQLClient: ../docker/services/database/mysql-client.yaml
OS::TripleO::Services::RabbitMQ: ../docker/services/rabbitmq.yaml
OS::TripleO::Services::MongoDb: ../docker/services/database/mongodb.yaml
OS::TripleO::Services::Redis: ../docker/services/database/redis.yaml

View File

@ -207,6 +207,22 @@ def validate_hci_computehci_role(hci_role_filename, hci_role_tpl):
return 0
def search(item, check_item, check_key):
if check_item(item):
return True
elif isinstance(item, list):
for i in item:
if search(i, check_item, check_key):
return True
elif isinstance(item, dict):
for k in item.keys():
if check_key(k, item[k]):
return True
elif search(item[k], check_item, check_key):
return True
return False
def validate_mysql_connection(settings):
no_op = lambda *args: False
error_status = [0]
@ -228,25 +244,69 @@ def validate_mysql_connection(settings):
error_status[0] = 1
return False
def search(item, check_item, check_key):
if check_item(item):
return True
elif isinstance(item, list):
for i in item:
if search(i, check_item, check_key):
return True
elif isinstance(item, dict):
for k in item.keys():
if check_key(k, item[k]):
return True
elif search(item[k], check_item, check_key):
return True
return False
search(settings, no_op, validate_mysql_uri)
return error_status[0]
def validate_docker_service_mysql_usage(filename, tpl):
no_op = lambda *args: False
included_res = []
def match_included_res(item):
is_config_setting = isinstance(item, list) and len(item) > 1 and \
item[1:] == ['role_data', 'config_settings']
if is_config_setting:
included_res.append(item[0])
return is_config_setting
def match_use_mysql_protocol(items):
return items == ['EndpointMap', 'MysqlInternal', 'protocol']
all_content = []
def read_all(incfile, inctpl):
# search for included content
content = inctpl['outputs']['role_data']['value'].get('config_settings',{})
all_content.append(content)
included_res[:] = []
if search(content, match_included_res, no_op):
files = [inctpl['resources'][x]['type'] for x in included_res]
# parse included content
for r, f in zip(included_res, files):
# disregard class names, only consider file names
if 'OS::' in f:
continue
newfile = os.path.normpath(os.path.dirname(incfile)+'/'+f)
newtmp = yaml.load(open(newfile).read())
read_all(newfile, newtmp)
read_all(filename, tpl)
if search(all_content, match_use_mysql_protocol, no_op):
# ensure this service includes the mysqlclient service
resources = tpl['resources']
mysqlclient = [x for x in resources
if resources[x]['type'].endswith('mysql-client.yaml')]
if len(mysqlclient) == 0:
print("ERROR: containerized service %s uses mysql but "
"resource mysql-client.yaml is not used"
% filename)
return 1
# and that mysql::client puppet module is included in puppet-config
match_mysqlclient = \
lambda x: x == [mysqlclient[0], 'role_data', 'step_config']
role_data = tpl['outputs']['role_data']
puppet_config = role_data['value']['puppet_config']['step_config']
if not search(puppet_config, match_mysqlclient, no_op):
print("ERROR: containerized service %s uses mysql but "
"puppet_config section does not include "
"::tripleo::profile::base::database::mysql::client"
% filename)
return 1
return 0
def validate_docker_service(filename, tpl):
if 'outputs' in tpl and 'role_data' in tpl['outputs']:
if 'value' not in tpl['outputs']['role_data']:
@ -275,6 +335,10 @@ def validate_docker_service(filename, tpl):
return 1
if 'puppet_config' in role_data:
if validate_docker_service_mysql_usage(filename, tpl):
print('ERROR: could not validate use of mysql service for %s.'
% filename)
return 1
puppet_config = role_data['puppet_config']
for key in puppet_config:
if key in REQUIRED_DOCKER_PUPPET_CONFIG_SECTIONS: