OS::TripleO::Services::GnocchiMetricd: ../puppet/services/pacemaker/gnocchi-metricd.yaml
OS::TripleO::Services::GnocchiStatsd: ../puppet/services/pacemaker/gnocchi-statsd.yaml
OS::TripleO::Services::MySQL: ../puppet/services/pacemaker/database/mysql.yaml
+ OS::TripleO::Services::Horizon: ../puppet/services/pacemaker/horizon.yaml
Internal:
vip_param: NovaApi
uri_suffixes:
- '': /v2.1/%(tenant_id)s
+ '': /v2.1
Public:
vip_param: Public
uri_suffixes:
- '': /v2.1/%(tenant_id)s
+ '': /v2.1
Admin:
vip_param: NovaApi
uri_suffixes:
- '': /v2.1/%(tenant_id)s
+ '': /v2.1
port: 8774
NovaVNCProxy:
IP_ADDRESS: {get_param: NovaApiVirtualIP}
- ':'
- get_param: [EndpointMap, NovaAdmin, port]
- - /v2.1/%(tenant_id)s
+ - /v2.1
uri_no_suffix:
list_join:
- ''
IP_ADDRESS: {get_param: NovaApiVirtualIP}
- ':'
- get_param: [EndpointMap, NovaInternal, port]
- - /v2.1/%(tenant_id)s
+ - /v2.1
uri_no_suffix:
list_join:
- ''
IP_ADDRESS: {get_param: PublicVirtualIP}
- ':'
- get_param: [EndpointMap, NovaPublic, port]
- - /v2.1/%(tenant_id)s
+ - /v2.1
uri_no_suffix:
list_join:
- ''
ServerMetadata: {get_param: ServerMetadata}
SchedulerHints: {get_param: ControllerSchedulerHints}
ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
+ ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
ComputeServiceChain:
SchedulerHints: {get_param: NovaComputeSchedulerHints}
NodeIndex: '%index%'
ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
+ ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
BlockStorageServiceChain:
type: OS::TripleO::Services
SchedulerHints: {get_param: BlockStorageSchedulerHints}
NodeIndex: '%index%'
ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
+ ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
ObjectStorageServiceChain:
type: OS::TripleO::Services
SchedulerHints: {get_param: ObjectStorageSchedulerHints}
NodeIndex: '%index%'
ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
+ ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
CephStorageServiceChain:
type: OS::TripleO::Services
SchedulerHints: {get_param: CephStorageSchedulerHints}
NodeIndex: '%index%'
ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
+ ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
ControllerIpListMap:
type: OS::TripleO::Network::Ports::NetIpListMap
ServiceConfigSettings:
type: json
default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
ConfigCommand:
type: string
description: Command which will be run whenever configuration data changes
- heat_config_%{::deploy_config_name}
- ceph_extraconfig
- extraconfig
+ - service_names
- service_configs
- ceph_cluster # provided by CephClusterConfig
- ceph
- network
merge_behavior: deeper
datafiles:
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
service_configs:
mapped_data: {get_param: ServiceConfigSettings}
common:
ServiceConfigSettings:
type: json
default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
ConfigCommand:
type: string
description: Command which will be run whenever configuration data changes
- heat_config_%{::deploy_config_name}
- volume_extraconfig
- extraconfig
+ - service_names
- service_configs
- volume
- all_nodes # provided by allNodesConfig
- network
merge_behavior: deeper
datafiles:
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
service_configs:
mapped_data: {get_param: ServiceConfigSettings}
common:
ServiceConfigSettings:
type: json
default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
ConfigCommand:
type: string
description: Command which will be run whenever configuration data changes
- heat_config_%{::deploy_config_name}
- compute_extraconfig
- extraconfig
+ - service_names
- service_configs
- compute
- ceph_cluster # provided by CephClusterConfig
- neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
merge_behavior: deeper
datafiles:
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
service_configs:
mapped_data: {get_param: ServiceConfigSettings}
compute_extraconfig:
ServiceConfigSettings:
type: json
default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
ConfigCommand:
type: string
description: Command which will be run whenever configuration data changes
corosync_ipv6: {get_param: CorosyncIPv6}
memcached_ipv6: {get_param: MemcachedIPv6}
nova_password: {get_param: NovaPassword}
- nova_dsn:
- list_join:
- - ''
- - - {get_param: [EndpointMap, MysqlInternal, protocol]}
- - '://nova:'
- - {get_param: NovaPassword}
- - '@'
- - {get_param: [EndpointMap, MysqlInternal, host]}
- - '/nova'
- nova_api_dsn:
- list_join:
- - ''
- - - {get_param: [EndpointMap, MysqlInternal, protocol]}
- - '://nova_api:'
- - {get_param: NovaPassword}
- - '@'
- - {get_param: [EndpointMap, MysqlInternal, host]}
- - '/nova_api'
upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
instance_name_template: {get_param: InstanceNameTemplate}
nova_public_url: {get_param: [EndpointMap, NovaPublic, uri]}
- controller_extraconfig
- extraconfig
- service_configs
+ - service_names
- controller
- database
- object
- midonet_data #Optionally provided by AllNodesExtraConfig
merge_behavior: deeper
datafiles:
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
service_configs:
mapped_data: {get_param: ServiceConfigSettings}
controller_extraconfig:
nova::api::api_bind_address: {get_input: nova_api_network}
nova::api::metadata_listen: {get_input: nova_metadata_network}
nova::api::admin_password: {get_input: nova_password}
- nova::database_connection: {get_input: nova_dsn}
- nova::api_database_connection: {get_input: nova_api_dsn}
nova::glance_api_servers: {get_input: glance_api_servers}
nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
nova::api::instance_name_template: {get_input: instance_name_template}
nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
nova::vncproxy::host: {get_input: nova_api_network}
- nova::db::mysql::password: {get_input: nova_password}
- nova::db::mysql_api::password: {get_input: nova_password}
nova_enable_db_purge: {get_input: nova_enable_db_purge}
nova::keystone::auth::public_url: {get_input: nova_public_url}
nova::keystone::auth::internal_url: {get_input: nova_internal_url}
# Hiera data here applies to all compute nodes
-nova::host: "%{::fqdn}"
nova::notify_on_state_change: 'vm_and_task_state'
nova::notification_driver: messagingv2
nova::compute::instance_usage_audit: true
ceilometer::agent::auth::auth_tenant_name: 'service'
ceilometer::agent::auth::auth_endpoint_type: 'internalURL'
-neutron::host: "%{::fqdn}"
-
compute_classes: []
-# Nova
-nova::db::mysql::user: nova
-nova::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
-nova::db::mysql::dbname: nova
-nova::db::mysql::allowed_hosts:
- - '%'
- - "%{hiera('mysql_bind_host')}"
-
-nova::db::mysql_api::user: nova_api
-nova::db::mysql_api::host: "%{hiera('mysql_virtual_ip')}"
-nova::db::mysql_api::dbname: nova_api
-nova::db::mysql_api::allowed_hosts:
- - '%'
- - "%{hiera('mysql_bind_host')}"
-
# Aodh
aodh::db::mysql::user: aodh
aodh::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
Pacemaker::Resource::Service[$::aodh::params::listener_service_name]],
}
- # The next step is to include this class in puppet-tripleo profiles directly.
- # We couldn't do it directly in puppet-tripleo, otherwise CI would have break because
- # of Puppet duplicated resource.
- include ::tripleo::profile::pacemaker::apache
-
#VSM
if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
pacemaker::resource::ocf { 'vsm-p' :
role_data:
description: Role data for the Ceilometer Central Agent role.
value:
+ service_name: ceilometer-agent-central
config_settings:
map_merge:
- get_attr: [CeilometerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Ceilometer Compute Agent role.
value:
+ service_name: ceilometer-agent-compute
config_settings:
get_attr: [CeilometerServiceBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceilometer Notification Agent role.
value:
+ service_name: ceilometer-agent-notification
config_settings:
get_attr: [CeilometerServiceBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceilometer API role.
value:
+ service_name: ceilometer-api
config_settings:
get_attr: [CeilometerServiceBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceilometer role.
value:
+ service_name: ceilometer-base
config_settings:
ceilometer::db::database_connection:
list_join:
ceilometer::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
ceilometer::rabbit_port: {get_param: RabbitClientPort}
ceilometer::db::mysql::user: ceilometer
- ceilometer::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+ ceilometer::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
ceilometer::db::mysql::dbname: ceilometer
ceilometer::db::mysql::allowed_hosts:
- '%'
role_data:
description: Role data for the Ceilometer Collector role.
value:
+ service_name: ceilometer-collector
config_settings:
get_attr: [CeilometerServiceBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceilometer Expirer role.
value:
+ service_name: ceilometer-expirer
config_settings:
get_attr: [CeilometerServiceBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceph base service.
value:
+ service_name: ceph-base
config_settings:
tripleo::profile::base::ceph::ceph_ipv6: {get_param: CephIPv6}
tripleo::profile::base::ceph::enable_ceph_storage: {get_param: ControllerEnableCephStorage}
role_data:
description: Role data for the Cinder OSD service.
value:
+ service_name: ceph-client
config_settings:
get_attr: [CephBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Ceph External service.
value:
+ service_name: ceph-external
config_settings:
tripleo::profile::base::ceph::ceph_mon_host: {get_param: CephExternalMonHost}
ceph::profile::params::fsid: {get_param: CephClusterFSID}
role_data:
description: Role data for the Ceph Monitor service.
value:
+ service_name: ceph-mon
config_settings:
map_merge:
- get_attr: [CephBase, role_data, config_settings]
role_data:
description: Role data for the Cinder OSD service.
value:
+ service_name: ceph-osd
config_settings:
get_attr: [CephBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Cinder API role.
value:
+ service_name: cinder-api
config_settings:
map_merge:
- get_attr: [CinderBase, role_data, config_settings]
role_data:
description: Role data for the Cinder base service.
value:
+ service_name: cinder-base
config_settings:
cinder::database_connection:
list_join:
cinder::rabbit_password: {get_param: RabbitPassword}
cinder::rabbit_port: {get_param: RabbitClientPort}
cinder::db::mysql::user: cinder
- cinder::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+ cinder::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
cinder::db::mysql::dbname: cinder
cinder::db::mysql::allowed_hosts:
- '%'
role_data:
description: Role data for the Cinder Scheduler role.
value:
+ service_name: cinder-scheduler
config_settings:
get_attr: [CinderBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Cinder Volume role.
value:
+ service_name: cinder-volume
config_settings:
map_merge:
- get_attr: [CinderBase, role_data, config_settings]
role_data:
description: Role data for the MongoDB base service.
value:
+ service_name: mongodb-base
config_settings:
mongodb::server::nojournal: {get_param: MongoDbNoJournal}
mongodb::server::ipv6: {get_param: MongoDbIPv6}
role_data:
description: Service mongodb using composable services.
value:
+ service_name: mongodb
config_settings:
map_merge:
- get_attr: [MongoDbBase, role_data, config_settings]
role_data:
description: Service MySQL using composable services.
value:
+ service_name: mysql
config_settings:
step_config: |
include ::tripleo::profile::base::database::mysql
role_data:
description: Role data for the redis role.
value:
+ service_name: redis-base
config_settings:
redis::requirepass: {get_param: RedisPassword}
redis::masterauth: {get_param: RedisPassword}
role_data:
description: Role data for the redis role.
value:
+ service_name: redis
config_settings:
map_merge:
- get_attr: [RedisBase, role_data, config_settings]
role_data:
description: Role data for the Glance API role.
value:
+ service_name: glance-api
config_settings:
glance::api::database_connection:
list_join:
role_data:
description: Role data for the Glance Registry role.
value:
+ service_name: glance-registry
config_settings:
glance::registry::database_connection:
list_join:
glance::registry::debug: {get_param: Debug}
glance::registry::workers: {get_param: GlanceWorkers}
glance::db::mysql::user: glance
- glance::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+ glance::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
glance::db::mysql::dbname: glance
glance::db::mysql::allowed_hosts:
- '%'
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-api
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Shared role data for the Heat services.
value:
+ service_name: gnocchi-base
config_settings:
#Gnocchi engine
gnocchi::debug: {get_input: debug}
gnocchi::statsd::flush_delay: 10
gnocchi::statsd::archive_policy_name: 'low'
gnocchi::db::mysql::user: gnocchi
- gnocchi::db::mysql::host: {get_param: [EndpointMap, MysqlVirtual, host]}
+ gnocchi::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
gnocchi::db::mysql::dbname: gnocchi
gnocchi::db::mysql::allowed_hosts:
- '%'
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-metricd
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-statsd
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Role data for the HAproxy role.
value:
+ service_name: haproxy
step_config: |
include ::tripleo::profile::base::haproxy
role_data:
description: Role data for the Heat CloudFormation API role.
value:
+ service_name: heat-api-cfn
config_settings:
map_merge:
- get_attr: [HeatBase, role_data, config_settings]
role_data:
description: Role data for the Heat Cloudwatch API role.
value:
+ service_name: heat-api-cloudwatch
config_settings:
map_merge:
- get_attr: [HeatBase, role_data, config_settings]
role_data:
description: Role data for the Heat API role.
value:
+ service_name: heat-api
config_settings:
map_merge:
- get_attr: [HeatBase, role_data, config_settings]
role_data:
description: Shared role data for the Heat services.
value:
+ service_name: heat-base
config_settings:
heat::rabbit_userid: {get_param: RabbitUserName}
heat::rabbit_password: {get_param: RabbitPassword}
role_data:
description: Role data for the Heat Engine role.
value:
+ service_name: heat-engine
config_settings:
map_merge:
- get_attr: [HeatBase, role_data, config_settings]
heat::db::mysql::password: {get_param: HeatPassword}
heat::keystone::domain::domain_password: {get_param: HeatStackDomainAdminPassword}
heat::db::mysql::user: heat
- heat::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+ heat::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
heat::db::mysql::dbname: heat
heat::db::mysql::allowed_hosts:
- '%'
role_data:
description: Role data for the Horizon role.
value:
+ service_name: horizon
config_settings:
horizon::allowed_hosts: {get_param: HorizonAllowedHosts}
neutron::plugins::ml2::mechanism_drivers:
role_data:
description: Role data for the Ironic API role.
value:
+ service_name: ironic-api
config_settings:
map_merge:
- get_attr: [IronicBase, role_data, config_settings]
role_data:
description: Role data for the Ironic role.
value:
+ service_name: ironic-base
config_settings:
ironic::database_connection:
list_join:
role_data:
description: Role data for the Ironic conductor role.
value:
+ service_name: ironic-conductor
config_settings:
map_merge:
- get_attr: [IronicBase, role_data, config_settings]
role_data:
description: Role data for the Keepalived role.
value:
+ service_name: keepalived
step_config: |
include ::tripleo::profile::base::keepalived
role_data:
description: Role data for the Kernel modules
value:
+ service_name: kernel
step_config: |
include ::tripleo::profile::base::kernel
role_data:
description: Role data for the Keystone role.
value:
+ service_name: keystone
config_settings:
keystone::database_connection:
list_join:
role_data:
description: Role data for the Memcached role.
value:
+ service_name: memcached
config_settings:
step_config: |
include ::tripleo::profile::base::memcached
role_data:
description: Role data for the Neutron base service.
value:
+ service_name: neutron-base
config_settings:
neutron::rabbit_password: {get_param: RabbitPassword}
neutron::rabbit_user: {get_param: RabbitUserName}
params:
PLUGINS: {get_param: NeutronServicePlugins}
neutron::debug: {get_param: Debug}
+ neutron::host: '"%{::fqdn}"'
role_data:
description: Role data for the Neutron Compute Plumgrid plugin
value:
+ service_name: neutron-compute-plugin-midonet
config_settings:
step_config: |
include ::tripleo::profile::base::neutron::agents::midonet
role_data:
description: Role data for the Neutron Compute Nuage plugin
value:
+ service_name: neutron-compute-plugin-nuage
config_settings:
tripleo::profile::base::neutron::agents::nuage::nova_os_tenant_name: 'service'
tripleo::profile::base::neutron::agents::nuage::nova_os_password: {get_param: NovaPassword}
role_data:
description: Role data for the Neutron Compute OpenContrail plugin
value:
+ service_name: neutron-compute-plugin-opencontrail
config_settings:
step_config: |
include ::tripleo::profile::base::neutron::opencontrail::vrouter
role_data:
description: Role data for the Neutron Compute Plumgrid plugin
value:
+ service_name: neutron-compute-plugin-plumgrid
config_settings:
step_config: |
include tripleo::profile::base::neutron::plumgrid
role_data:
description: Role data for the Neutron DHCP agent service.
value:
+ service_name: neutron-dhcp
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron L3 agent service.
value:
+ service_name: neutron-l3
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Metadata agent service.
value:
+ service_name: neutron-metadata
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Midonet plugin and services
value:
+ service_name: neutron-midonet
config_settings:
tripleo::profile::base::neutron::midonet::admin_password: {get_param: AdminPassword}
tripleo::profile::base::neutron::midonet::keystone_admin_token: {get_param: AdminToken}
role_data:
description: Role data for the Neutron OVS agent service.
value:
+ service_name: neutron-ovs-agent
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron ML2 plugin.
value:
+ service_name: neutron-plugin-ml2
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Nuage plugin
value:
+ service_name: neutron-plugin-nuage
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Opencontrail plugin
value:
+ service_name: neutron-plugin-opencontrail
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Plumgrid plugin
value:
+ service_name: neutron-plugin-plumgrid
config_settings:
neutron::plugins::plumgrid::connection:
list_join:
description: Allow automatic l3-agent failover
type: string
NeutronL3HA:
- default: 'False'
- description: Whether to enable l3-agent HA
- type: string
+ default: false
+ description: Whether to enable HA for virtual routers
+ type: boolean
NovaPassword:
description: The password for the nova service and db account, used by nova-api.
type: string
role_data:
description: Role data for the Neutron Server agent service.
value:
+ service_name: neutron-server
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
neutron::server::notifications::password: {get_param: NovaPassword}
neutron::db::mysql::password: {get_param: NeutronPassword}
neutron::db::mysql::user: neutron
- neutron::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+ neutron::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
neutron::db::mysql::dbname: ovs_neutron
neutron::db::mysql::allowed_hosts:
- '%'
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova API service.
value:
+ service_name: nova-api
config_settings:
map_merge:
- get_attr: [NovaBase, role_data, config_settings]
OpenStack Nova base service. Shared for all Nova services.
parameters:
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ NovaPassword:
+ description: The password for the nova service and db account, used by nova-api.
+ type: string
+ hidden: true
RabbitPassword:
description: The password for RabbitMQ
type: string
outputs:
role_data:
- description: Role data for the Neutron base service.
+ description: Role data for the Nova base service.
value:
+ service_name: nova-base
config_settings:
nova::rabbit_password: {get_param: RabbitPassword}
nova::rabbit_user: {get_param: RabbitUserName}
nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
nova::rabbit_port: {get_param: RabbitClientPort}
+ nova::database_connection:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+ - '://nova:'
+ - {get_param: NovaPassword}
+ - '@'
+ - {get_param: [EndpointMap, MysqlInternal, host]}
+ - '/nova'
+ nova::api_database_connection:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+ - '://nova_api:'
+ - {get_param: NovaPassword}
+ - '@'
+ - {get_param: [EndpointMap, MysqlInternal, host]}
+ - '/nova_api'
+ nova::db::mysql::password: {get_input: nova_password}
+ nova::db::mysql::user: nova
+ nova::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
+ nova::db::mysql::dbname: nova
+ nova::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+ nova::db::mysql_api::password: {get_input: nova_password}
+ nova::db::mysql_api::user: nova_api
+ nova::db::mysql_api::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
+ nova::db::mysql_api::dbname: nova_api
+ nova::db::mysql_api::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
nova::debug: {get_param: Debug}
+ nova::host: '"%{::fqdn}"'
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova Compute service.
value:
+ service_name: nova-compute
config_settings:
map_merge:
- get_attr: [NovaBase, role_data, config_settings]
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova Conductor service.
value:
+ service_name: nova-conductor
config_settings:
map_merge:
- get_attr: [NovaBase, role_data, config_settings]
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova Consoleauth service.
value:
+ service_name: nova-consoleauth
config_settings:
get_attr: [NovaBase, role_data, config_settings]
step_config: |
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Libvirt service.
value:
+ service_name: nova-libvirt
config_settings:
map_merge:
- get_attr: [NovaBase, role_data, config_settings]
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova Scheduler service.
value:
+ service_name: nova-scheduler
config_settings:
map_merge:
- get_attr: [NovaBase, role_data, config_settings]
resources:
NovaBase:
type: ./nova-base.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
outputs:
role_data:
description: Role data for the Nova Vncproxy service.
value:
+ service_name: nova-vncproxy
config_settings:
get_attr: [NovaBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Pacemaker role.
value:
+ service_name: pacemaker
config_settings:
step_config: |
include ::tripleo::profile::base::pacemaker
role_data:
description: Role data for the Ceilometer Central Agent pacemaker role.
value:
+ service_name: ceilometer-agent-central
config_settings:
map_merge:
- get_attr: [CeilometerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Ceilometer Notification Agent pacemaker role.
value:
+ service_name: ceilometer-agent-notification
config_settings:
map_merge:
- get_attr: [CeilometerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Ceilometer API pacemaker role.
value:
+ service_name: ceilometer-api
config_settings:
map_merge:
- get_attr: [CeilometerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Ceilometer Collector pacemaker role.
value:
+ service_name: ceilometer-collector
config_settings:
map_merge:
- get_attr: [CeilometerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Cinder API role.
value:
+ service_name: cinder-api
config_settings:
map_merge:
- get_attr: [CinderApiBase, role_data, config_settings]
role_data:
description: Role data for the Cinder Scheduler role.
value:
+ service_name: cinder-scheduler
config_settings:
map_merge:
- get_attr: [CinderSchedulerBase, role_data, config_settings]
role_data:
description: Role data for the Cinder Volume role.
value:
+ service_name: cinder-volume
config_settings:
map_merge:
- get_attr: [CinderVolumeBase, role_data, config_settings]
role_data:
description: Service mongodb using composable services.
value:
+ service_name: mongodb
config_settings:
map_merge:
- get_attr: [MongoDbBase, role_data, config_settings]
role_data:
description: Service MySQL with Pacemaker using composable services.
value:
+ service_name: mysql
config_settings:
step_config: |
include ::tripleo::profile::pacemaker::database::mysql
role_data:
description: Role data for the Redis pacemaker role.
value:
+ service_name: redis
config_settings:
map_merge:
- get_attr: [RedisBase, role_data, config_settings]
- - tripleo::profile::pacemaker::database::redis::redis_vip: {get_input: redis_vip}
- redis::service_manage: false
+ - redis::service_manage: false
redis::notify_service: false
step_config: |
include ::tripleo::profile::pacemaker::database::redis
role_data:
description: Role data for the Glance role.
value:
+ service_name: glance-api
config_settings:
map_merge:
- get_attr: [GlanceApiBase, role_data, config_settings]
role_data:
description: Role data for the Glance role.
value:
+ service_name: glance-registry
config_settings:
map_merge:
- get_attr: [GlanceRegistryBase, role_data, config_settings]
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-api
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-metricd
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Role data for the Gnocchi role.
value:
+ service_name: gnocchi-statsd
config_settings:
map_merge:
- get_attr: [GnocchiServiceBase, role_data, config_settings]
role_data:
description: Role data for the HAproxy with pacemaker role.
value:
+ service_name: haproxy
config_settings:
map_merge:
- get_attr: [LoadbalancerServiceBase, role_data, config_settings]
role_data:
description: Role data for the Heat CloudFormation API role.
value:
+ service_name: heat-api-cfn
config_settings:
map_merge:
- get_attr: [HeatApiCfnBase, role_data, config_settings]
role_data:
description: Role data for the Heat Cloudwatch API role.
value:
+ service_name: heat-api-cloudwatch
config_settings:
map_merge:
- get_attr: [HeatApiCloudwatchBase, role_data, config_settings]
role_data:
description: Role data for the Heat API role.
value:
+ service_name: heat-api
config_settings:
map_merge:
- get_attr: [HeatApiBase, role_data, config_settings]
role_data:
description: Role data for the Heat engine role.
value:
+ service_name: heat-engine
config_settings:
map_merge:
- get_attr: [HeatEngineBase, role_data, config_settings]
--- /dev/null
+heat_template_version: 2016-04-08
+
+description: >
+ Horizon service with Pacemaker configured with Puppet.
+
+parameters:
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+
+resources:
+
+ HorizonBase:
+ type: ../horizon.yaml
+ properties:
+ EndpointMap: {get_param: EndpointMap}
+
+outputs:
+ role_data:
+ description: Role data for the Horizon role.
+ value:
+ service_name: horizon
+ config_settings:
+ get_attr: [HorizonBase, role_data, config_settings]
+ step_config: |
+ include ::tripleo::profile::base::horizon
+ include ::tripleo::profile::pacemaker::apache
role_data:
description: Role data for the Keystone pacemaker role.
value:
+ service_name: keystone
config_settings:
map_merge:
- get_attr: [KeystoneServiceBase, role_data, config_settings]
role_data:
description: Role data for the Memcached pacemaker role.
value:
+ service_name: memcached
config_settings:
map_merge:
- get_attr: [MemcachedServiceBase, role_data, config_settings]
role_data:
description: Role data for the Neutron DHCP role.
value:
+ service_name: neutron-dhcp
config_settings:
map_merge:
- get_attr: [NeutronDhcpBase, role_data, config_settings]
role_data:
description: Role data for the Neutron L3 role.
value:
+ service_name: neutron-l3
config_settings:
map_merge:
- get_attr: [NeutronL3Base, role_data, config_settings]
role_data:
description: Role data for the Neutron Metadata role.
value:
+ service_name: neutron-metadata
config_settings:
map_merge:
- get_attr: [NeutronMetadataBase, role_data, config_settings]
role_data:
description: Role data for the Neutron Midonet plugin.
value:
+ service_name: neutron-midonet
config_settings:
map_merge:
- get_attr: [NeutronMidonetBase, role_data, config_settings]
role_data:
description: Role data for the Neutron OVS agent service.
value:
+ service_name: neutron-ovs-agent
config_settings:
get_attr: [NeutronOvsBase, role_data, config_settings]
step_config: |
role_data:
description: Role data for the Neutron ML2 plugin.
value:
+ service_name: neutron-plugin-ml2
config_settings:
map_merge:
- get_attr: [NeutronMl2Base, role_data, config_settings]
role_data:
description: Role data for the Neutron Nuage plugin.
value:
+ service_name: neutron-plugin-nuage
config_settings:
map_merge:
- get_attr: [NeutronPluginNuageBase, role_data, config_settings]
role_data:
description: Role data for the Neutron OpenContrail plugin.
value:
+ service_name: neutron-plugin-opencontrail
config_settings:
map_merge:
- get_attr: [NeutronPluginOpenContrail, role_data, config_settings]
role_data:
description: Role data for the Neutron PLUMgrid plugin.
value:
+ service_name: neutron-plugin-plumgrid
config_settings:
map_merge:
- get_attr: [NeutronPluginPlumgridBase, role_data, config_settings]
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
+ NeutronL3HA:
+ default: true
+ description: Whether to enable HA for virtual routers
+ type: boolean
resources:
role_data:
description: Role data for the Neutron Server.
value:
+ service_name: neutron-server
config_settings:
map_merge:
- get_attr: [NeutronServerBase, role_data, config_settings]
- neutron::server::enabled: false
neutron::server::manage_service: false
+ neutron::server::l3_ha: {get_param: NeutronL3HA}
step_config: |
include ::tripleo::profile::pacemaker::neutron::server
role_data:
description: Role data for the Nova API role.
value:
+ service_name: nova-api
config_settings:
map_merge:
- get_attr: [NovaApiBase, role_data, config_settings]
role_data:
description: Role data for the Nova Conductor role.
value:
+ service_name: nova-conductor
config_settings:
map_merge:
- get_attr: [NovaConductorBase, role_data, config_settings]
role_data:
description: Role data for the Nova Consoleauth role.
value:
+ service_name: nova-consoleauth
config_settings:
map_merge:
- get_attr: [NovaConsoleauthBase, role_data, config_settings]
role_data:
description: Role data for the Nova Scheduler role.
value:
+ service_name: nova-scheduler
config_settings:
map_merge:
- get_attr: [NovaSchedulerBase, role_data, config_settings]
role_data:
description: Role data for the Nova Vncproxy role.
value:
+ service_name: nova-vncproxy
config_settings:
map_merge:
- get_attr: [NovaVncproxyBase, role_data, config_settings]
role_data:
description: Role data for the RabbitMQ pacemaker role.
value:
+ service_name: rabbitmq
config_settings:
map_merge:
- get_attr: [RabbitMQServiceBase, role_data, config_settings]
role_data:
description: Role data for the Sahara API role.
value:
+ service_name: sahara-api
config_settings:
map_merge:
- get_attr: [SaharaApiBase, role_data, config_settings]
role_data:
description: Role data for the Sahara Engine role.
value:
+ service_name: sahara-engine
config_settings:
map_merge:
- get_attr: [SaharaEngineBase, role_data, config_settings]
role_data:
description: Role data for the RabbitMQ role.
value:
+ service_name: rabbitmq
config_settings:
rabbitmq::file_limit: {get_param: RabbitFDLimit}
rabbitmq::default_user: {get_param: RabbitUserName}
role_data:
description: Role data for the Sahara API role.
value:
+ service_name: sahara-api
config_settings:
map_merge:
- get_attr: [SaharaBase, role_data, config_settings]
role_data:
description: Role data for the Sahara base service.
value:
+ service_name: sahara-base
config_settings:
sahara::rabbit_password: {get_param: RabbitPassword}
sahara::rabbit_user: {get_param: RabbitUserName}
role_data:
description: Role data for the Sahara Engine role.
value:
+ service_name: sahara-engine
config_settings:
map_merge:
- get_attr: [SaharaBase, role_data, config_settings]
sahara::database_connection: *sahara_dsn
sahara::db::mysql::password: {get_param: SaharaPassword}
sahara::db::mysql::user: sahara
- sahara::db::mysql::host: {get_param: [EndpointMap, MysqlVirtual, host]}
+ sahara::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
sahara::db::mysql::dbname: sahara
sahara::db::mysql::allowed_hosts:
- '%'
role_data:
description: Combined Role data for this set of services.
value:
+ service_names: {get_attr: [ServiceChain, role_data, service_name]}
config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
step_config: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}
role_data:
description: Role data for the SNMP services
value:
+ service_name: snmp
config_settings:
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
role_data:
description: Role data for the Swift proxy service.
value:
+ service_name: swift-proxy
config_settings:
# Swift
swift::proxy::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri]}
role_data:
description: Role data for the Swift Proxy role.
value:
+ service_name: swift-storage
config_settings:
# Swift
swift::storage::all::mount_check: {get_param: SwiftMountCheck}
role_data:
description: Role ntp using composable services.
value:
+ service_name: ntp
config_settings:
ntp::ntpservers: {get_param: NtpServer}
step_config: |
role_data:
description: Timezone role using composable services.
value:
+ service_name: timezone
config_settings:
timezone::timezone: {get_param: TimeZone}
step_config: |
ServiceConfigSettings:
type: json
default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
ConfigCommand:
type: string
description: Command which will be run whenever configuration data changes
- heat_config_%{::deploy_config_name}
- object_extraconfig
- extraconfig
+ - service_names
- service_configs
- object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
- network
merge_behavior: deeper
datafiles:
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
service_configs:
mapped_data: {get_param: ServiceConfigSettings}
common:
print('Usage %s <yaml file or directory>' % sys.argv[0])
sys.exit(1)
+
+def validate_service(filename, tpl):
+ if 'outputs' in tpl and 'role_data' in tpl['outputs']:
+ if 'value' not in tpl['outputs']['role_data']:
+ print('ERROR: invalid role_data for filename: %s'
+ % filename)
+ return 1
+ role_data = tpl['outputs']['role_data']['value']
+ if 'service_name' not in role_data:
+ print('ERROR: service_name is required in role_data for %s.'
+ % filename)
+ return 1
+ if (role_data['service_name'] !=
+ os.path.basename(filename).split('.')[0]):
+ print('ERROR: service_name should match file name for service: %s.'
+ % filename)
+ return 1
+ return 0
+
+
def validate(filename):
print('Validating %s' % filename)
+ retval = 0
try:
tpl = yaml.load(open(filename).read())
+
+ if (filename.startswith('./puppet/services/') and
+ filename != './puppet/services/services.yaml'):
+ retval = validate_service(filename, tpl)
+
except Exception:
print(traceback.format_exc())
return 1
# yaml is OK, now walk the parameters and output a warning for unused ones
for p in tpl.get('parameters', {}):
str_p = '\'%s\'' % p
- in_resources = str_p in str(tpl.get('resources', {}))
- in_outputs = str_p in str(tpl.get('outputs', {}))
+ in_resources = str_p in str(tpl.get('resources', {}))
+ in_outputs = str_p in str(tpl.get('outputs', {}))
if not in_resources and not in_outputs:
print('Warning: parameter %s in template %s appears to be unused'
% (p, filename))
- return 0
+ return retval
if len(sys.argv) < 2:
exit_usage()