summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/compute-post.yaml8
-rw-r--r--docker/firstboot/start_docker_agents.sh13
-rw-r--r--environments/net-bond-with-vlans-no-external.yaml2
-rw-r--r--environments/net-single-nic-with-vlans-no-external.yaml2
-rw-r--r--environments/network-isolation.yaml2
-rw-r--r--extraconfig/tasks/major_upgrade_pacemaker_init.yaml3
-rwxr-xr-xextraconfig/tasks/pacemaker_common_functions.sh3
-rwxr-xr-xextraconfig/tasks/pacemaker_maintenance_mode.sh19
-rw-r--r--extraconfig/tasks/pre_puppet_pacemaker.yaml9
-rw-r--r--network/endpoints/endpoint_data.yaml3
-rw-r--r--network/endpoints/endpoint_map.yaml117
-rw-r--r--network/noop.yaml3
-rw-r--r--overcloud-resource-registry-puppet.yaml16
-rw-r--r--overcloud.yaml18
-rw-r--r--puppet/controller-config-pacemaker.yaml5
-rw-r--r--puppet/controller-config.yaml5
-rw-r--r--puppet/controller-post.yaml7
-rw-r--r--puppet/controller.yaml6
-rw-r--r--puppet/hieradata/controller.yaml2
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp29
-rw-r--r--puppet/services/README.rst50
-rw-r--r--puppet/services/services.yaml40
22 files changed, 191 insertions, 171 deletions
diff --git a/docker/compute-post.yaml b/docker/compute-post.yaml
index 4532549f..09d0e9fd 100644
--- a/docker/compute-post.yaml
+++ b/docker/compute-post.yaml
@@ -28,7 +28,7 @@ parameters:
default: "/etc/libvirt/libvirtd.conf"
NovaConfig:
type: string
- default: "/etc/nova/nova.conf"
+ default: "/etc/nova/nova.conf,/etc/nova/rootwrap.conf"
NeutronOpenvswitchAgentConfig:
type: string
default: "/etc/neutron/neutron.conf,/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini"
@@ -259,6 +259,8 @@ resources:
volumes:
- /run:/run
- /lib/modules:/lib/modules:ro
+ - /dev:/dev
+ - /lib/udev:/lib/udev
- /sys/fs/cgroup:/sys/fs/cgroup
- /var/lib/etc-data/json-config/nova-libvirt.json:/var/lib/kolla/config_files/config.json
- /var/lib/etc-data/libvirt/libvirtd.conf:/var/lib/kolla/config_files/libvirtd.conf
@@ -316,8 +318,12 @@ resources:
volumes:
- /run:/run
- /lib/modules:/lib/modules:ro
+ - /dev:/dev
+ - /lib/udev:/lib/udev
+ - /etc/iscsi:/etc/iscsi
- /var/lib/etc-data/json-config/nova-compute.json:/var/lib/kolla/config_files/config.json
- /var/lib/etc-data/nova/nova.conf:/var/lib/kolla/config_files/nova.conf:ro
+ - /var/lib/etc-data/nova/rootwrap.conf:/var/lib/kolla/config_files/rootwrap.conf:ro
environment:
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
volumes_from:
diff --git a/docker/firstboot/start_docker_agents.sh b/docker/firstboot/start_docker_agents.sh
index 950466dd..027aed40 100644
--- a/docker/firstboot/start_docker_agents.sh
+++ b/docker/firstboot/start_docker_agents.sh
@@ -55,19 +55,6 @@ chmod 666 /dev/pts/ptmx
HOSTNAME=$(hostname)
echo "127.0.0.1 $HOSTNAME.localdomain $HOSTNAME" >> /etc/hosts
-# Another hack.. we need a different docker version
-# (should obviously be dropped once the atomic image contains docker 1.8.2)
-/usr/bin/systemctl stop docker.service
-/bin/curl -o /tmp/docker https://get.docker.com/builds/Linux/x86_64/docker-1.8.2
-/bin/mount -o remount,rw /usr
-/bin/rm /bin/docker
-/bin/cp /tmp/docker /bin/docker
-/bin/chmod 755 /bin/docker
-
-# enable and start docker
-/usr/bin/systemctl enable docker.service
-/usr/bin/systemctl restart --no-block docker.service
-
# enable and start heat-docker-agents
chmod 0640 /etc/systemd/system/heat-docker-agents.service
/usr/bin/systemctl enable heat-docker-agents.service
diff --git a/environments/net-bond-with-vlans-no-external.yaml b/environments/net-bond-with-vlans-no-external.yaml
index 0da119d9..75959a0b 100644
--- a/environments/net-bond-with-vlans-no-external.yaml
+++ b/environments/net-bond-with-vlans-no-external.yaml
@@ -12,7 +12,7 @@
resource_registry:
# Set external ports to noop
- OS::TripleO::Network::External: ../network/noop.yaml
+ OS::TripleO::Network::External: OS::Heat::None
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/noop.yaml
OS::TripleO::BlockStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/cinder-storage.yaml
diff --git a/environments/net-single-nic-with-vlans-no-external.yaml b/environments/net-single-nic-with-vlans-no-external.yaml
index a173df4e..c7594b32 100644
--- a/environments/net-single-nic-with-vlans-no-external.yaml
+++ b/environments/net-single-nic-with-vlans-no-external.yaml
@@ -10,7 +10,7 @@
resource_registry:
# Set external ports to noop
- OS::TripleO::Network::External: ../network/noop.yaml
+ OS::TripleO::Network::External: OS::Heat::None
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/noop.yaml
# Configure other ports as normal
diff --git a/environments/network-isolation.yaml b/environments/network-isolation.yaml
index 87fc22f5..c0420c5c 100644
--- a/environments/network-isolation.yaml
+++ b/environments/network-isolation.yaml
@@ -10,7 +10,7 @@ resource_registry:
OS::TripleO::Network::Storage: ../network/storage.yaml
OS::TripleO::Network::Tenant: ../network/tenant.yaml
# Management network is optional and disabled by default
- OS::TripleO::Network::Management: ../network/noop.yaml
+ OS::TripleO::Network::Management: OS::Heat::None
# Port assignments for the VIPs
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
diff --git a/extraconfig/tasks/major_upgrade_pacemaker_init.yaml b/extraconfig/tasks/major_upgrade_pacemaker_init.yaml
index f662bc3d..623549a0 100644
--- a/extraconfig/tasks/major_upgrade_pacemaker_init.yaml
+++ b/extraconfig/tasks/major_upgrade_pacemaker_init.yaml
@@ -30,6 +30,8 @@ parameters:
resources:
+ # For the UpgradeInit also rename /etc/resolv.conf.save for +bug/1567004
+
UpgradeInitConfig:
type: OS::Heat::SoftwareConfig
properties:
@@ -38,6 +40,7 @@ resources:
list_join:
- ''
- - "#!/bin/bash\n\n"
+ - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
- get_param: UpgradeInitCommand
UpgradeInitControllerDeployment:
diff --git a/extraconfig/tasks/pacemaker_common_functions.sh b/extraconfig/tasks/pacemaker_common_functions.sh
index 0808763e..7d794c97 100755
--- a/extraconfig/tasks/pacemaker_common_functions.sh
+++ b/extraconfig/tasks/pacemaker_common_functions.sh
@@ -19,8 +19,9 @@ function check_resource {
match_for_incomplete='Stopped'
fi
+ nodes_local=$(pcs status | grep ^Online | sed 's/.*\[ \(.*\) \]/\1/g' | sed 's/ /\|/g')
if timeout -k 10 $timeout crm_resource --wait; then
- node_states=$(pcs status --full | grep "$service" | grep -v Clone)
+ node_states=$(pcs status --full | grep "$service" | grep -v Clone | { egrep "$nodes_local" || true; } )
if echo "$node_states" | grep -q "$match_for_incomplete"; then
echo_error "ERROR: cluster finished transition but $service was not in $state state, exiting."
exit 1
diff --git a/extraconfig/tasks/pacemaker_maintenance_mode.sh b/extraconfig/tasks/pacemaker_maintenance_mode.sh
new file mode 100755
index 00000000..ddc84ad2
--- /dev/null
+++ b/extraconfig/tasks/pacemaker_maintenance_mode.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -x
+
+# On initial deployment, the pacemaker service is disabled and is-active exits
+# 3 in that case, so allow this to fail gracefully.
+pacemaker_status=$(systemctl is-active pacemaker || :)
+
+if [ "$pacemaker_status" = "active" ]; then
+ pcs property set maintenance-mode=true
+fi
+
+# We need to reload haproxy in case the certificate changed because
+# puppet doesn't know the contents of the cert file. We shouldn't
+# reload it if it wasn't already active (such as if using external
+# loadbalancer or on initial deployment).
+haproxy_status=$(systemctl is-active haproxy || :)
+if [ "$haproxy_status" = "active" ]; then
+ systemctl reload haproxy
+fi
diff --git a/extraconfig/tasks/pre_puppet_pacemaker.yaml b/extraconfig/tasks/pre_puppet_pacemaker.yaml
index 2cfe92a7..82546588 100644
--- a/extraconfig/tasks/pre_puppet_pacemaker.yaml
+++ b/extraconfig/tasks/pre_puppet_pacemaker.yaml
@@ -14,13 +14,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: script
- config: |
- #!/bin/bash
- pacemaker_status=$(systemctl is-active pacemaker)
-
- if [ "$pacemaker_status" = "active" ]; then
- pcs property set maintenance-mode=true
- fi
+ config:
+ get_file: pacemaker_maintenance_mode.sh
ControllerPrePuppetMaintenanceModeDeployment:
type: OS::Heat::SoftwareDeployments
diff --git a/network/endpoints/endpoint_data.yaml b/network/endpoints/endpoint_data.yaml
index a74d75da..edcfaca1 100644
--- a/network/endpoints/endpoint_data.yaml
+++ b/network/endpoints/endpoint_data.yaml
@@ -123,17 +123,14 @@ Nova:
vip_param: NovaApi
uri_suffixes:
'': /v2.1/%(tenant_id)s
- V3: /v3
Public:
vip_param: Public
uri_suffixes:
'': /v2.1/%(tenant_id)s
- V3: /v3
Admin:
vip_param: NovaApi
uri_suffixes:
'': /v2.1/%(tenant_id)s
- V3: /v3
port: 8774
NovaEC2:
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
index 956fb0ba..07266f98 100644
--- a/network/endpoints/endpoint_map.yaml
+++ b/network/endpoints/endpoint_map.yaml
@@ -1307,123 +1307,6 @@ outputs:
IP_ADDRESS: {get_param: PublicVirtualIP}
- ':'
- get_param: [EndpointMap, NovaPublic, port]
- NovaV3Admin:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, NovaAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- port:
- get_param: [EndpointMap, NovaAdmin, port]
- protocol:
- get_param: [EndpointMap, NovaAdmin, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaAdmin, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaAdmin, port]
- - /v3
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaAdmin, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaAdmin, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaAdmin, port]
- NovaV3Internal:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, NovaInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- port:
- get_param: [EndpointMap, NovaInternal, port]
- protocol:
- get_param: [EndpointMap, NovaInternal, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaInternal, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaInternal, port]
- - /v3
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaInternal, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaInternal, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: NovaApiVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaInternal, port]
- NovaV3Public:
- host:
- str_replace:
- template:
- get_param: [EndpointMap, NovaPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- port:
- get_param: [EndpointMap, NovaPublic, port]
- protocol:
- get_param: [EndpointMap, NovaPublic, protocol]
- uri:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaPublic, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaPublic, port]
- - /v3
- uri_no_suffix:
- list_join:
- - ''
- - - get_param: [EndpointMap, NovaPublic, protocol]
- - ://
- - str_replace:
- template:
- get_param: [EndpointMap, NovaPublic, host]
- params:
- CLOUDNAME: {get_param: CloudName}
- IP_ADDRESS: {get_param: PublicVirtualIP}
- - ':'
- - get_param: [EndpointMap, NovaPublic, port]
NovaEC2Admin:
host:
str_replace:
diff --git a/network/noop.yaml b/network/noop.yaml
deleted file mode 100644
index 0963d2ce..00000000
--- a/network/noop.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: A stack which creates no network(s).
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index 54074d12..cba02916 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -56,13 +56,12 @@ resource_registry:
OS::TripleO::Network: network/networks.yaml
OS::TripleO::VipConfig: puppet/vip-config.yaml
-
- OS::TripleO::Network::External: network/noop.yaml
- OS::TripleO::Network::InternalApi: network/noop.yaml
- OS::TripleO::Network::StorageMgmt: network/noop.yaml
- OS::TripleO::Network::Storage: network/noop.yaml
- OS::TripleO::Network::Tenant: network/noop.yaml
- OS::TripleO::Network::Management: network/noop.yaml
+ OS::TripleO::Network::External: OS::Heat::None
+ OS::TripleO::Network::InternalApi: OS::Heat::None
+ OS::TripleO::Network::StorageMgmt: OS::Heat::None
+ OS::TripleO::Network::Storage: OS::Heat::None
+ OS::TripleO::Network::Tenant: OS::Heat::None
+ OS::TripleO::Network::Management: OS::Heat::None
OS::TripleO::Network::Ports::NetVipMap: network/ports/net_ip_map.yaml
OS::TripleO::Network::Ports::NetIpMap: network/ports/net_ip_map.yaml
@@ -122,6 +121,9 @@ resource_registry:
# validation resources
OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml
+ # services
+ OS::TripleO::Services: puppet/services/services.yaml
+
parameter_defaults:
EnablePackageInstall: false
SoftwareConfigTransport: POLL_TEMP_URL
diff --git a/overcloud.yaml b/overcloud.yaml
index 3a76a10f..30c60c58 100644
--- a/overcloud.yaml
+++ b/overcloud.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2015-04-30
+heat_template_version: 2016-04-08
description: >
Deploy an OpenStack environment, consisting of several node types (roles),
@@ -711,6 +711,13 @@ parameters:
via parameter_defaults in the resource registry.
type: json
+ ControllerServices:
+ default: []
+ description: A list of service resources (configured in the Heat
+ resource_registry) which represent nested stacks
+ for each service that should get installed on the Controllers.
+ type: comma_delimited_list
+
# Block storage specific parameters
BlockStorageCount:
type: number
@@ -892,6 +899,13 @@ resources:
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
+ ControllerServiceChain:
+ type: OS::TripleO::Services
+ properties:
+ Services: {get_param: ControllerServices}
+ EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+ MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+
Controller:
type: OS::Heat::ResourceGroup
depends_on: Networks
@@ -1043,6 +1057,7 @@ resources:
NodeIndex: '%index%'
ServerMetadata: {get_param: ServerMetadata}
SchedulerHints: {get_param: ControllerSchedulerHints}
+ ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
Compute:
type: OS::Heat::ResourceGroup
@@ -1611,6 +1626,7 @@ resources:
allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
controller_config: {get_attr: [Controller, attributes, config_identifier]}
deployment_identifier: {get_param: DeployIdentifier}
+ StepConfig: {get_attr: [ControllerServiceChain, step_config]}
ComputeNodesPostDeployment:
type: OS::TripleO::ComputePostDeployment
diff --git a/puppet/controller-config-pacemaker.yaml b/puppet/controller-config-pacemaker.yaml
index 21db825a..dfebcf82 100644
--- a/puppet/controller-config-pacemaker.yaml
+++ b/puppet/controller-config-pacemaker.yaml
@@ -8,6 +8,10 @@ parameters:
default: false
description: Whether to run config management (e.g. Puppet) in debug mode.
type: boolean
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -26,6 +30,7 @@ resources:
- ''
- - get_file: manifests/overcloud_controller_pacemaker.pp
- get_file: manifests/ringbuilder.pp
+ - {get_param: StepConfig}
outputs:
OS::stack_id:
diff --git a/puppet/controller-config.yaml b/puppet/controller-config.yaml
index f7a6a56d..458aff32 100644
--- a/puppet/controller-config.yaml
+++ b/puppet/controller-config.yaml
@@ -8,6 +8,10 @@ parameters:
default: false
description: Whether to run config management (e.g. Puppet) in debug mode.
type: boolean
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -26,6 +30,7 @@ resources:
- ''
- - get_file: manifests/overcloud_controller.pp
- get_file: manifests/ringbuilder.pp
+ - {get_param: StepConfig}
outputs:
OS::stack_id:
diff --git a/puppet/controller-post.yaml b/puppet/controller-post.yaml
index 04f20b61..80b08a06 100644
--- a/puppet/controller-post.yaml
+++ b/puppet/controller-post.yaml
@@ -13,7 +13,10 @@ parameters:
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
-
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -35,6 +38,8 @@ resources:
ControllerPuppetConfig:
type: OS::TripleO::ControllerConfig
+ properties:
+ StepConfig: {get_param: StepConfig}
# Step through a series of Puppet runs using the same manifest.
# NOTE: To enable stepping through the deployments via heat hooks,
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index efdf08bb..d966700f 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -790,6 +790,9 @@ parameters:
type: json
description: Optional scheduler hints to pass to nova
default: {}
+ ServiceConfigSettings:
+ type: json
+ default: {}
resources:
@@ -1294,6 +1297,7 @@ resources:
- heat_config_%{::deploy_config_name}
- controller_extraconfig
- extraconfig
+ - service_configs
- controller
- database
- object
@@ -1316,6 +1320,8 @@ resources:
- neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
- neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
datafiles:
+ service_configs:
+ mapped_data: {get_param: ServiceConfigSettings}
controller_extraconfig:
mapped_data: {get_param: ControllerExtraConfig}
extraconfig:
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index 3e523f1b..8766263a 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -90,7 +90,6 @@ neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf
# nova
nova::notify_on_state_change: 'vm_and_task_state'
nova::api::default_floating_pool: 'public'
-nova::api::osapi_v3: true
nova::api::sync_db_api: true
nova::scheduler::filter::ram_allocation_ratio: '1.0'
nova::cron::archive_deleted_rows::hour: '*/12'
@@ -123,6 +122,7 @@ pacemaker::corosync::cluster_name: 'tripleo_cluster'
pacemaker::corosync::manage_fw: false
pacemaker::resource_defaults::defaults:
resource-stickiness: { value: INFINITY }
+corosync_token_timeout: 10000
# horizon
horizon::cache_backend: django.core.cache.backends.memcached.MemcachedCache
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index fd12c342..5a5028e2 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -82,9 +82,9 @@ if hiera('step') >= 1 {
$pacemaker_cluster_members = downcase(regsubst(hiera('controller_node_names'), ',', ' ', 'G'))
$corosync_ipv6 = str2bool(hiera('corosync_ipv6', false))
if $corosync_ipv6 {
- $cluster_setup_extras = { '--ipv6' => '' }
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000), '--ipv6' => '' }
} else {
- $cluster_setup_extras = {}
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000) }
}
class { '::pacemaker':
hacluster_pwd => hiera('hacluster_pwd'),
@@ -185,8 +185,10 @@ if hiera('step') >= 1 {
'bind-address' => $::hostname,
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
+ 'wsrep_on' => 'ON',
'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
'wsrep_cluster_name' => 'galera_cluster',
+ 'wsrep_cluster_address' => "gcomm://${galera_nodes}",
'wsrep_slave_threads' => '1',
'wsrep_certify_nonPK' => '1',
'wsrep_max_ws_rows' => '131072',
@@ -652,17 +654,6 @@ if hiera('step') >= 4 {
$http_store = ['glance.store.http.Store']
$glance_store = concat($http_store, $backend_store)
- if $glance_backend == 'file' and hiera('glance_file_pcmk_manage', false) {
- $secontext = 'context="system_u:object_r:glance_var_lib_t:s0"'
- pacemaker::resource::filesystem { 'glance-fs':
- device => hiera('glance_file_pcmk_device'),
- directory => hiera('glance_file_pcmk_directory'),
- fstype => hiera('glance_file_pcmk_fstype'),
- fsoptions => join([$secontext, hiera('glance_file_pcmk_options', '')],','),
- clone_params => '',
- }
- }
-
# TODO: notifications, scrubber, etc.
include ::glance
include ::glance::config
@@ -1338,6 +1329,18 @@ if hiera('step') >= 5 {
}
# Glance
+ if $glance_backend == 'file' and hiera('glance_file_pcmk_manage', false) {
+ $secontext = 'context="system_u:object_r:glance_var_lib_t:s0"'
+ pacemaker::resource::filesystem { 'glance-fs':
+ device => hiera('glance_file_pcmk_device'),
+ directory => hiera('glance_file_pcmk_directory'),
+ fstype => hiera('glance_file_pcmk_fstype'),
+ fsoptions => join([$secontext, hiera('glance_file_pcmk_options', '')],','),
+ verify_on_create => true,
+ clone_params => '',
+ }
+ }
+
pacemaker::resource::service { $::glance::params::registry_service_name :
clone_params => 'interleave=true',
require => Pacemaker::Resource::Ocf['openstack-core'],
diff --git a/puppet/services/README.rst b/puppet/services/README.rst
new file mode 100644
index 00000000..38d2ac64
--- /dev/null
+++ b/puppet/services/README.rst
@@ -0,0 +1,50 @@
+========
+services
+========
+
+A TripleO nested stack Heat template that encapsulates generic configuration
+data to configure a specific service. This generally includes everything
+needed to configure the service excluding the local bind ports which
+are still managed in the per-node role templates directly (controller.yaml,
+compute.yaml, etc.). All other (global) service settings go into
+the puppet/service templates.
+
+Input Parameters
+----------------
+
+Each service may define its own input parameters and defaults.
+Operators will use the parameter_defaults section of any Heat
+environment to set per service parameters.
+
+Config Settings
+---------------
+
+Each service may define a config_settings output variable which returns
+Hiera settings to be configured.
+
+Steps
+-----
+
+Each service may define an output variable which returns a puppet manifest
+snippet that will run at each of the following steps. Earlier manifests
+are re-asserted when applying latter ones.
+
+ * config_settings: Custom hiera settings for this service.
+
+ * step_config: A puppet manifest that is used to step through the deployment
+ sequence. Each sequence is given a "step" (via hiera('step') that provides
+ information for when puppet classes should activate themselves.
+
+ Steps correlate to the following:
+
+ 1) Load Balancer configuration
+
+ 2) Core Services (Database/Rabbit/NTP/etc.)
+
+ 3) Early Openstack Service setup (Ringbuilder, etc.)
+
+ 4) General OpenStack Services
+
+ 5) Service activation (Pacemaker)
+
+ 6) Fencing (Pacemaker)
diff --git a/puppet/services/services.yaml b/puppet/services/services.yaml
new file mode 100644
index 00000000..f9681634
--- /dev/null
+++ b/puppet/services/services.yaml
@@ -0,0 +1,40 @@
+heat_template_version: 2016-04-08
+
+description: >
+ Utility stack to convert an array of services into a set of combined
+ role configs.
+
+parameters:
+ Services:
+ default: []
+ description: |
+ List nested stack service templates.
+ type: comma_delimited_list
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ MysqlVirtualIPUri:
+ default: ''
+ type: string
+ description: The URI virtual IP for the MySQL service.
+
+resources:
+
+ ServiceChain:
+ type: OS::Heat::ResourceChain
+ properties:
+ resources: {get_param: Services}
+ concurrent: true
+ resource_properties:
+ EndpointMap: {get_param: EndpointMap}
+ MysqlVirtualIPUri: {get_param: MysqlVirtualIPUri}
+
+outputs:
+ config_settings:
+ description: Configuration settings.
+ value: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
+ step_config:
+ description: Step configuration.
+ value: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}