diff options
-rwxr-xr-x | extraconfig/tasks/major_upgrade_ceph_mon.sh | 21 | ||||
-rw-r--r-- | extraconfig/tasks/major_upgrade_pacemaker.yaml | 15 | ||||
-rw-r--r-- | overcloud-resource-registry-puppet.yaml | 22 | ||||
-rw-r--r-- | overcloud.yaml | 139 | ||||
-rw-r--r-- | puppet/all-nodes-config.yaml | 27 | ||||
-rw-r--r-- | puppet/blockstorage-config.yaml | 38 | ||||
-rw-r--r-- | puppet/ceph-storage-post.yaml | 81 | ||||
-rw-r--r-- | puppet/cephstorage-config.yaml | 38 | ||||
-rw-r--r-- | puppet/cinder-storage-post.yaml | 91 | ||||
-rw-r--r-- | puppet/compute-config.yaml | 38 | ||||
-rw-r--r-- | puppet/compute-post.yaml | 93 | ||||
-rw-r--r-- | puppet/controller-post.yaml | 117 | ||||
-rw-r--r-- | puppet/objectstorage-config.yaml | 38 | ||||
-rw-r--r-- | puppet/post.yaml | 644 | ||||
-rw-r--r-- | puppet/services/README.rst | 2 | ||||
-rw-r--r-- | puppet/services/services.yaml | 5 | ||||
-rw-r--r-- | puppet/swift-storage-post.yaml | 91 |
17 files changed, 933 insertions, 567 deletions
diff --git a/extraconfig/tasks/major_upgrade_ceph_mon.sh b/extraconfig/tasks/major_upgrade_ceph_mon.sh index 38befbbf..b76dd7c3 100755 --- a/extraconfig/tasks/major_upgrade_ceph_mon.sh +++ b/extraconfig/tasks/major_upgrade_ceph_mon.sh @@ -17,6 +17,21 @@ if ! [[ "$INSTALLED_VERSION" =~ ^0\.94.* ]]; then exit 0 fi +CEPH_STATUS=$(ceph health | awk '{print $1}') +if [ ${CEPH_STATUS} = HEALTH_ERR ]; do + echo ERROR: Ceph cluster status is HEALTH_ERR, cannot be upgraded + exit 1 +fi + +# Useful when upgrading with OSDs num < replica size +if [ $ignore_ceph_upgrade_warnings != "true" ]; then + timeout 300 bash -c "while [ ${CEPH_STATUS} != HEALTH_OK ]; do + echo WARNING: Waiting for Ceph cluster status to go HEALTH_OK; + sleep 30; + CEPH_STATUS=$(ceph health | awk '{print $1}') + done" +fi + MON_PID=$(pidof ceph-mon) MON_ID=$(hostname -s) @@ -37,8 +52,6 @@ if [[ "$UPDATED_VERSION" =~ ^0\.94.* ]]; then echo WARNING: Ceph was not upgraded, restarting daemons service ceph start mon.${MON_ID} elif [[ "$UPDATED_VERSION" =~ ^10\.2.* ]]; then - echo INFO: Ceph was upgraded to Jewel - # RPM could own some of these but we can't take risks on the pre-existing files for d in /var/lib/ceph/mon /var/log/ceph /var/run/ceph /etc/ceph; do chown -R ceph:ceph $d @@ -54,9 +67,11 @@ elif [[ "$UPDATED_VERSION" =~ ^10\.2.* ]]; then # Wait for daemon to be back in the quorum timeout 300 bash -c "until (ceph quorum_status | jq .quorum_names | grep -sq ${MON_ID}); do - echo Waiting for mon.${MON_ID} to re-join quorum; + echo WARNING: Waiting for mon.${MON_ID} to re-join quorum; sleep 10; done" + + echo INFO: Ceph was upgraded to Jewel else echo ERROR: Ceph was upgraded to an unknown release, daemon is stopped, need manual intervention exit 1 diff --git a/extraconfig/tasks/major_upgrade_pacemaker.yaml b/extraconfig/tasks/major_upgrade_pacemaker.yaml index c2e14880..598d22d0 100644 --- a/extraconfig/tasks/major_upgrade_pacemaker.yaml +++ b/extraconfig/tasks/major_upgrade_pacemaker.yaml @@ -26,6 +26,10 @@ parameters: constraints: - allowed_values: ['auto', 'yes', 'no'] default: 'auto' + IgnoreCephUpgradeWarnings: + type: boolean + default: false + description: If enabled, Ceph upgrade will be forced even though cluster or PGs status is not clean resources: # TODO(jistr): for Mitaka->Newton upgrades and further we can use @@ -36,7 +40,16 @@ resources: type: OS::Heat::SoftwareConfig properties: group: script - config: {get_file: major_upgrade_ceph_mon.sh} + config: + list_join: + - '' + - - str_replace: + template: | + #!/bin/bash + ignore_ceph_upgrade_warnings='IGNORE_CEPH_UPGRADE_WARNINGS' + params: + IGNORE_CEPH_UPGRADE_WARNINGS: {get_param: IgnoreCephUpgradeWarnings} + - get_file: major_upgrade_ceph_mon.sh CephMonUpgradeDeployment: type: OS::Heat::SoftwareDeploymentGroup diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml index b0723dd7..f7581615 100644 --- a/overcloud-resource-registry-puppet.yaml +++ b/overcloud-resource-registry-puppet.yaml @@ -10,21 +10,29 @@ resource_registry: OS::TripleO::ObjectStorage::Net::SoftwareConfig: net-config-noop.yaml OS::TripleO::CephStorage: puppet/ceph-storage.yaml OS::TripleO::CephStorage::Net::SoftwareConfig: net-config-noop.yaml - OS::TripleO::ControllerPostDeployment: puppet/controller-post.yaml # set to controller-config-pacemaker.yaml to enable pacemaker OS::TripleO::ControllerConfig: puppet/controller-config.yaml - OS::TripleO::ComputePostDeployment: puppet/compute-post.yaml - OS::TripleO::ObjectStoragePostDeployment: puppet/swift-storage-post.yaml - OS::TripleO::BlockStoragePostDeployment: puppet/cinder-storage-post.yaml - OS::TripleO::CephStoragePostDeployment: puppet/ceph-storage-post.yaml + OS::TripleO::PostDeploySteps: puppet/post.yaml + OS::TripleO::ComputeConfig: puppet/compute-config.yaml + OS::TripleO::BlockStorageConfig: puppet/blockstorage-config.yaml + OS::TripleO::ObjectStorageConfig: puppet/objectstorage-config.yaml + OS::TripleO::CephStorageConfig: puppet/cephstorage-config.yaml OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml OS::TripleO::DefaultPasswords: default_passwords.yaml # Tasks (for internal TripleO usage) OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml - OS::TripleO::Tasks::ControllerPrePuppet: OS::Heat::None - OS::TripleO::Tasks::ControllerPostPuppet: OS::Heat::None + OS::TripleO::Tasks::ControllerPreConfig: OS::Heat::None + OS::TripleO::Tasks::ControllerPostConfig: OS::Heat::None + OS::TripleO::Tasks::ComputePreConfig: OS::Heat::None + OS::TripleO::Tasks::ComputePostConfig: OS::Heat::None + OS::TripleO::Tasks::BlockStoragePreConfig: OS::Heat::None + OS::TripleO::Tasks::BlockStoragePostConfig: OS::Heat::None + OS::TripleO::Tasks::ObjectStoragePreConfig: OS::Heat::None + OS::TripleO::Tasks::ObjectStoragePostConfig: OS::Heat::None + OS::TripleO::Tasks::CephStoragePreConfig: OS::Heat::None + OS::TripleO::Tasks::CephStoragePostConfig: OS::Heat::None OS::TripleO::Server: OS::Nova::Server diff --git a/overcloud.yaml b/overcloud.yaml index d5764926..4092e11b 100644 --- a/overcloud.yaml +++ b/overcloud.yaml @@ -103,18 +103,6 @@ parameters: ControllerCount: type: number default: 1 - controllerExtraConfig: - default: {} - description: | - Deprecated. Use ControllerExtraConfig via parameter_defaults instead. - type: json - ExtraConfig: - default: {} - description: | - Additional configuration to inject into the cluster. The format required - may be implementation specific, e.g puppet hieradata. Any role specific - ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig. - type: json # Compute-specific params ComputeCount: @@ -237,12 +225,6 @@ parameters: BlockStorageCount: type: number default: 0 - BlockStorageExtraConfig: - default: {} - description: | - BlockStorage specific configuration to inject into the cluster. Same - structure as ExtraConfig. - type: json BlockStorageServices: default: - OS::TripleO::Services::CACerts @@ -264,12 +246,6 @@ parameters: ObjectStorageCount: type: number default: 0 - ObjectStorageExtraConfig: - default: {} - description: | - ObjectStorage specific configuration to inject into the cluster. Same - structure as ExtraConfig. - type: json ObjectStorageServices: default: - OS::TripleO::Services::CACerts @@ -294,12 +270,6 @@ parameters: CephStorageCount: type: number default: 0 - CephStorageExtraConfig: - default: {} - description: | - CephStorage specific configuration to inject into the cluster. Same - structure as ExtraConfig. - type: json CephStorageServices: default: - OS::TripleO::Services::CACerts @@ -389,12 +359,6 @@ parameters: List of resources to be removed from CephStorageResourceGroup when doing an update which requires removal of specific resources. -parameter_groups: -- label: deprecated - description: Do not use deprecated params, they will be removed. - parameters: - - controllerExtraConfig - resources: @@ -444,7 +408,6 @@ resources: type: OS::TripleO::Controller properties: CloudDomain: {get_param: CloudDomain} - controllerExtraConfig: {get_param: controllerExtraConfig} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]} EndpointMap: {get_attr: [EndpointMap, endpoint_map]} Hostname: @@ -453,7 +416,15 @@ resources: params: '%stackname%': {get_param: 'OS::stack_name'} NodeIndex: '%index%' - ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]} + ServiceConfigSettings: + map_merge: + - get_attr: [ControllerServiceChain, role_data, config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] + - get_attr: [ComputeServiceChain, role_data, global_config_settings] + - get_attr: [BlockStorageServiceChain, role_data, global_config_settings] + - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings] + - get_attr: [CephStorageServiceChain, role_data, global_config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]} MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]} @@ -485,7 +456,14 @@ resources: params: '%stackname%': {get_param: 'OS::stack_name'} NodeIndex: '%index%' - ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]} + ServiceConfigSettings: + map_merge: + - get_attr: [ComputeServiceChain, role_data, config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] + - get_attr: [ComputeServiceChain, role_data, global_config_settings] + - get_attr: [BlockStorageServiceChain, role_data, global_config_settings] + - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings] + - get_attr: [CephStorageServiceChain, role_data, global_config_settings] ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]} MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]} @@ -513,12 +491,17 @@ resources: params: '%stackname%': {get_param: 'OS::stack_name'} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]} - ExtraConfig: {get_param: ExtraConfig} - BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig} CloudDomain: {get_param: CloudDomain} ServerMetadata: {get_param: ServerMetadata} NodeIndex: '%index%' - ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]} + ServiceConfigSettings: + map_merge: + - get_attr: [BlockStorageServiceChain, role_data, config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] + - get_attr: [ComputeServiceChain, role_data, global_config_settings] + - get_attr: [BlockStorageServiceChain, role_data, global_config_settings] + - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings] + - get_attr: [CephStorageServiceChain, role_data, global_config_settings] ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]} MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]} @@ -546,12 +529,17 @@ resources: template: {get_param: ObjectStorageHostnameFormat} params: '%stackname%': {get_param: 'OS::stack_name'} - ExtraConfig: {get_param: ExtraConfig} - ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig} CloudDomain: {get_param: CloudDomain} ServerMetadata: {get_param: ServerMetadata} NodeIndex: '%index%' - ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]} + ServiceConfigSettings: + map_merge: + - get_attr: [ObjectStorageServiceChain, role_data, config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] + - get_attr: [ComputeServiceChain, role_data, global_config_settings] + - get_attr: [BlockStorageServiceChain, role_data, global_config_settings] + - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings] + - get_attr: [CephStorageServiceChain, role_data, global_config_settings] ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]} MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]} @@ -579,12 +567,17 @@ resources: template: {get_param: CephStorageHostnameFormat} params: '%stackname%': {get_param: 'OS::stack_name'} - ExtraConfig: {get_param: ExtraConfig} - CephStorageExtraConfig: {get_param: CephStorageExtraConfig} CloudDomain: {get_param: CloudDomain} ServerMetadata: {get_param: ServerMetadata} NodeIndex: '%index%' - ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]} + ServiceConfigSettings: + map_merge: + - get_attr: [CephStorageServiceChain, role_data, config_settings] + - get_attr: [ControllerServiceChain, role_data, global_config_settings] + - get_attr: [ComputeServiceChain, role_data, global_config_settings] + - get_attr: [BlockStorageServiceChain, role_data, global_config_settings] + - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings] + - get_attr: [CephStorageServiceChain, role_data, global_config_settings] ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]} MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]} @@ -952,42 +945,22 @@ resources: objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]} - # Nested stack deployment runs after all other controller deployments - ControllerNodesPostDeployment: - type: OS::TripleO::ControllerPostDeployment - depends_on: [ControllerAllNodesDeployment] - properties: - servers: {get_attr: [Controller, attributes, nova_server_resource]} - RoleData: {get_attr: [ControllerServiceChain, role_data]} - - ComputeNodesPostDeployment: - type: OS::TripleO::ComputePostDeployment - depends_on: [ComputeAllNodesDeployment] + # Post deployment steps for all roles + AllNodesDeploySteps: + type: OS::TripleO::PostDeploySteps properties: - servers: {get_attr: [Compute, attributes, nova_server_resource]} - RoleData: {get_attr: [ComputeServiceChain, role_data]} - - ObjectStorageNodesPostDeployment: - type: OS::TripleO::ObjectStoragePostDeployment - depends_on: [ObjectStorageAllNodesDeployment] - properties: - servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} - RoleData: {get_attr: [ObjectStorageServiceChain, role_data]} - - BlockStorageNodesPostDeployment: - type: OS::TripleO::BlockStoragePostDeployment - depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment] - properties: - servers: {get_attr: [BlockStorage, attributes, nova_server_resource]} - RoleData: {get_attr: [BlockStorageServiceChain, role_data]} - - CephStorageNodesPostDeployment: - type: OS::TripleO::CephStoragePostDeployment - depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment] - properties: - servers: {get_attr: [CephStorage, attributes, nova_server_resource]} - RoleData: {get_attr: [CephStorageServiceChain, role_data]} - + servers: + Controller: {get_attr: [Controller, attributes, nova_server_resource]} + Compute: {get_attr: [Compute, attributes, nova_server_resource]} + BlockStorage: {get_attr: [BlockStorage, attributes, nova_server_resource]} + ObjectStorage: {get_attr: [ObjectStorage, attributes, nova_server_resource]} + CephStorage: {get_attr: [CephStorage, attributes, nova_server_resource]} + role_data: + Controller: {get_attr: [ControllerServiceChain, role_data]} + Compute: {get_attr: [ComputeServiceChain, role_data]} + BlockStorage: {get_attr: [BlockStorageServiceChain, role_data]} + ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data]} + CephStorage: {get_attr: [CephStorageServiceChain, role_data]} outputs: ManagedEndpoints: diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml index 05c58055..c764d4ef 100644 --- a/puppet/all-nodes-config.yaml +++ b/puppet/all-nodes-config.yaml @@ -90,6 +90,33 @@ resources: for_each: SERVICE: str_split: [',', {get_param: enabled_services}] + # Dynamically generate per-service network data + # This works as follows (outer->inner functions) + # yaql - filters services where no mapping exists in ServiceNetMap + # map_replace: substitute e.g heat_api_network with network name from ServiceNetMap + # map_merge/repeat: generate a per-service mapping + - yaql: + # This filters any entries where the value hasn't been substituted for + # a list, e.g it's still $service_network. This happens when there is + # no network defined for the service in the ServiceNetMap, which is OK + # as not all services have to be bound to a network, so we filter them + expression: dict($.data.map.items().where(isString($[1]) and not $[1].endsWith("_network"))) + data: + map: + map_replace: + - map_merge: + repeat: + template: + SERVICE_network: SERVICE_network + for_each: + SERVICE: + str_split: [',', {get_param: enabled_services}] + - values: {get_param: ServiceNetMap} + # Keystone doesn't provide separate entries for the public + # and admin endpoints, so we need to add them here manually + # like we do in the vip-config below + - keystone_admin_api_network: {get_param: [ServiceNetMap, keystone_admin_api_network]} + keystone_public_api_network: {get_param: [ServiceNetMap, keystone_public_api_network]} # provides a mapping of service_name_ips to a list of IPs - {get_param: service_ips} - {get_param: service_node_names} diff --git a/puppet/blockstorage-config.yaml b/puppet/blockstorage-config.yaml new file mode 100644 index 00000000..9b31b448 --- /dev/null +++ b/puppet/blockstorage-config.yaml @@ -0,0 +1,38 @@ +heat_template_version: 2015-04-30 + +description: > + A software config which runs manifests/overcloud_volume.pp + +parameters: + ConfigDebug: + 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: + + BlockStoragePuppetConfigImpl: + type: OS::Heat::SoftwareConfig + properties: + group: puppet + options: + enable_debug: {get_param: ConfigDebug} + enable_hiera: True + enable_facter: False + modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules + outputs: + - name: result + config: + list_join: + - '' + - - get_file: manifests/overcloud_volume.pp + - {get_param: StepConfig} + +outputs: + OS::stack_id: + description: The software config which runs overcloud_controller.pp + value: {get_resource: BlockStoragePuppetConfigImpl} diff --git a/puppet/ceph-storage-post.yaml b/puppet/ceph-storage-post.yaml deleted file mode 100644 index df6b7249..00000000 --- a/puppet/ceph-storage-post.yaml +++ /dev/null @@ -1,81 +0,0 @@ -heat_template_version: 2015-04-30 - -description: > - OpenStack ceph storage node post deployment for Puppet - -parameters: - ConfigDebug: - default: false - description: Whether to run config management (e.g. Puppet) in debug mode. - type: boolean - servers: - type: json - RoleData: - type: json - default: {} - DeployIdentifier: - type: string - default: '' - description: Value which changes if the node configuration may need to be re-applied - -resources: - - CephStorageArtifactsConfig: - type: deploy-artifacts.yaml - - CephStorageArtifactsDeploy: - type: OS::Heat::StructuredDeployments - properties: - servers: {get_param: servers} - config: {get_resource: CephStorageArtifactsConfig} - input_values: - update_identifier: {get_param: DeployIdentifier} - - CephStoragePuppetConfig: - type: OS::Heat::SoftwareConfig - properties: - group: puppet - options: - enable_debug: {get_param: ConfigDebug} - enable_hiera: True - enable_facter: False - modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules - inputs: - - name: step - outputs: - - name: result - config: - list_join: - - '' - - - get_file: manifests/overcloud_cephstorage.pp - - {get_param: [RoleData, step_config]} - - CephStorageDeployment_Step2: - type: OS::Heat::StructuredDeployments - depends_on: CephStorageArtifactsDeploy - properties: - name: CephStorageDeployment_Step2 - servers: {get_param: servers} - config: {get_resource: CephStoragePuppetConfig} - input_values: - step: 2 - update_identifier: {get_param: DeployIdentifier} - - CephStorageDeployment_Step3: - type: OS::Heat::StructuredDeployments - depends_on: CephStorageDeployment_Step2 - properties: - name: CephStorageDeployment_Step3 - servers: {get_param: servers} - config: {get_resource: CephStoragePuppetConfig} - input_values: - step: 3 - update_identifier: {get_param: DeployIdentifier} - - # Note, this should come last, so use depends_on to ensure - # this is created after any other resources. - ExtraConfig: - depends_on: CephStorageDeployment_Step3 - type: OS::TripleO::NodeExtraConfigPost - properties: - servers: {get_param: servers} diff --git a/puppet/cephstorage-config.yaml b/puppet/cephstorage-config.yaml new file mode 100644 index 00000000..4bad4a16 --- /dev/null +++ b/puppet/cephstorage-config.yaml @@ -0,0 +1,38 @@ +heat_template_version: 2015-04-30 + +description: > + A software config which runs manifests/overcloud_cephstorage.pp + +parameters: + ConfigDebug: + 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: + + CephStoragePuppetConfigImpl: + type: OS::Heat::SoftwareConfig + properties: + group: puppet + options: + enable_debug: {get_param: ConfigDebug} + enable_hiera: True + enable_facter: False + modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules + outputs: + - name: result + config: + list_join: + - '' + - - get_file: manifests/overcloud_cephstorage.pp + - {get_param: StepConfig} + +outputs: + OS::stack_id: + description: The software config which runs overcloud_controller.pp + value: {get_resource: CephStoragePuppetConfigImpl} diff --git a/puppet/cinder-storage-post.yaml b/puppet/cinder-storage-post.yaml deleted file mode 100644 index 0620bc6c..00000000 --- a/puppet/cinder-storage-post.yaml +++ /dev/null @@ -1,91 +0,0 @@ -heat_template_version: 2015-04-30 -description: 'OpenStack cinder storage post deployment for Puppet' - -parameters: - ConfigDebug: - default: false - description: Whether to run config management (e.g. Puppet) in debug mode. - type: boolean - servers: - type: json - DeployIdentifier: - type: string - default: '' - description: Value which changes if the node configuration may need to be re-applied - RoleData: - type: json - default: {} - -resources: - - VolumeArtifactsConfig: - type: deploy-artifacts.yaml - - VolumeArtifactsDeploy: - type: OS::Heat::StructuredDeployments - properties: - servers: {get_param: servers} - config: {get_resource: VolumeArtifactsConfig} - input_values: - update_identifier: {get_param: DeployIdentifier} - - VolumePuppetConfig: - type: OS::Heat::SoftwareConfig - depends_on: VolumeArtifactsDeploy - properties: - group: puppet - options: - enable_debug: {get_param: ConfigDebug} - enable_hiera: True - enable_facter: False - modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules - inputs: - - name: step - outputs: - - name: result - config: - list_join: - - '' - - - get_file: manifests/overcloud_volume.pp - - {get_param: [RoleData, step_config]} - - VolumeDeployment_Step2: - type: OS::Heat::StructuredDeployments - depends_on: VolumeArtifactsDeploy - properties: - name: VolumeDeployment_Step2 - servers: {get_param: servers} - config: {get_resource: VolumePuppetConfig} - input_values: - step: 2 - update_identifier: {get_param: DeployIdentifier} - - VolumeDeployment_Step3: - type: OS::Heat::StructuredDeployments - depends_on: VolumeDeployment_Step2 - properties: - name: VolumeDeployment_Step3 - servers: {get_param: servers} - config: {get_resource: VolumePuppetConfig} - input_values: - step: 3 - update_identifier: {get_param: DeployIdentifier} - - VolumeDeployment_Step4: - type: OS::Heat::StructuredDeployments - depends_on: VolumeDeployment_Step3 - properties: - name: VolumeDeployment_Step4 - servers: {get_param: servers} - config: {get_resource: VolumePuppetConfig} - input_values: - step: 4 - update_identifier: {get_param: DeployIdentifier} - - # Note, this should come last, so use depends_on to ensure - # this is created after any other resources. - ExtraConfig: - depends_on: VolumeDeployment_Step4 - type: OS::TripleO::NodeExtraConfigPost - properties: - servers: {get_param: servers} diff --git a/puppet/compute-config.yaml b/puppet/compute-config.yaml new file mode 100644 index 00000000..9e128d3a --- /dev/null +++ b/puppet/compute-config.yaml @@ -0,0 +1,38 @@ +heat_template_version: 2015-04-30 + +description: > + A software config which runs manifests/overcloud_compute.pp + +parameters: + ConfigDebug: + 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: + + ComputePuppetConfigImpl: + type: OS::Heat::SoftwareConfig + properties: + group: puppet + options: + enable_debug: {get_param: ConfigDebug} + enable_hiera: True + enable_facter: False + modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules + outputs: + - name: result + config: + list_join: + - '' + - - get_file: manifests/overcloud_compute.pp + - {get_param: StepConfig} + +outputs: + OS::stack_id: + description: The software config which runs overcloud_controller.pp + value: {get_resource: ComputePuppetConfigImpl} diff --git a/puppet/compute-post.yaml b/puppet/compute-post.yaml deleted file mode 100644 index 358ec5a8..00000000 --- a/puppet/compute-post.yaml +++ /dev/null @@ -1,93 +0,0 @@ -heat_template_version: 2015-04-30 - -description: > - OpenStack compute node post deployment for Puppet. - -parameters: - ConfigDebug: - default: false - description: Whether to run config management (e.g. Puppet) in debug mode. - type: boolean - servers: - type: json - RoleData: - type: json - default: {} - DeployIdentifier: - type: string - default: '' - description: Value which changes if the node configuration may need to be re-applied - -resources: - - ComputeArtifactsConfig: - type: deploy-artifacts.yaml - - ComputeArtifactsDeploy: - type: OS::Heat::StructuredDeployments - properties: - servers: {get_param: servers} - config: {get_resource: ComputeArtifactsConfig} - input_values: - update_identifier: {get_param: DeployIdentifier} - - ComputePuppetConfig: - type: OS::Heat::SoftwareConfig - properties: - group: puppet - options: - enable_debug: {get_param: ConfigDebug} - enable_hiera: True - enable_facter: False - modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules - inputs: - - name: step - outputs: - - name: result - config: - list_join: - - '' - - - get_file: manifests/overcloud_compute.pp - - {get_param: [RoleData, step_config]} - - ComputeServicesBaseDeployment_Step2: - type: OS::Heat::StructuredDeployments - depends_on: [ComputeArtifactsDeploy] - properties: - name: ComputeServicesBaseDeployment_Step2 - servers: {get_param: servers} - config: {get_resource: ComputePuppetConfig} - input_values: - step: 2 - update_identifier: {get_param: DeployIdentifier} - - ComputeOvercloudServicesDeployment_Step3: - type: OS::Heat::StructuredDeployments - depends_on: ComputeServicesBaseDeployment_Step2 - properties: - name: ComputeOvercloudServicesDeployment_Step3 - servers: {get_param: servers} - config: {get_resource: ComputePuppetConfig} - input_values: - step: 3 - update_identifier: {get_param: DeployIdentifier} - - ComputeOvercloudServicesDeployment_Step4: - type: OS::Heat::StructuredDeployments - depends_on: ComputeOvercloudServicesDeployment_Step3 - properties: - name: ComputeOvercloudServicesDeployment_Step4 - servers: {get_param: servers} - config: {get_resource: ComputePuppetConfig} - input_values: - step: 4 - update_identifier: {get_param: DeployIdentifier} - - # Note, this should come last, so use depends_on to ensure - # this is created after any other resources. - ExtraConfig: - depends_on: ComputeOvercloudServicesDeployment_Step4 - type: OS::TripleO::NodeExtraConfigPost - properties: - servers: {get_param: servers} - diff --git a/puppet/controller-post.yaml b/puppet/controller-post.yaml deleted file mode 100644 index c97c3bc8..00000000 --- a/puppet/controller-post.yaml +++ /dev/null @@ -1,117 +0,0 @@ -heat_template_version: 2015-04-30 - -description: > - OpenStack controller node post deployment for Puppet. - -parameters: - ConfigDebug: - default: false - description: Whether to run config management (e.g. Puppet) in debug mode. - type: boolean - servers: - type: json - RoleData: - type: json - default: {} - DeployIdentifier: - type: string - default: '' - description: Value which changes if the node configuration may need to be re-applied - -resources: - - ControllerArtifactsConfig: - type: deploy-artifacts.yaml - - ControllerArtifactsDeploy: - type: OS::Heat::StructuredDeployments - properties: - servers: {get_param: servers} - config: {get_resource: ControllerArtifactsConfig} - - ControllerPrePuppet: - type: OS::TripleO::Tasks::ControllerPrePuppet - properties: - servers: {get_param: servers} - input_values: - update_identifier: {get_param: DeployIdentifier} - - ControllerPuppetConfig: - type: OS::TripleO::ControllerConfig - properties: - StepConfig: {get_param: [RoleData, step_config]} - - # Step through a series of Puppet runs using the same manifest. - # NOTE: To enable stepping through the deployments via heat hooks, - # you must observe the glob naming defined in overcloud-steps.yaml - # e.g all Deployment resources should have a *Deployment_StepN suffix - ControllerLoadBalancerDeployment_Step1: - type: OS::Heat::StructuredDeployments - depends_on: [ControllerPrePuppet, ControllerArtifactsDeploy] - properties: - name: ControllerLoadBalancerDeployment_Step1 - servers: {get_param: servers} - config: {get_resource: ControllerPuppetConfig} - input_values: - step: 1 - update_identifier: {get_param: DeployIdentifier} - - ControllerServicesBaseDeployment_Step2: - type: OS::Heat::StructuredDeployments - depends_on: ControllerLoadBalancerDeployment_Step1 - properties: - name: ControllerServicesBaseDeployment_Step2 - servers: {get_param: servers} - config: {get_resource: ControllerPuppetConfig} - input_values: - step: 2 - update_identifier: {get_param: DeployIdentifier} - - ControllerOvercloudServicesDeployment_Step3: - type: OS::Heat::StructuredDeployments - depends_on: ControllerServicesBaseDeployment_Step2 - properties: - name: ControllerOvercloudServicesDeployment_Step3 - servers: {get_param: servers} - config: {get_resource: ControllerPuppetConfig} - input_values: - step: 3 - update_identifier: {get_param: DeployIdentifier} - - ControllerOvercloudServicesDeployment_Step4: - type: OS::Heat::StructuredDeployments - depends_on: ControllerOvercloudServicesDeployment_Step3 - properties: - name: ControllerOvercloudServicesDeployment_Step4 - servers: {get_param: servers} - config: {get_resource: ControllerPuppetConfig} - input_values: - step: 4 - update_identifier: {get_param: DeployIdentifier} - - ControllerOvercloudServicesDeployment_Step5: - type: OS::Heat::StructuredDeployments - depends_on: ControllerOvercloudServicesDeployment_Step4 - properties: - name: ControllerOvercloudServicesDeployment_Step5 - servers: {get_param: servers} - config: {get_resource: ControllerPuppetConfig} - input_values: - step: 5 - update_identifier: {get_param: DeployIdentifier} - - ControllerPostPuppet: - type: OS::TripleO::Tasks::ControllerPostPuppet - depends_on: ControllerOvercloudServicesDeployment_Step5 - properties: - servers: {get_param: servers} - input_values: - update_identifier: {get_param: DeployIdentifier} - - # Note, this should come last, so use depends_on to ensure - # this is created after any other resources. - ExtraConfig: - depends_on: ControllerPostPuppet - type: OS::TripleO::NodeExtraConfigPost - properties: - servers: {get_param: servers} diff --git a/puppet/objectstorage-config.yaml b/puppet/objectstorage-config.yaml new file mode 100644 index 00000000..1dee8e60 --- /dev/null +++ b/puppet/objectstorage-config.yaml @@ -0,0 +1,38 @@ +heat_template_version: 2015-04-30 + +description: > + A software config which runs manifests/overcloud_object.pp + +parameters: + ConfigDebug: + 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: + + ObjectStoragePuppetConfigImpl: + type: OS::Heat::SoftwareConfig + properties: + group: puppet + options: + enable_debug: {get_param: ConfigDebug} + enable_hiera: True + enable_facter: False + modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules + outputs: + - name: result + config: + list_join: + - '' + - - get_file: manifests/overcloud_object.pp + - {get_param: StepConfig} + +outputs: + OS::stack_id: + description: The software config which runs overcloud_controller.pp + value: {get_resource: ObjectStoragePuppetConfigImpl} diff --git a/puppet/post.yaml b/puppet/post.yaml new file mode 100644 index 00000000..8f57b34e --- /dev/null +++ b/puppet/post.yaml @@ -0,0 +1,644 @@ +heat_template_version: 2016-10-14 + +description: > + Post-deploy configuration steps via puppet for all roles, + Controller, Compute, BlockStorage, SwiftStorage and CephStorage. + +parameters: + servers: + type: json + description: Mapping of Role name e.g Controller to a list of servers + + role_data: + type: json + description: Mapping of Role name e.g Controller to the per-role data + + DeployIdentifier: + default: '' + type: string + description: > + Setting this to a unique value will re-run any deployment tasks which + perform configuration on a Heat stack-update. + +resources: + # Post deployment steps for all roles + # A single config is re-applied with an incrementing step number + # Controller Role steps + ControllerArtifactsConfig: + type: deploy-artifacts.yaml + + ControllerArtifactsDeploy: + type: OS::Heat::StructuredDeployments + properties: + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerArtifactsConfig} + + ControllerPreConfig: + type: OS::TripleO::Tasks::ControllerPreConfig + properties: + servers: {get_param: [servers, Controller]} + input_values: + update_identifier: {get_param: DeployIdentifier} + + ControllerConfig: + type: OS::TripleO::ControllerConfig + properties: + StepConfig: {get_param: [role_data, Controller, step_config]} + + # Step through a series of configuration steps + ControllerDeployment_Step1: + type: OS::Heat::StructuredDeploymentGroup + depends_on: [ControllerPreConfig, ControllerArtifactsDeploy] + properties: + name: ControllerDeployment_Step1 + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerConfig} + input_values: + step: 1 + update_identifier: {get_param: DeployIdentifier} + + ControllerDeployment_Step2: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step1 + - ComputeDeployment_Step1 + - BlockStorageDeployment_Step1 + - ObjectStorageDeployment_Step1 + - CephStorageDeployment_Step1 + properties: + name: ControllerDeployment_Step2 + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerConfig} + input_values: + step: 2 + update_identifier: {get_param: DeployIdentifier} + + ControllerDeployment_Step3: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step2 + - ComputeDeployment_Step2 + - BlockStorageDeployment_Step2 + - ObjectStorageDeployment_Step2 + - CephStorageDeployment_Step2 + properties: + name: ControllerDeployment_Step3 + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerConfig} + input_values: + step: 3 + update_identifier: {get_param: DeployIdentifier} + + ControllerDeployment_Step4: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step3 + - ComputeDeployment_Step3 + - BlockStorageDeployment_Step3 + - ObjectStorageDeployment_Step3 + - CephStorageDeployment_Step3 + properties: + name: ControllerDeployment_Step4 + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerConfig} + input_values: + step: 4 + update_identifier: {get_param: DeployIdentifier} + + ControllerDeployment_Step5: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step4 + - ComputeDeployment_Step4 + - BlockStorageDeployment_Step4 + - ObjectStorageDeployment_Step4 + - CephStorageDeployment_Step4 + properties: + name: ControllerDeployment_Step5 + servers: {get_param: [servers, Controller]} + config: {get_resource: ControllerConfig} + input_values: + step: 5 + update_identifier: {get_param: DeployIdentifier} + + ControllerPostConfig: + type: OS::TripleO::Tasks::ControllerPostConfig + depends_on: + - ControllerDeployment_Step5 + - ComputeDeployment_Step5 + - BlockStorageDeployment_Step5 + - ObjectStorageDeployment_Step5 + - CephStorageDeployment_Step5 + properties: + servers: {get_param: servers} + input_values: + update_identifier: {get_param: DeployIdentifier} + + # Note, this should come last, so use depends_on to ensure + # this is created after any other resources. + ControllerExtraConfigPost: + depends_on: + - ControllerPostConfig + - ComputePostConfig + - BlockStoragePostConfig + - ObjectStoragePostConfig + - CephStoragePostConfig + type: OS::TripleO::NodeExtraConfigPost + properties: + servers: {get_param: [servers, Controller]} + + # Compute Role steps + ComputeArtifactsConfig: + type: deploy-artifacts.yaml + + ComputeArtifactsDeploy: + type: OS::Heat::StructuredDeployments + properties: + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeArtifactsConfig} + + ComputePreConfig: + type: OS::TripleO::Tasks::ComputePreConfig + properties: + servers: {get_param: [servers, Compute]} + input_values: + update_identifier: {get_param: DeployIdentifier} + + ComputeConfig: + type: OS::TripleO::ComputeConfig + properties: + StepConfig: {get_param: [role_data, Compute, step_config]} + + # Step through a series of configuration steps + ComputeDeployment_Step1: + type: OS::Heat::StructuredDeploymentGroup + depends_on: [ComputePreConfig, ComputeArtifactsDeploy] + properties: + name: ComputeDeployment_Step1 + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeConfig} + input_values: + step: 1 + update_identifier: {get_param: DeployIdentifier} + + ComputeDeployment_Step2: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step1 + - ComputeDeployment_Step1 + - BlockStorageDeployment_Step1 + - ObjectStorageDeployment_Step1 + - CephStorageDeployment_Step1 + properties: + name: ComputeDeployment_Step2 + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeConfig} + input_values: + step: 2 + update_identifier: {get_param: DeployIdentifier} + + ComputeDeployment_Step3: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step2 + - ComputeDeployment_Step2 + - BlockStorageDeployment_Step2 + - ObjectStorageDeployment_Step2 + - CephStorageDeployment_Step2 + properties: + name: ComputeDeployment_Step3 + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeConfig} + input_values: + step: 3 + update_identifier: {get_param: DeployIdentifier} + + ComputeDeployment_Step4: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step3 + - ComputeDeployment_Step3 + - BlockStorageDeployment_Step3 + - ObjectStorageDeployment_Step3 + - CephStorageDeployment_Step3 + properties: + name: ComputeDeployment_Step4 + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeConfig} + input_values: + step: 4 + update_identifier: {get_param: DeployIdentifier} + + ComputeDeployment_Step5: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step4 + - ComputeDeployment_Step4 + - BlockStorageDeployment_Step4 + - ObjectStorageDeployment_Step4 + - CephStorageDeployment_Step4 + properties: + name: ComputeDeployment_Step5 + servers: {get_param: [servers, Compute]} + config: {get_resource: ComputeConfig} + input_values: + step: 5 + update_identifier: {get_param: DeployIdentifier} + + ComputePostConfig: + type: OS::TripleO::Tasks::ComputePostConfig + depends_on: + - ControllerDeployment_Step5 + - ComputeDeployment_Step5 + - BlockStorageDeployment_Step5 + - ObjectStorageDeployment_Step5 + - CephStorageDeployment_Step5 + properties: + servers: {get_param: servers} + input_values: + update_identifier: {get_param: DeployIdentifier} + + # Note, this should come last, so use depends_on to ensure + # this is created after any other resources. + ComputeExtraConfigPost: + depends_on: + - ControllerPostConfig + - ComputePostConfig + - BlockStoragePostConfig + - ObjectStoragePostConfig + - CephStoragePostConfig + type: OS::TripleO::NodeExtraConfigPost + properties: + servers: {get_param: [servers, Compute]} + + # BlockStorage Role steps + BlockStorageArtifactsConfig: + type: deploy-artifacts.yaml + + BlockStorageArtifactsDeploy: + type: OS::Heat::StructuredDeployments + properties: + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageArtifactsConfig} + + BlockStoragePreConfig: + type: OS::TripleO::Tasks::BlockStoragePreConfig + properties: + servers: {get_param: [servers, BlockStorage]} + input_values: + update_identifier: {get_param: DeployIdentifier} + + BlockStorageConfig: + type: OS::TripleO::BlockStorageConfig + properties: + StepConfig: {get_param: [role_data, BlockStorage, step_config]} + + # Step through a series of configuration steps + BlockStorageDeployment_Step1: + type: OS::Heat::StructuredDeploymentGroup + depends_on: [BlockStoragePreConfig, BlockStorageArtifactsDeploy] + properties: + name: BlockStorageDeployment_Step1 + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageConfig} + input_values: + step: 1 + update_identifier: {get_param: DeployIdentifier} + + BlockStorageDeployment_Step2: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step1 + - ComputeDeployment_Step1 + - BlockStorageDeployment_Step1 + - ObjectStorageDeployment_Step1 + - CephStorageDeployment_Step1 + properties: + name: BlockStorageDeployment_Step2 + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageConfig} + input_values: + step: 2 + update_identifier: {get_param: DeployIdentifier} + + BlockStorageDeployment_Step3: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step2 + - ComputeDeployment_Step2 + - BlockStorageDeployment_Step2 + - ObjectStorageDeployment_Step2 + - CephStorageDeployment_Step2 + properties: + name: BlockStorageDeployment_Step3 + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageConfig} + input_values: + step: 3 + update_identifier: {get_param: DeployIdentifier} + + BlockStorageDeployment_Step4: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step3 + - ComputeDeployment_Step3 + - BlockStorageDeployment_Step3 + - ObjectStorageDeployment_Step3 + - CephStorageDeployment_Step3 + properties: + name: BlockStorageDeployment_Step4 + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageConfig} + input_values: + step: 4 + update_identifier: {get_param: DeployIdentifier} + + BlockStorageDeployment_Step5: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step4 + - ComputeDeployment_Step4 + - BlockStorageDeployment_Step4 + - ObjectStorageDeployment_Step4 + - CephStorageDeployment_Step4 + properties: + name: BlockStorageDeployment_Step5 + servers: {get_param: [servers, BlockStorage]} + config: {get_resource: BlockStorageConfig} + input_values: + step: 5 + update_identifier: {get_param: DeployIdentifier} + + BlockStoragePostConfig: + type: OS::TripleO::Tasks::BlockStoragePostConfig + depends_on: + - ControllerDeployment_Step5 + - ComputeDeployment_Step5 + - BlockStorageDeployment_Step5 + - ObjectStorageDeployment_Step5 + - CephStorageDeployment_Step5 + properties: + servers: {get_param: servers} + input_values: + update_identifier: {get_param: DeployIdentifier} + + # Note, this should come last, so use depends_on to ensure + # this is created after any other resources. + BlockStorageExtraConfigPost: + depends_on: + - ControllerPostConfig + - ComputePostConfig + - BlockStoragePostConfig + - ObjectStoragePostConfig + - CephStoragePostConfig + type: OS::TripleO::NodeExtraConfigPost + properties: + servers: {get_param: [servers, BlockStorage]} + + # ObjectStorage Role steps + ObjectStorageArtifactsConfig: + type: deploy-artifacts.yaml + + ObjectStorageArtifactsDeploy: + type: OS::Heat::StructuredDeployments + properties: + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageArtifactsConfig} + + ObjectStoragePreConfig: + type: OS::TripleO::Tasks::ObjectStoragePreConfig + properties: + servers: {get_param: [servers, ObjectStorage]} + input_values: + update_identifier: {get_param: DeployIdentifier} + + ObjectStorageConfig: + type: OS::TripleO::ObjectStorageConfig + properties: + StepConfig: {get_param: [role_data, ObjectStorage, step_config]} + + # Step through a series of configuration steps + ObjectStorageDeployment_Step1: + type: OS::Heat::StructuredDeploymentGroup + depends_on: [ObjectStoragePreConfig, ObjectStorageArtifactsDeploy] + properties: + name: ObjectStorageDeployment_Step1 + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageConfig} + input_values: + step: 1 + update_identifier: {get_param: DeployIdentifier} + + ObjectStorageDeployment_Step2: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step1 + - ComputeDeployment_Step1 + - BlockStorageDeployment_Step1 + - ObjectStorageDeployment_Step1 + - CephStorageDeployment_Step1 + properties: + name: ObjectStorageDeployment_Step2 + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageConfig} + input_values: + step: 2 + update_identifier: {get_param: DeployIdentifier} + + ObjectStorageDeployment_Step3: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step2 + - ComputeDeployment_Step2 + - BlockStorageDeployment_Step2 + - ObjectStorageDeployment_Step2 + - CephStorageDeployment_Step2 + properties: + name: ObjectStorageDeployment_Step3 + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageConfig} + input_values: + step: 3 + update_identifier: {get_param: DeployIdentifier} + + ObjectStorageDeployment_Step4: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step3 + - ComputeDeployment_Step3 + - BlockStorageDeployment_Step3 + - ObjectStorageDeployment_Step3 + - CephStorageDeployment_Step3 + properties: + name: ObjectStorageDeployment_Step4 + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageConfig} + input_values: + step: 4 + update_identifier: {get_param: DeployIdentifier} + + ObjectStorageDeployment_Step5: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step4 + - ComputeDeployment_Step4 + - BlockStorageDeployment_Step4 + - ObjectStorageDeployment_Step4 + - CephStorageDeployment_Step4 + properties: + name: ObjectStorageDeployment_Step5 + servers: {get_param: [servers, ObjectStorage]} + config: {get_resource: ObjectStorageConfig} + input_values: + step: 5 + update_identifier: {get_param: DeployIdentifier} + + ObjectStoragePostConfig: + type: OS::TripleO::Tasks::ObjectStoragePostConfig + depends_on: + - ControllerDeployment_Step5 + - ComputeDeployment_Step5 + - BlockStorageDeployment_Step5 + - ObjectStorageDeployment_Step5 + - CephStorageDeployment_Step5 + properties: + servers: {get_param: servers} + input_values: + update_identifier: {get_param: DeployIdentifier} + + # Note, this should come last, so use depends_on to ensure + # this is created after any other resources. + ObjectStorageExtraConfigPost: + depends_on: + - ControllerPostConfig + - ComputePostConfig + - BlockStoragePostConfig + - ObjectStoragePostConfig + - CephStoragePostConfig + type: OS::TripleO::NodeExtraConfigPost + properties: + servers: {get_param: [servers, ObjectStorage]} + + # CephStorage Role steps + CephStorageArtifactsConfig: + type: deploy-artifacts.yaml + + CephStorageArtifactsDeploy: + type: OS::Heat::StructuredDeployments + properties: + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageArtifactsConfig} + + CephStoragePreConfig: + type: OS::TripleO::Tasks::CephStoragePreConfig + properties: + servers: {get_param: [servers, CephStorage]} + input_values: + update_identifier: {get_param: DeployIdentifier} + + CephStorageConfig: + type: OS::TripleO::CephStorageConfig + properties: + StepConfig: {get_param: [role_data, CephStorage, step_config]} + + # Step through a series of configuration steps + CephStorageDeployment_Step1: + type: OS::Heat::StructuredDeploymentGroup + depends_on: [CephStoragePreConfig, CephStorageArtifactsDeploy] + properties: + name: CephStorageDeployment_Step1 + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageConfig} + input_values: + step: 1 + update_identifier: {get_param: DeployIdentifier} + + CephStorageDeployment_Step2: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step1 + - ComputeDeployment_Step1 + - BlockStorageDeployment_Step1 + - ObjectStorageDeployment_Step1 + - CephStorageDeployment_Step1 + properties: + name: CephStorageDeployment_Step2 + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageConfig} + input_values: + step: 2 + update_identifier: {get_param: DeployIdentifier} + + CephStorageDeployment_Step3: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step2 + - ComputeDeployment_Step2 + - BlockStorageDeployment_Step2 + - ObjectStorageDeployment_Step2 + - CephStorageDeployment_Step2 + properties: + name: CephStorageDeployment_Step3 + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageConfig} + input_values: + step: 3 + update_identifier: {get_param: DeployIdentifier} + + CephStorageDeployment_Step4: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step3 + - ComputeDeployment_Step3 + - BlockStorageDeployment_Step3 + - ObjectStorageDeployment_Step3 + - CephStorageDeployment_Step3 + properties: + name: CephStorageDeployment_Step4 + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageConfig} + input_values: + step: 4 + update_identifier: {get_param: DeployIdentifier} + + CephStorageDeployment_Step5: + type: OS::Heat::StructuredDeploymentGroup + depends_on: + - ControllerDeployment_Step4 + - ComputeDeployment_Step4 + - BlockStorageDeployment_Step4 + - ObjectStorageDeployment_Step4 + - CephStorageDeployment_Step4 + properties: + name: CephStorageDeployment_Step5 + servers: {get_param: [servers, CephStorage]} + config: {get_resource: CephStorageConfig} + input_values: + step: 5 + update_identifier: {get_param: DeployIdentifier} + + CephStoragePostConfig: + type: OS::TripleO::Tasks::CephStoragePostConfig + depends_on: + - ControllerDeployment_Step5 + - ComputeDeployment_Step5 + - BlockStorageDeployment_Step5 + - ObjectStorageDeployment_Step5 + - CephStorageDeployment_Step5 + properties: + servers: {get_param: servers} + input_values: + update_identifier: {get_param: DeployIdentifier} + + # Note, this should come last, so use depends_on to ensure + # this is created after any other resources. + CephStorageExtraConfigPost: + depends_on: + - ControllerPostConfig + - ComputePostConfig + - BlockStoragePostConfig + - ObjectStoragePostConfig + - CephStoragePostConfig + type: OS::TripleO::NodeExtraConfigPost + properties: + servers: {get_param: [servers, CephStorage]} diff --git a/puppet/services/README.rst b/puppet/services/README.rst index 15c8c1f1..8fe51fa3 100644 --- a/puppet/services/README.rst +++ b/puppet/services/README.rst @@ -31,6 +31,8 @@ are re-asserted when applying latter ones. * config_settings: Custom hiera settings for this service. + * global_config_settings: Additional hiera settings distributed to all roles. + * 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. diff --git a/puppet/services/services.yaml b/puppet/services/services.yaml index 669e2872..b54a6d7a 100644 --- a/puppet/services/services.yaml +++ b/puppet/services/services.yaml @@ -54,4 +54,9 @@ outputs: expression: list($.data.subscriptions.where($ != null)) data: {subscriptions: {get_attr: [ServiceChain, role_data, monitoring_subscription]}} config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}} + global_config_settings: + map_merge: + yaql: + expression: list($.data.configs.where($ != null)) + data: {configs: {get_attr: [ServiceChain, role_data, global_config_settings]}} step_config: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]} diff --git a/puppet/swift-storage-post.yaml b/puppet/swift-storage-post.yaml deleted file mode 100644 index ebc54ab0..00000000 --- a/puppet/swift-storage-post.yaml +++ /dev/null @@ -1,91 +0,0 @@ -heat_template_version: 2015-04-30 -description: 'OpenStack swift storage node post deployment for Puppet' - -parameters: - ConfigDebug: - default: false - description: Whether to run config management (e.g. Puppet) in debug mode. - type: boolean - servers: - type: json - RoleData: - type: json - default: {} - DeployIdentifier: - type: string - default: '' - description: Value which changes if the node configuration may need to be re-applied - -resources: - - StorageArtifactsConfig: - type: deploy-artifacts.yaml - - StorageArtifactsDeploy: - type: OS::Heat::StructuredDeployments - properties: - servers: {get_param: servers} - config: {get_resource: StorageArtifactsConfig} - input_values: - update_identifier: {get_param: DeployIdentifier} - - StoragePuppetConfig: - type: OS::Heat::SoftwareConfig - properties: - group: puppet - options: - enable_debug: {get_param: ConfigDebug} - enable_hiera: True - enable_facter: False - modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules - inputs: - - name: step - outputs: - - name: result - config: - list_join: - - '' - - - get_file: manifests/overcloud_object.pp - - {get_param: [RoleData, step_config]} - - StorageRingbuilderDeployment_Step2: - type: OS::Heat::StructuredDeployments - depends_on: StorageArtifactsDeploy - properties: - name: StorageRingbuilderDeployment_Step2 - servers: {get_param: servers} - config: {get_resource: StoragePuppetConfig} - input_values: - step: 2 - update_identifier: {get_param: DeployIdentifier} - - StorageRingbuilderDeployment_Step3: - type: OS::Heat::StructuredDeployments - depends_on: StorageRingbuilderDeployment_Step2 - properties: - name: StorageRingbuilderDeployment_Step3 - servers: {get_param: servers} - config: {get_resource: StoragePuppetConfig} - input_values: - step: 3 - update_identifier: {get_param: DeployIdentifier} - - StorageDeployment_Step4: - type: OS::Heat::StructuredDeployments - depends_on: StorageRingbuilderDeployment_Step3 - properties: - name: StorageDeployment_Step4 - servers: {get_param: servers} - config: {get_resource: StoragePuppetConfig} - input_values: - step: 4 - update_identifier: {get_param: DeployIdentifier} - - # Note, this should come last, so use depends_on to ensure - # this is created after any other resources. - ExtraConfig: - depends_on: StorageDeployment_Step4 - type: OS::TripleO::NodeExtraConfigPost - properties: - servers: {get_param: servers} - |