diff options
31 files changed, 1418 insertions, 696 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/network/service_net_map.yaml b/network/service_net_map.yaml index 4cfff402..5d3f087d 100644 --- a/network/service_net_map.yaml +++ b/network/service_net_map.yaml @@ -33,7 +33,7 @@ parameters: NovaApiNetwork: internal_api NovaMetadataNetwork: internal_api NovaVncProxyNetwork: internal_api - SwiftMgmtNetwork: storage_mgmt + SwiftStorageNetwork: storage_mgmt SwiftProxyNetwork: storage SaharaApiNetwork: internal_api HorizonNetwork: internal_api @@ -61,6 +61,7 @@ parameters: MongoDbNetwork: MongodbNetwork RabbitMqNetwork: RabbitmqNetwork CephPublicNetwork: CephMonNetwork + SwiftMgmtNetwork: SwiftStorageNetwork description: Mapping older deprecated service names, intended for internal use only, this will be removed in future. type: json diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml index 6126fb05..f7581615 100644 --- a/overcloud-resource-registry-puppet.yaml +++ b/overcloud-resource-registry-puppet.yaml @@ -10,22 +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::SwiftDevicesAndProxy::SoftwareConfig: puppet/swift-devices-and-proxy-config.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 2a02fda6..4092e11b 100644 --- a/overcloud.yaml +++ b/overcloud.yaml @@ -34,8 +34,8 @@ parameters: The DNS name of this cloud's storage management endpoint. E.g. 'ci-overcloud.storagemgmt.tripleo.org'. type: string - CloudNameManagement: - default: overcloud.management.localdomain + CloudNameCtlplane: + default: overcloud.ctlplane.localdomain description: > The DNS name of this cloud's storage management endpoint. E.g. 'ci-overcloud.management.tripleo.org'. @@ -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: @@ -422,7 +386,7 @@ resources: internal_api: {get_param: CloudNameInternal} storage: {get_param: CloudNameStorage} storage_mgmt: {get_param: CloudNameStorageManagement} - management: {get_param: CloudNameManagement} + ctlplane: {get_param: CloudNameCtlplane} NetIpMap: {get_attr: [VipMap, net_ip_map]} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]} @@ -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]} @@ -665,7 +658,7 @@ resources: cloud_name_internal_api: {get_param: CloudNameInternal} cloud_name_storage: {get_param: CloudNameStorage} cloud_name_storage_mgmt: {get_param: CloudNameStorageManagement} - cloud_name_management: {get_param: CloudNameManagement} + cloud_name_ctlplane: {get_param: CloudNameCtlplane} hosts: - list_join: - '\n' @@ -818,26 +811,6 @@ resources: StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]} # No tenant or management VIP required - ControllerSwiftDeployment: - type: OS::Heat::StructuredDeployments - properties: - name: ControllerSwiftDeployment - config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]} - servers: {get_attr: [Controller, attributes, nova_server_resource]} - - ObjectStorageSwiftDeployment: - type: OS::Heat::StructuredDeployments - properties: - name: ObjectStorageSwiftDeployment - config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]} - servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} - - SwiftDevicesAndProxyConfig: - type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig - properties: - controller_swift_devices: {get_attr: [Controller, swift_device]} - object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]} - ControllerAllNodesDeployment: type: OS::Heat::StructuredDeployments properties: @@ -972,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, ControllerSwiftDeployment] - properties: - servers: {get_attr: [Controller, attributes, nova_server_resource]} - RoleData: {get_attr: [ControllerServiceChain, role_data]} - - ComputeNodesPostDeployment: - type: OS::TripleO::ComputePostDeployment - depends_on: [ComputeAllNodesDeployment] - properties: - servers: {get_attr: [Compute, attributes, nova_server_resource]} - RoleData: {get_attr: [ComputeServiceChain, role_data]} - - ObjectStorageNodesPostDeployment: - type: OS::TripleO::ObjectStoragePostDeployment - depends_on: [ObjectStorageSwiftDeployment, 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] + # Post deployment steps for all roles + AllNodesDeploySteps: + type: OS::TripleO::PostDeploySteps 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 69bb1935..c764d4ef 100644 --- a/puppet/all-nodes-config.yaml +++ b/puppet/all-nodes-config.yaml @@ -10,7 +10,7 @@ parameters: type: string cloud_name_storage_mgmt: type: string - cloud_name_management: + cloud_name_ctlplane: type: string hosts: type: comma_delimited_list @@ -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} @@ -182,7 +209,7 @@ resources: cloud_name_internal_api: {get_param: cloud_name_internal_api} cloud_name_storage: {get_param: cloud_name_storage} cloud_name_storage_mgmt: {get_param: cloud_name_storage_mgmt} - cloud_name_management: {get_param: cloud_name_management} + cloud_name_ctlplane: {get_param: cloud_name_ctlplane} outputs: config_id: 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/controller.yaml b/puppet/controller.yaml index 1656aea7..a18d00d7 100644 --- a/puppet/controller.yaml +++ b/puppet/controller.yaml @@ -62,10 +62,6 @@ parameters: default: nic1 description: What interface to bridge onto br-ex for network nodes. type: string - SwiftRawDisks: - default: {} - description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})' - type: json ServiceNetMap: default: {} description: Mapping of service_name -> network name. Typically set @@ -313,8 +309,7 @@ resources: - service_configs - service_names - controller - - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig - - bootstrap_node # provided by allNodesConfig + - bootstrap_node # provided by BootstrapNodeConfig - all_nodes # provided by allNodesConfig - vip_data # provided by allNodesConfig - '"%{::osfamily}"' @@ -465,27 +460,6 @@ outputs: description: Heat resource handle for the Nova compute server value: {get_resource: Controller} - swift_device: - description: Swift device formatted for swift-ring-builder - value: - str_replace: - template: - list_join: - - ',' - - ['r1z1-IP:%PORT%/d1'] - - repeat: - template: 'r1z1-IP:%PORT%/DEVICE' - for_each: - DEVICE: {get_param: SwiftRawDisks} - params: - IP: - get_attr: - - NetIpMap - - net_ip_map - - str_replace: - template: "NETWORK_uri" - params: - NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]} tls_key_modulus_md5: description: MD5 checksum of the TLS Key Modulus value: {get_attr: [NodeTLSData, key_modulus_md5]} 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/network/contrail-analytics.yaml b/puppet/services/network/contrail-analytics.yaml new file mode 100644 index 00000000..1c2331fa --- /dev/null +++ b/puppet/services/network/contrail-analytics.yaml @@ -0,0 +1,90 @@ +heat_template_version: 2016-04-08 + +description: > + Contrail Analytics service deployment using puppet, this YAML file + creates the interface between the HOT template + and the puppet manifest that actually installs + and configures Contrail Analytics. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ContrailAnalyticsHostIP: + description: host IP address of Analytics + type: string + ContrailAnalyticsRedisServerIp: + description: Redis server ip address + type: string + ContrailAnalyticsCollectorServerHttpPort: + description: Collector http port + type: number + default: 8089 + ContrailAnalyticsCollectorSandeshPort: + description: Collector sandesh port + type: number + default: 8086 + ContrailAnalyticsHttpServerPort: + description: Analytics http port + type: number + default: 8090 + ContrailAnalyticsListenAddress: + default: '0.0.0.0' + description: IP address Config API is listening on + type: string + ContrailAnalyticsListenPort: + default: 8082 + description: Port Config API is listening on + type: number + ContrailAnalyticsRedisServerPort: + description: Redis server port + type: number + default: 6379 + ContrailAnalyticsRestApiIp: + description: IP address Analytics rest interface listens on + type: string + default: '0.0.0.0' + ContrailAnalyticsRestApiPort: + description: Analytics rest port + type: number + default: 8081 + +resources: + ContrailBase: + type: ./contrail-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + +outputs: + role_data: + description: Role Contrail Analytics using composable services. + value: + service_name: contrail_analytics + config_settings: + map_merge: + - get_attr: [ContrailBase, role_data, config_settings] + - contrail::analytics::collector_http_server_port: {get_param: ContrailAnalyticsCollectorServerHttpPort} + contrail::analytics::collector_sandesh_port: {get_param: ContrailAnalyticsCollectorSandeshPort} + contrail::analytics::host_ip: {get_param: ContrailAnalyticsHostIP} + contrail::analytics::http_server_port: {get_param: ContrailAnalyticsHttpServerPort} + contrail::analytics::listen_ip_address: {get_param: ContrailAnalyticsListenAddress} + contrail::analytics::listen_port: {get_param: ContrailAnalyticsListenPort} + contrail::analytics::redis_server: {get_param: ContrailAnalyticsRedisServerIp} + contrail::analytics::redis_server_port: {get_param: ContrailAnalyticsRedisServerPort} + contrail::analytics::rest_api_ip: {get_param: ContrailAnalyticsRestApiIp} + contrail::analytics::rest_api_port: {get_param: ContrailAnalyticsRestApiPort} + step_config: | + include ::tripleo::network::contrail::analytics diff --git a/puppet/services/network/contrail-base.yaml b/puppet/services/network/contrail-base.yaml new file mode 100644 index 00000000..03dbea5b --- /dev/null +++ b/puppet/services/network/contrail-base.yaml @@ -0,0 +1,100 @@ +heat_template_version: 2016-04-08 + +description: > + Base parameters for all Contrail Services. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + AdminPassword: + description: Keystone admin user password + type: string + AdminTenantName: + description: Keystone admin tenant name + type: string + AdminToken: + description: Keystone admin token + type: string + AdminUser: + description: Keystone admin user name + type: string + AuthHost: + description: Keystone host IP address + type: string + AuthPort: + default: 35357 + description: Keystone port + type: number + AuthProtocol: + default: 'http' + description: Keystone authentication protocol + type: string + ContrailDiscoveryServerIp: + description: Discovery server ip address + type: string + ContrailKafkaBrokerList: + description: List of kafka servers + type: comma_delimited_list + ContrailAuth: + default: 'keystone' + description: Keystone authentication method + type: string + ContrailCassandraServerList: + default: [] + description: List of cassandra servers + type: comma_delimited_list + ContrailDiscoveryServerPort: + description: Discovery server port + type: number + default: 5998 + ContrailInsecure: + default: false + description: Keystone insecure mode + type: boolean + ContrailMemcachedServer: + default: '127.0.0.1:12111' + description: Memcached server + type: string + ContrailMultiTenancy: + default: true + description: Turn on/off multi-tenancy + type: boolean + ContrailZkServerIp: + default: [] + description: List of zookeeper servers + type: comma_delimited_list + +outputs: + role_data: + description: Shared role data for the Contrail services. + value: + service_name: contrail_base + config_settings: + contrail::admin_password: {get_param: AdminPassword} + contrail::admin_tenant_name: {get_param: AdminTenantName} + contrail::admin_token: {get_param: AdminToken} + contrail::admin_user: {get_param: AdminUser} + contrail::auth_host: {get_param: [EndpointMap, KeystoneInternal, host] } + contrail::auth_port: {get_param: [EndpointMap, KeystoneInternal, port] } + contrail::auth_protocol: {get_param: [EndpointMap, KeystoneInternal, protocol] } + contrail::disc_server_ip: {get_param: ContrailDiscoveryServerIp} + contrail::kafka_broker_list: {get_param: ContrailKafkaBrokerList} + contrail::auth: {get_param: ContrailAuth} + contrail::cassandra_server_list: {get_param: ContrailCassandraServerList} + contrail::disc_server_port: {get_param: ContrailDiscoveryServerPort} + contrail::insecure: {get_param: ContrailInsecure} + contrail::memcached_server: {get_param: ContrailMemcachedServer} + contrail::multi_tenancy: {get_param: ContrailMultiTenancy} + contrail::zk_server_ip: {get_param: ContrailZkServerIp} diff --git a/puppet/services/network/contrail-config.yaml b/puppet/services/network/contrail-config.yaml new file mode 100644 index 00000000..0987fc75 --- /dev/null +++ b/puppet/services/network/contrail-config.yaml @@ -0,0 +1,72 @@ +heat_template_version: 2016-04-08 + +description: > + Contrail Config service deployment using puppet, this YAML file + creates the interface between the HOT template + and the puppet manifest that actually installs + and configures Contrail Config. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ContrailConfigIfmapServerIp: + description: Ifmap server ip address + type: string + ContrailConfigIfmapUserName: + description: Ifmap user name + type: string + ContrailConfigIfmapUserPassword: + description: Ifmap user password + type: string + ContrailConfigRabbitServerIp: + description: RabbitMq server ip address + type: string + ContrailConfigRedisServerIp: + description: Redis server ip address + type: string + ContrailConfigListenAddress: + default: '0.0.0.0' + description: IP address Config API is listening on + type: string + ContrailConfigListenPort: + default: 8082 + description: Port Config API is listening on + type: number + +resources: + ContrailBase: + type: ./contrail-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + +outputs: + role_data: + description: Role Contrail Config using composable services. + value: + service_name: contrail_config + config_settings: + map_merge: + - get_attr: [ContrailBase, role_data, config_settings] + - contrail::config::ifmap_password: {get_param: ContrailConfigIfmapUserPassword} + contrail::config::ifmap_server_ip: {get_param: ContrailConfigIfmapServerIp} + contrail::config::ifmap_username: {get_param: ContrailConfigIfmapUserName} + contrail::config::listen_ip_address: {get_param: ContrailConfigListenAddress} + contrail::config::listen_port: {get_param: ContrailConfigListenPort} + contrail::config::rabbit_server: {get_param: ContrailConfigRabbitServerIp} + contrail::config::redis_server: {get_param: ContrailConfigRedisServerIp} + step_config: | + include ::tripleo::network::contrail::config diff --git a/puppet/services/network/contrail-control.yaml b/puppet/services/network/contrail-control.yaml new file mode 100644 index 00000000..9356e9e9 --- /dev/null +++ b/puppet/services/network/contrail-control.yaml @@ -0,0 +1,54 @@ +heat_template_version: 2016-04-08 + +description: > + Contrail Control service deployment using puppet, this YAML file + creates the interface between the HOT template + and the puppet manifest that actually installs + and configures Contrail Control. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ContrailControlHostIP: + description: host IP address of Analytics + type: string + ContrailControlIfmapUserName: + description: Ifmap user name + type: string + ContrailControlIfmapUserPassword: + description: Ifmap user password + type: string + +resources: + ContrailBase: + type: ./contrail-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + +outputs: + role_data: + description: Role Contrail Control using composable services. + value: + service_name: contrail_control + config_settings: + map_merge: + - get_attr: [ContrailBase, role_data, config_settings] + - contrail::control::host_ip: {get_param: ContrailControlHostIP} + contrail::control::ifmap_username: {get_param: ContrailControlIfmapUserName} + contrail::control::ifmap_password: {get_param: ContrailControlIfmapUserPassword} + step_config: | + include ::tripleo::network::contrail::control diff --git a/puppet/services/network/contrail-database.yaml b/puppet/services/network/contrail-database.yaml new file mode 100644 index 00000000..e5712618 --- /dev/null +++ b/puppet/services/network/contrail-database.yaml @@ -0,0 +1,51 @@ +heat_template_version: 2016-04-08 + +description: > + Contrail Database service deployment using puppet, this YAML file + creates the interface between the HOT template + and the puppet manifest that actually installs + and configures Contrail Database. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ContrailDatabaseHostIP: + description: host IP address of Database node + type: string + ContrailDatabaseMinDisk: + description: Minimum disk size for database + type: number + default: 64 + +resources: + ContrailBase: + type: ./contrail-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + +outputs: + role_data: + description: Role Contrail Database using composable services. + value: + service_name: contrail_database + config_settings: + map_merge: + - get_attr: [ContrailBase, role_data, config_settings] + - contrail::database::host_ip: {get_param: ContrailDatabaseHostIP} + contrail::database::minimum_diskGB: {get_param: ContrailDatabaseMinDisk} + step_config: | + include ::tripleo::profile::contrail::database diff --git a/puppet/services/network/contrail-webui.yaml b/puppet/services/network/contrail-webui.yaml new file mode 100644 index 00000000..72b9e1c0 --- /dev/null +++ b/puppet/services/network/contrail-webui.yaml @@ -0,0 +1,69 @@ +heat_template_version: 2016-04-08 + +description: > + Contrail WebUI service deployment using puppet, this YAML file + creates the interface between the HOT template + and the puppet manifest that actually installs + and configures Contrail WebUI. + +parameters: + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ContrailWebUiAnalyticsVip: + description: Contrail Analytics VIP + type: string + ContrailWebUiConfigVip: + description: Contrail Config VIP + type: string + ContrailWebUiNeutronVip: + description: Neutron VIP + type: string + ContrailWebuiHttpPort: + default: 8080 + description: HTTP Port of Webui + type: number + ContrailWebuiHttpsPort: + default: 8143 + description: HTTPS Port of Webui + type: number + ContrailWebUiRedisIp: + description: Redis IP + type: string + default: '127.0.0.1' + +resources: + ContrailBase: + type: ./contrail-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} + +outputs: + role_data: + description: Role Contrail WebUI using composable services. + value: + service_name: contrail_webui + config_settings: + map_merge: + - get_attr: [ContrailBase, role_data, config_settings] + - contrail::webui::contrail_analytics_vip: {get_param: ContrailWebUiAnalyticsVip} + contrail::webui::contrail_config_vip: {get_param: ContrailWebUiConfigVip} + contrail::webui::contrail_webui_http_port: {get_param: ContrailWebuiHttpPort} + contrail::webui::contrail_webui_https_port: {get_param: ContrailWebuiHttpsPort} + contrail::webui::neutron_vip: {get_param: ContrailWebUiNeutronVip} + contrail::webui::redis_ip: {get_param: ContrailWebUiRedisIp} + step_config: | + include ::tripleo::network::contrail::webui diff --git a/puppet/services/neutron-sriov-agent.yaml b/puppet/services/neutron-sriov-agent.yaml index b9a93394..44f7f242 100644 --- a/puppet/services/neutron-sriov-agent.yaml +++ b/puppet/services/neutron-sriov-agent.yaml @@ -14,6 +14,11 @@ parameters: DefaultPasswords: default: {} type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json NeutronPhysicalDevMappings: description: > List of <physical_network>:<physical device> @@ -39,11 +44,15 @@ parameters: Example "eth1:4096","eth2:128" type: comma_delimited_list default: "" - EndpointMap: - default: {} - description: Mapping of service endpoint -> protocol. Typically set - via parameter_defaults in the resource registry. - type: json + +resources: + + NeutronBase: + type: ./neutron-base.yaml + properties: + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + EndpointMap: {get_param: EndpointMap} outputs: role_data: @@ -51,8 +60,10 @@ outputs: value: service_name: neutron_sriov_agent config_settings: - neutron::agents::ml2::sriov::physical_device_mappings: {get_param: NeutronPhysicalDevMappings} - neutron::agents::ml2::sriov::exclude_devices: {get_param: NeutronExcludeDevices} - tripleo::host::sriov::number_of_vfs: {get_param: NeutronSriovNumVFs} + map_merge: + - get_attr: [NeutronBase, role_data, config_settings] + - neutron::agents::ml2::sriov::physical_device_mappings: {get_param: NeutronPhysicalDevMappings} + neutron::agents::ml2::sriov::exclude_devices: {get_param: NeutronExcludeDevices} + tripleo::host::sriov::number_of_vfs: {get_param: NeutronSriovNumVFs} step_config: | include ::tripleo::profile::base::neutron::sriov 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/services/swift-ringbuilder.yaml b/puppet/services/swift-ringbuilder.yaml index f41228e7..e151d185 100644 --- a/puppet/services/swift-ringbuilder.yaml +++ b/puppet/services/swift-ringbuilder.yaml @@ -1,4 +1,4 @@ -heat_template_version: 2016-04-08 +heat_template_version: 2016-10-14 description: > OpenStack Swift Ringbuilder @@ -34,6 +34,11 @@ parameters: type: number default: 3 description: How many replicas to use in the swift rings. + SwiftRawDisks: + default: {} + description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})' + type: json + outputs: role_data: @@ -43,6 +48,17 @@ outputs: config_settings: tripleo::profile::base::swift::ringbuilder::build_ring: {get_param: SwiftRingBuild} tripleo::profile::base::swift::ringbuilder::replicas: {get_param: SwiftReplicas} + tripleo::profile::base::swift::ringbuilder::raw_disk_prefix: 'r1z1-' + tripleo::profile::base::swift::ringbuilder::raw_disks: + yaql: + expression: $.data.raw_disk_lists.flatten() + data: + raw_disk_lists: + - [':%PORT%/d1'] + - repeat: + template: ':%PORT%/DEVICE' + for_each: + DEVICE: {get_param: SwiftRawDisks} swift::ringbuilder::part_power: {get_param: SwiftPartPower} swift::ringbuilder::min_part_hours: {get_param: SwiftMinPartHours} step_config: | diff --git a/puppet/services/swift-storage.yaml b/puppet/services/swift-storage.yaml index 91d52569..7fbb8d90 100644 --- a/puppet/services/swift-storage.yaml +++ b/puppet/services/swift-storage.yaml @@ -87,6 +87,6 @@ outputs: - healthcheck - account-server swift::storage::disks: {get_param: SwiftRawDisks} - swift::storage::all::storage_local_net_ip: {get_param: [ServiceNetMap, SwiftMgmtNetwork]} + swift::storage::all::storage_local_net_ip: {get_param: [ServiceNetMap, SwiftStorageNetwork]} step_config: | include ::tripleo::profile::base::swift::storage diff --git a/puppet/services/vip-hosts.yaml b/puppet/services/vip-hosts.yaml index 445a276c..a9d757ee 100644 --- a/puppet/services/vip-hosts.yaml +++ b/puppet/services/vip-hosts.yaml @@ -47,10 +47,10 @@ outputs: ip: "%{hiera('storage_mgmt_virtual_ip')}" ensure: present comment: FQDN of the storage mgmt VIP - management: - name: "%{hiera('cloud_name_management')}" + ctlplane: + name: "%{hiera('cloud_name_ctlplane')}" ip: "%{hiera('controller_virtual_ip')}" ensure: present - comment: FQDN of the management VIP + comment: FQDN of the ctlplane VIP step_config: | include ::tripleo::vip_hosts diff --git a/puppet/swift-devices-and-proxy-config.yaml b/puppet/swift-devices-and-proxy-config.yaml deleted file mode 100644 index afee4dac..00000000 --- a/puppet/swift-devices-and-proxy-config.yaml +++ /dev/null @@ -1,35 +0,0 @@ -heat_template_version: 2015-04-30 -description: 'Swift Devices and Proxy Config for Puppet' - -parameters: - controller_swift_devices: - type: comma_delimited_list - object_store_swift_devices: - type: comma_delimited_list - -resources: - - SwiftDevicesAndProxyConfigImpl: - type: OS::Heat::StructuredConfig - properties: - group: os-apply-config - config: - hiera: - datafiles: - swift_devices_and_proxy: - mapped_data: - tripleo::profile::base::swift::ringbuilder::devices: - list_join: - - ", " - - - list_join: - - ", " - - {get_param: controller_swift_devices} - - list_join: - - ", " - - {get_param: object_store_swift_devices} - -outputs: - config_id: - description: The ID of the SwiftDevicesAndProxyConfigImpl resource. - value: - {get_resource: SwiftDevicesAndProxyConfigImpl} 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} - diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml index d8e49cac..c414d8e9 100644 --- a/puppet/swift-storage.yaml +++ b/puppet/swift-storage.yaml @@ -91,10 +91,6 @@ parameters: type: string description: Command which will be run whenever configuration data changes default: os-refresh-config --timeout 14400 - SwiftRawDisks: - default: {} - description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})' - type: json resources: @@ -237,7 +233,6 @@ resources: - service_names - service_configs - object - - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig - bootstrap_node # provided by allNodesConfig - all_nodes # provided by allNodesConfig - vip_data # provided by allNodesConfig @@ -361,27 +356,6 @@ outputs: description: Heat resource handle for the swift storage server value: {get_resource: SwiftStorage} - swift_device: - description: Swift device formatted for swift-ring-builder - value: - str_replace: - template: - list_join: - - ',' - - ['r1z1-IP:%PORT%/d1'] - - repeat: - template: 'r1z1-IP:%PORT%/DEVICE' - for_each: - DEVICE: {get_param: SwiftRawDisks} - params: - IP: - get_attr: - - NetIpMap - - net_ip_map - - str_replace: - template: "NETWORK_uri" - params: - NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]} external_ip_address: description: IP address of the server in the external network value: {get_attr: [ExternalPort, ip_address]} |