diff options
27 files changed, 121 insertions, 16 deletions
diff --git a/ceph-storage-post.yaml b/ceph-storage-post.yaml index 06c2a291..734f90bd 100644 --- a/ceph-storage-post.yaml +++ b/ceph-storage-post.yaml @@ -6,6 +6,9 @@ description: 'Ceph Storage Post Deployment' 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/ceph-storage.yaml b/ceph-storage.yaml index 2b44642b..15092bae 100644 --- a/ceph-storage.yaml +++ b/ceph-storage.yaml @@ -152,3 +152,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: "None - NO_SIGNAL" diff --git a/cinder-storage-post.yaml b/cinder-storage-post.yaml index 8943c502..ad4e0460 100644 --- a/cinder-storage-post.yaml +++ b/cinder-storage-post.yaml @@ -6,6 +6,9 @@ description: 'Common Block Storage Post Deployment' 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/cinder-storage.yaml b/cinder-storage.yaml index 2b59607e..be088d66 100644 --- a/cinder-storage.yaml +++ b/cinder-storage.yaml @@ -222,3 +222,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: "None - NO_SIGNAL" diff --git a/compute-post.yaml b/compute-post.yaml index e568a5a6..695690d4 100644 --- a/compute-post.yaml +++ b/compute-post.yaml @@ -6,6 +6,9 @@ description: 'Compute Post Deployment' 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/compute.yaml b/compute.yaml index 408e0f31..4a9a92b9 100644 --- a/compute.yaml +++ b/compute.yaml @@ -477,3 +477,6 @@ 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: "None - NO_SIGNAL" diff --git a/controller-post.yaml b/controller-post.yaml index 926adeae..aac96357 100644 --- a/controller-post.yaml +++ b/controller-post.yaml @@ -6,6 +6,9 @@ description: 'Controller Post Deployment' 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/controller.yaml b/controller.yaml index 36bd77bc..01c69f02 100644 --- a/controller.yaml +++ b/controller.yaml @@ -1046,3 +1046,6 @@ outputs: template: "IP:11211" params: IP: {get_attr: [Controller, networks, ctlplane, 0]} + config_identifier: + description: identifier which changes if the node configuration may need re-applying + value: "None - NO_SIGNAL" diff --git a/environments/network-isolation.yaml b/environments/network-isolation.yaml index 5eb2b2da..937931d1 100644 --- a/environments/network-isolation.yaml +++ b/environments/network-isolation.yaml @@ -33,3 +33,6 @@ resource_registry: OS::TripleO::BlockStorage::Ports::InternalApiPort: ../network/ports/internal_api.yaml OS::TripleO::BlockStorage::Ports::StoragePort: ../network/ports/storage.yaml OS::TripleO::BlockStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml + + # Port assignments for service virtual IPs for the controller role + OS::TripleO::Controller::Ports::RedisVipPort: ../network/ports/vip.yaml diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index e13b9acb..5d175468 100644 --- a/overcloud-without-mergepy.yaml +++ b/overcloud-without-mergepy.yaml @@ -1110,30 +1110,36 @@ resources: depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment] properties: servers: {get_attr: [Controller, attributes, nova_server_resource]} + NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]} ComputeNodesPostDeployment: type: OS::TripleO::ComputePostDeployment depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment] properties: servers: {get_attr: [Compute, attributes, nova_server_resource]} + NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]} ObjectStorageNodesPostDeployment: type: OS::TripleO::ObjectStoragePostDeployment depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment] properties: servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} + NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]} + BlockStorageNodesPostDeployment: type: OS::TripleO::BlockStoragePostDeployment depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment] properties: servers: {get_attr: [BlockStorage, attributes, nova_server_resource]} + NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]} CephStorageNodesPostDeployment: type: OS::TripleO::CephStoragePostDeployment depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment] properties: servers: {get_attr: [CephStorage, attributes, nova_server_resource]} + NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]} outputs: KeystoneURL: 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/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 2250f429..245d8ebb 100644 --- a/puppet/ceph-storage-puppet.yaml +++ b/puppet/ceph-storage-puppet.yaml @@ -157,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 a368ffd1..cc8d17c4 100644 --- a/puppet/cinder-storage-puppet.yaml +++ b/puppet/cinder-storage-puppet.yaml @@ -295,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 b34e7a6f..7e49bc22 100644 --- a/puppet/compute-puppet.yaml +++ b/puppet/compute-puppet.yaml @@ -516,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 3d7ecd58..1e563331 100644 --- a/puppet/controller-puppet.yaml +++ b/puppet/controller-puppet.yaml @@ -1070,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 d0cbe890..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' @@ -90,13 +89,9 @@ pacemaker::corosync::manage_fw: false horizon::allowed_hosts: '*' horizon::django_session_engine: 'django.contrib.sessions.backends.cache' - +# mysql mysql::server::manage_config_file: true -mysql::server::package_name: mariadb-galera-server - -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 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 8ad7239f..3d693313 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp @@ -56,6 +56,7 @@ if hiera('step') >= 1 { controller_hosts => $controller_node_ips, controller_hosts_names => $controller_node_names, manage_vip => false, + mysql_clustercheck => true, haproxy_service_manage => false, } @@ -156,6 +157,7 @@ if hiera('step') >= 1 { config_file => $mysql_config_file, override_options => $mysqld_options, service_manage => false, + service_enabled => false, } } @@ -227,6 +229,7 @@ if hiera('step') >= 2 { # NOTE (spredzy) : The replset can only be run # once all the nodes have joined the cluster. mongodb_conn_validator { $mongo_node_ips_with_port : + timeout => '600', require => Pacemaker::Resource::Service[$::mongodb::params::service_name], before => Mongodb_replset[$mongodb_replset], } @@ -1119,6 +1122,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", @@ -1228,15 +1240,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 : @@ -1251,6 +1254,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", 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 15481032..82922a87 100644 --- a/puppet/swift-storage-puppet.yaml +++ b/puppet/swift-storage-puppet.yaml @@ -216,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/swift-storage-post.yaml b/swift-storage-post.yaml index 53490d71..1b1c406d 100644 --- a/swift-storage-post.yaml +++ b/swift-storage-post.yaml @@ -6,6 +6,9 @@ description: 'Swift Storage Post Deployment' 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/swift-storage.yaml b/swift-storage.yaml index 466f2fbb..e4cacf3c 100644 --- a/swift-storage.yaml +++ b/swift-storage.yaml @@ -198,3 +198,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: "None - NO_SIGNAL" |