aboutsummaryrefslogtreecommitdiffstats
path: root/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'puppet')
-rw-r--r--puppet/all-nodes-config.yaml2
-rw-r--r--puppet/bootstrap-config.yaml1
-rw-r--r--puppet/ceph-storage-post-puppet.yaml6
-rw-r--r--puppet/ceph-storage-puppet.yaml11
-rw-r--r--puppet/cinder-storage-post.yaml3
-rw-r--r--puppet/cinder-storage-puppet.yaml50
-rw-r--r--puppet/compute-post-puppet.yaml6
-rw-r--r--puppet/compute-puppet.yaml19
-rw-r--r--puppet/controller-post-puppet.yaml10
-rw-r--r--puppet/controller-puppet.yaml28
-rw-r--r--puppet/hieradata/RedHat.yaml7
-rw-r--r--puppet/hieradata/controller.yaml7
-rw-r--r--puppet/manifests/overcloud_controller.pp1
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp62
-rw-r--r--puppet/manifests/overcloud_volume.pp1
-rw-r--r--puppet/swift-storage-post.yaml8
-rw-r--r--puppet/swift-storage-puppet.yaml35
-rw-r--r--puppet/vip-config.yaml1
18 files changed, 205 insertions, 53 deletions
diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml
index c50d6820..060f4c81 100644
--- a/puppet/all-nodes-config.yaml
+++ b/puppet/all-nodes-config.yaml
@@ -78,6 +78,8 @@ resources:
- {get_param: ceph_storage_hosts}
hiera:
datafiles:
+ RedHat:
+ raw_data: {get_file: hieradata/RedHat.yaml}
all_nodes:
mapped_data:
controller_node_ips:
diff --git a/puppet/bootstrap-config.yaml b/puppet/bootstrap-config.yaml
index c88ed408..d88eebdf 100644
--- a/puppet/bootstrap-config.yaml
+++ b/puppet/bootstrap-config.yaml
@@ -12,6 +12,7 @@ resources:
BootstrapNodeConfigImpl:
type: OS::Heat::StructuredConfig
properties:
+ group: os-apply-config
config:
hiera:
datafiles:
diff --git a/puppet/ceph-storage-post-puppet.yaml b/puppet/ceph-storage-post-puppet.yaml
index eb62ba1e..1b5b944d 100644
--- a/puppet/ceph-storage-post-puppet.yaml
+++ b/puppet/ceph-storage-post-puppet.yaml
@@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
+
resources:
CephStoragePuppetConfig:
@@ -22,6 +26,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: CephStoragePuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.
diff --git a/puppet/ceph-storage-puppet.yaml b/puppet/ceph-storage-puppet.yaml
index 1ab381af..245d8ebb 100644
--- a/puppet/ceph-storage-puppet.yaml
+++ b/puppet/ceph-storage-puppet.yaml
@@ -39,6 +39,9 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
resources:
CephStorage:
@@ -52,6 +55,7 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
@@ -86,6 +90,7 @@ resources:
CephStorageDeployment:
type: OS::Heat::StructuredDeployment
+ depends_on: NetworkDeployment
properties:
config: {get_resource: CephStorageConfig}
server: {get_resource: CephStorage}
@@ -138,7 +143,7 @@ outputs:
hosts_entry:
value:
str_replace:
- template: "IP HOST"
+ template: "IP HOST.localdomain HOST"
params:
IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
HOST: {get_attr: [CephStorage, name]}
@@ -152,3 +157,7 @@ outputs:
storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: {get_attr: [CephStorageDeployment, deploy_stdout]}
+
diff --git a/puppet/cinder-storage-post.yaml b/puppet/cinder-storage-post.yaml
index f17a1567..24d2b8a3 100644
--- a/puppet/cinder-storage-post.yaml
+++ b/puppet/cinder-storage-post.yaml
@@ -4,6 +4,9 @@ description: 'OpenStack cinder storage post deployment for Puppet'
parameters:
servers:
type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
resources:
diff --git a/puppet/cinder-storage-puppet.yaml b/puppet/cinder-storage-puppet.yaml
index 74df116a..cc8d17c4 100644
--- a/puppet/cinder-storage-puppet.yaml
+++ b/puppet/cinder-storage-puppet.yaml
@@ -25,7 +25,7 @@ parameters:
default: ''
description: Set to True to enable debugging on all services.
type: string
- VirtualIP:
+ VirtualIP: # deprecated. Use per service VIPs instead.
default: ''
type: string
ExtraConfig:
@@ -75,6 +75,10 @@ parameters:
default: "9292"
description: Glance port.
type: string
+ GlanceProtocol:
+ default: http
+ description: Protocol to use when connecting to glance, set to https for SSL.
+ type: string
KeyName:
default: default
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
@@ -117,6 +121,20 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
+ ServiceNetMap:
+ default: {}
+ description: Mapping of service_name -> network name. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ GlanceApiVirtualIP:
+ type: string
+ default: ''
+ MysqlVirtualIP:
+ type: string
+ default: ''
resources:
BlockStorage:
@@ -130,6 +148,7 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
@@ -156,6 +175,13 @@ resources:
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+ NetIpMap:
+ type: OS::TripleO::Network::Ports::NetIpMap
+ properties:
+ InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
+ StorageIp: {get_attr: [StoragePort, ip_address]}
+ StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
@@ -164,12 +190,13 @@ resources:
BlockStorageDeployment:
type: OS::Heat::StructuredDeployment
+ depends_on: NetworkDeployment
properties:
server: {get_resource: BlockStorage}
config: {get_resource: BlockStorageConfig}
input_values:
debug: {get_param: Debug}
- cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: VirtualIP} , '/cinder']]}
+ cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
cinder_lvm_loop_device_size:
@@ -179,6 +206,15 @@ resources:
size: {get_param: CinderLVMLoopDeviceSize}
cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
cinder_iscsi_helper: {get_param: CinderISCSIHelper}
+ cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
+ glance_api_servers:
+ list_join:
+ - ''
+ - - {get_param: GlanceProtocol}
+ - '://'
+ - {get_param: GlanceApiVirtualIP}
+ - ':'
+ - {get_param: GlancePort}
rabbit_username: {get_param: RabbitUserName}
rabbit_password: {get_param: RabbitPassword}
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
@@ -189,7 +225,6 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
- signal_transport: NO_SIGNAL
# Map heat metadata into hiera datafiles
BlockStorageConfig:
@@ -209,8 +244,6 @@ resources:
raw_data: {get_file: hieradata/common.yaml}
volume:
raw_data: {get_file: hieradata/volume.yaml}
- oac_data:
- cinder_iscsi_ip_address: local-ipv4
mapped_data:
# Cinder
cinder::debug: {get_input: debug}
@@ -222,6 +255,8 @@ resources:
cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
cinder::rabbit_port: {get_input: rabbit_client_port}
cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
+ cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
+ cinder::glance::glance_api_servers: {get_input: glance_api_servers}
ntp::servers: {get_input: ntp_servers}
enable_package_install: {get_input: enable_package_install}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
@@ -243,7 +278,7 @@ outputs:
hosts_entry:
value:
str_replace:
- template: "IP HOST"
+ template: "IP HOST.localdomain HOST"
params:
IP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
HOST: {get_attr: [BlockStorage, name]}
@@ -260,3 +295,6 @@ outputs:
storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: {get_attr: [BlockStorageDeployment, deploy_stdout]}
diff --git a/puppet/compute-post-puppet.yaml b/puppet/compute-post-puppet.yaml
index ca5eb649..b4a6126b 100644
--- a/puppet/compute-post-puppet.yaml
+++ b/puppet/compute-post-puppet.yaml
@@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
+
resources:
@@ -23,6 +27,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: ComputePuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.
diff --git a/puppet/compute-puppet.yaml b/puppet/compute-puppet.yaml
index 12e701dd..7e49bc22 100644
--- a/puppet/compute-puppet.yaml
+++ b/puppet/compute-puppet.yaml
@@ -258,6 +258,9 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
resources:
@@ -274,6 +277,7 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
@@ -310,7 +314,6 @@ resources:
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
- signal_transport: NO_SIGNAL
config: {get_resource: NetworkConfig}
server: {get_resource: NovaCompute}
input_values:
@@ -338,8 +341,6 @@ resources:
raw_data: {get_file: hieradata/ceph.yaml}
compute:
raw_data: {get_file: hieradata/compute.yaml}
- oac_data:
- nova::compute::vncserver_proxyclient_address: local-ipv4
mapped_data:
nova::debug: {get_input: debug}
nova::rabbit_userid: {get_input: rabbit_username}
@@ -352,6 +353,7 @@ resources:
nova::compute::vncproxy_host: {get_input: nova_public_ip}
nova_enable_rbd_backend: {get_input: nova_enable_rbd_backend}
nova_password: {get_input: nova_password}
+ nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
ceilometer::debug: {get_input: debug}
ceilometer::rabbit_userid: {get_input: rabbit_username}
ceilometer::rabbit_password: {get_input: rabbit_password}
@@ -394,8 +396,8 @@ resources:
NovaComputeDeployment:
type: OS::TripleO::SoftwareDeployment
+ depends_on: NetworkDeployment
properties:
- signal_transport: NO_SIGNAL
config: {get_resource: NovaComputeConfig}
server: {get_resource: NovaCompute}
input_values:
@@ -406,6 +408,7 @@ resources:
nova_api_host: {get_param: NovaApiHost}
nova_password: {get_param: NovaPassword}
nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
+ nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
@@ -427,7 +430,7 @@ resources:
- {get_param: GlancePort}
neutron_flat_networks: {get_param: NeutronFlatNetworks}
neutron_host: {get_param: NeutronHost}
- neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronLocalIp]}]}
+ neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
neutron_tenant_network_type: {get_param: NeutronNetworkType}
neutron_tunnel_types: {get_param: NeutronTunnelTypes}
neutron_network_vlan_ranges:
@@ -505,7 +508,7 @@ outputs:
Server's IP address and hostname in the /etc/hosts format
value:
str_replace:
- template: "IP HOST"
+ template: "IP HOST.localdomain HOST"
params:
IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
HOST: {get_attr: [NovaCompute, name]}
@@ -513,3 +516,7 @@ outputs:
description: Heat resource handle for the Nova compute server
value:
{get_resource: NovaCompute}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: {get_attr: [NovaComputeDeployment, deploy_stdout]}
+
diff --git a/puppet/controller-post-puppet.yaml b/puppet/controller-post-puppet.yaml
index 373daba2..e88561e6 100644
--- a/puppet/controller-post-puppet.yaml
+++ b/puppet/controller-post-puppet.yaml
@@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
+
resources:
@@ -23,6 +27,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 1
+ update_identifier: {get_param: NodeConfigIdentifiers}
actions: ['CREATE'] # no need for two passes on an UPDATE
ControllerServicesBaseDeployment_Step2:
@@ -33,6 +38,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 2
+ update_identifier: {get_param: NodeConfigIdentifiers}
actions: ['CREATE'] # no need for two passes on an UPDATE
ControllerRingbuilderPuppetConfig:
@@ -54,6 +60,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: ControllerRingbuilderPuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
ControllerOvercloudServicesDeployment_Step4:
type: OS::Heat::StructuredDeployments
@@ -63,6 +71,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 3
+ update_identifier: {get_param: NodeConfigIdentifiers}
ControllerOvercloudServicesDeployment_Step5:
type: OS::Heat::StructuredDeployments
@@ -72,6 +81,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 4
+ update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 05bd27ab..1e563331 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -76,11 +76,6 @@ parameters:
default: true
description: Whether to use Galera instead of regular MariaDB.
type: boolean
- EnablePacemaker:
- default: false
- description: If enabled services will be monitored by Pacemaker; it
- will manage VIPs as well, in place of Keepalived.
- type: boolean
EnableCephStorage:
default: false
description: Whether to deploy Ceph Storage (OSD) on the Controller
@@ -460,6 +455,9 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
resources:
@@ -474,6 +472,7 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
@@ -533,7 +532,6 @@ resources:
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
- signal_transport: NO_SIGNAL
config: {get_resource: NetworkConfig}
server: {get_resource: Controller}
input_values:
@@ -542,8 +540,8 @@ resources:
ControllerDeployment:
type: OS::TripleO::SoftwareDeployment
+ depends_on: NetworkDeployment
properties:
- signal_transport: NO_SIGNAL
config: {get_resource: ControllerConfig}
server: {get_resource: Controller}
input_values:
@@ -693,6 +691,12 @@ resources:
ceilometer_backend: {get_param: CeilometerBackend}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
+ ceilometer_coordination_url:
+ list_join:
+ - ''
+ - - 'redis://'
+ - {get_param: RedisVirtualIP}
+ - ':6379'
ceilometer_dsn:
list_join:
- ''
@@ -749,7 +753,7 @@ resources:
keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
- neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronLocalIp]}]}
+ neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
@@ -951,6 +955,7 @@ resources:
ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address}
+ ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -971,8 +976,10 @@ resources:
nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
nova::network::neutron::neutron_url: {get_input: neutron_url}
nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
+ nova::vncproxy::host: {get_input: nova_api_network}
# Horizon
+ apache::ip: {get_input: horizon_network}
horizon::django_debug: {get_input: debug}
horizon::secret_key: {get_input: horizon_secret}
horizon::bind_address: {get_input: horizon_network}
@@ -1040,7 +1047,7 @@ outputs:
Server's IP address and hostname in the /etc/hosts format
value:
str_replace:
- template: IP HOST CLOUDNAME
+ template: IP HOST.localdomain HOST CLOUDNAME
params:
IP: {get_attr: [Controller, networks, ctlplane, 0]}
HOST: {get_attr: [Controller, name]}
@@ -1063,3 +1070,6 @@ outputs:
template: "IP:11211"
params:
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
+ config_identifier:
+ description: identifier which changes if the controller configuration may need re-applying
+ value: {get_attr: [ControllerDeployment, deploy_stdout]}
diff --git a/puppet/hieradata/RedHat.yaml b/puppet/hieradata/RedHat.yaml
index f42c7159..25902828 100644
--- a/puppet/hieradata/RedHat.yaml
+++ b/puppet/hieradata/RedHat.yaml
@@ -1,2 +1,9 @@
# RedHat specific overrides go here
rabbitmq::package_provider: 'yum'
+
+# The Galera package should work in cluster and
+# non-cluster modes based on the config file.
+# We set the package name here explicitly so
+# that it matches what we pre-install
+# in tripleo-puppet-elements.
+mysql::server::package_name: 'mariadb-galera-server'
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index 4a506239..3de9bd91 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -48,7 +48,6 @@ swift::proxy::pipeline:
- 'tempurl'
- 'formpost'
- 'staticweb'
- - 'ceilometer'
- 'authtoken'
- 'keystone'
- 'proxy-logging'
@@ -88,13 +87,12 @@ pacemaker::corosync::manage_fw: false
# horizon
horizon::allowed_hosts: '*'
+horizon::django_session_engine: 'django.contrib.sessions.backends.cache'
+# mysql
mysql::server::manage_config_file: true
-tripleo::loadbalancer::galera_master_ip: "%{hiera('bootstrap_nodeid_ip')}"
-tripleo::loadbalancer::galera_master_hostname: "%{hiera('bootstrap_nodeid')}"
-
tripleo::loadbalancer::keystone_admin: true
tripleo::loadbalancer::keystone_public: true
tripleo::loadbalancer::neutron: true
@@ -112,3 +110,4 @@ tripleo::loadbalancer::ceilometer: true
tripleo::loadbalancer::heat_api: true
tripleo::loadbalancer::heat_cloudwatch: true
tripleo::loadbalancer::heat_cfn: true
+tripleo::loadbalancer::horizon: true
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index 19ed97fb..bc20bad5 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -364,7 +364,6 @@ if hiera('step') >= 3 {
include ::swift::proxy::keystone
include ::swift::proxy::authtoken
include ::swift::proxy::staticweb
- include ::swift::proxy::ceilometer
include ::swift::proxy::ratelimit
include ::swift::proxy::catch_errors
include ::swift::proxy::tempurl
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index b5bed6dc..a57465c0 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -55,8 +55,8 @@ if hiera('step') >= 1 {
class { '::tripleo::loadbalancer' :
controller_hosts => $controller_node_ips,
controller_hosts_names => $controller_node_names,
- redis => false,
manage_vip => false,
+ mysql_clustercheck => true,
haproxy_service_manage => false,
}
@@ -157,12 +157,18 @@ if hiera('step') >= 1 {
config_file => $mysql_config_file,
override_options => $mysqld_options,
service_manage => false,
+ service_enabled => false,
}
}
if hiera('step') >= 2 {
+ # NOTE(gfidente): the following vars are needed on all nodes so they
+ # need to stay out of pacemaker_master conditional
+ $mongo_node_ips_with_port = suffix(hiera('mongo_node_ips'), ':27017')
+ $mongodb_replset = hiera('mongodb::server::replset')
+
if $pacemaker_master {
# FIXME: we should not have to access tripleo::loadbalancer class
@@ -222,12 +228,8 @@ if hiera('step') >= 2 {
}
# NOTE (spredzy) : The replset can only be run
# once all the nodes have joined the cluster.
- $mongo_node_ips = hiera('mongo_node_ips')
- $mongo_node_ips_with_port = suffix($mongo_node_ips, ':27017')
- $mongo_node_string = join($mongo_node_ips_with_port, ',')
- $mongodb_pacemaker_resource = Pacemaker::Resource::Service[$::mongodb::params::service_name]
- $mongodb_replset = hiera('mongodb::server::replset')
mongodb_conn_validator { $mongo_node_ips_with_port :
+ timeout => '600',
require => Pacemaker::Resource::Service[$::mongodb::params::service_name],
before => Mongodb_replset[$mongodb_replset],
}
@@ -659,6 +661,7 @@ if hiera('step') >= 3 {
$ceilometer_database_connection = hiera('ceilometer_mysql_conn_string')
}
default : {
+ $mongo_node_string = join($mongo_node_ips_with_port, ',')
$ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
}
}
@@ -674,7 +677,6 @@ if hiera('step') >= 3 {
class { '::ceilometer::agent::central' :
manage_service => false,
enabled => false,
- coordination_url => "redis://${redis_vip}:6379",
}
class { '::ceilometer::alarm::notifier' :
manage_service => false,
@@ -718,11 +720,18 @@ if hiera('step') >= 3 {
enabled => false,
}
- # Horizon
- $vhost_params = { add_listen => false }
+ # httpd/apache and horizon
+ # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
+ include ::apache
+ include ::apache::mod::status
+ $vhost_params = {
+ add_listen => false,
+ priority => 10,
+ }
class { 'horizon':
cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
vhost_extra_params => $vhost_params,
+ server_aliases => $::hostname,
}
$snmpd_user = hiera('snmpd_readonly_user_name')
@@ -1081,7 +1090,7 @@ if hiera('step') >= 4 {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
clone_params => 'interleave=true',
require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
- $mongodb_pacemaker_resource],
+ Pacemaker::Resource::Service[$::mongodb::params::service_name]],
}
pacemaker::resource::service { $::ceilometer::params::collector_service_name :
clone_params => 'interleave=true',
@@ -1103,6 +1112,15 @@ if hiera('step') >= 4 {
clone_params => 'interleave=true',
resource_params => 'startdelay=10',
}
+ pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
+ constraint_type => 'order',
+ first_resource => "${::keystone::params::service_name}-clone",
+ second_resource => "${::ceilometer::params::agent_central_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
+ Pacemaker::Resource::Service[$::keystone::params::service_name]],
+ }
pacemaker::constraint::base { 'ceilometer-central-then-ceilometer-collector-constraint':
constraint_type => 'order',
first_resource => "${::ceilometer::params::agent_central_service_name}-clone",
@@ -1212,15 +1230,6 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Ip['vip-redis']],
}
- pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
- constraint_type => 'order',
- first_resource => "${::keystone::params::service_name}-clone",
- second_resource => "${::ceilometer::params::agent_central_service_name}-clone",
- first_action => 'start',
- second_action => 'start',
- require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
- Pacemaker::Resource::Service[$::keystone::params::service_name]],
- }
# Heat
pacemaker::resource::service { $::heat::params::api_service_name :
@@ -1235,6 +1244,15 @@ if hiera('step') >= 4 {
pacemaker::resource::service { $::heat::params::engine_service_name :
clone_params => 'interleave=true',
}
+ pacemaker::constraint::base { 'keystone-then-heat-api-constraint':
+ constraint_type => 'order',
+ first_resource => "${::keystone::params::service_name}-clone",
+ second_resource => "${::heat::params::api_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],
+ Pacemaker::Resource::Service[$::keystone::params::service_name]],
+ }
pacemaker::constraint::base { 'heat-api-then-heat-api-cfn-constraint':
constraint_type => 'order',
first_resource => "${::heat::params::api_service_name}-clone",
@@ -1293,6 +1311,12 @@ if hiera('step') >= 4 {
Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name]],
}
+ # Horizon
+ pacemaker::resource::service { $::horizon::params::http_service:
+ clone_params => "interleave=true",
+ }
+
+
}
} #END STEP 4
diff --git a/puppet/manifests/overcloud_volume.pp b/puppet/manifests/overcloud_volume.pp
index 80cf6a21..edfeaeca 100644
--- a/puppet/manifests/overcloud_volume.pp
+++ b/puppet/manifests/overcloud_volume.pp
@@ -31,6 +31,7 @@ if count(hiera('ntp::servers')) > 0 {
}
include ::cinder
+include ::cinder::glance
include ::cinder::volume
include ::cinder::setup_test_volume
diff --git a/puppet/swift-storage-post.yaml b/puppet/swift-storage-post.yaml
index 7a3c1abb..ee50c86a 100644
--- a/puppet/swift-storage-post.yaml
+++ b/puppet/swift-storage-post.yaml
@@ -4,6 +4,10 @@ description: 'OpenStack swift storage node post deployment for Puppet'
parameters:
servers:
type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
+
resources:
@@ -21,6 +25,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: StoragePuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
StorageRingbuilderPuppetConfig:
type: OS::Heat::SoftwareConfig
@@ -37,6 +43,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: StorageRingbuilderPuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.
diff --git a/puppet/swift-storage-puppet.yaml b/puppet/swift-storage-puppet.yaml
index 2268f41f..82922a87 100644
--- a/puppet/swift-storage-puppet.yaml
+++ b/puppet/swift-storage-puppet.yaml
@@ -57,6 +57,14 @@ parameters:
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ ServiceNetMap:
+ default: {}
+ description: Mapping of service_name -> network name. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
resources:
@@ -70,6 +78,7 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
@@ -96,6 +105,13 @@ resources:
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+ NetIpMap:
+ type: OS::TripleO::Network::Ports::NetIpMap
+ properties:
+ InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
+ StorageIp: {get_attr: [StoragePort, ip_address]}
+ StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
@@ -111,6 +127,8 @@ resources:
hierarchy:
- heat_config_%{::deploy_config_name}
- object
+ - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
+ - all_nodes # provided by allNodesConfig
- '"%{::osfamily}"'
- common
datafiles:
@@ -118,29 +136,29 @@ resources:
raw_data: {get_file: hieradata/common.yaml}
object:
raw_data: {get_file: hieradata/object.yaml}
- oac_data: # data we map in from other OAC configurations
- tripleo::ringbuilder::devices: swift.devices
mapped_data: # data supplied directly to this deployment configuration, etc
swift::swift_hash_suffix: { get_input: swift_hash_suffix }
tripleo::ringbuilder::part_power: { get_input: swift_part_power }
tripleo::ringbuilder::replicas: {get_input: swift_replicas }
# Swift
- swift::storage::all::storage_local_net_ip: {get_input: local_ip}
+ swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
swift_mount_check: {get_input: swift_mount_check }
tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
ntp::servers: {get_input: ntp_servers}
# NOTE(dprince): build_ring support is currently not wired in.
# See: https://review.openstack.org/#/c/109225/
tripleo::ringbuilder::build_ring: True
+ snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
+ snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
enable_package_install: {get_input: enable_package_install}
SwiftStorageHieraDeploy:
type: OS::Heat::StructuredDeployment
+ depends_on: NetworkDeployment
properties:
server: {get_resource: SwiftStorage}
config: {get_resource: SwiftStorageHieraConfig}
- signal_transport: NO_SIGNAL
input_values:
local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
@@ -156,6 +174,7 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
@@ -173,7 +192,7 @@ outputs:
hosts_entry:
value:
str_replace:
- template: "IP HOST"
+ template: "IP HOST.localdomain HOST"
params:
IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
HOST: {get_attr: [SwiftStorage, name]}
@@ -187,7 +206,7 @@ outputs:
str_replace:
template: 'r1z1-IP:%PORT%/d1'
params:
- IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
internal_api_ip_address:
description: IP address of the server in the internal_api network
value: {get_attr: [InternalApiPort, ip_address]}
@@ -197,3 +216,7 @@ outputs:
storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
+
diff --git a/puppet/vip-config.yaml b/puppet/vip-config.yaml
index c083821e..1dec489c 100644
--- a/puppet/vip-config.yaml
+++ b/puppet/vip-config.yaml
@@ -27,7 +27,6 @@ resources:
horizon_vip: {get_input: horizon_vip}
redis_vip: {get_input: redis_vip}
mysql_vip: {get_input: mysql_vip}
- mysql_vip: {get_input: mysql_vip}
tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
tripleo::loadbalancer::controller_virtual_ip: {get_input: control_virtual_ip}
tripleo::loadbalancer::internal_api_virtual_ip: {get_input: internal_api_virtual_ip}