Merge "Add support for configuring the OVS firewall driver"
authorJenkins <jenkins@review.openstack.org>
Sat, 10 Sep 2016 02:54:07 +0000 (02:54 +0000)
committerGerrit Code Review <review@openstack.org>
Sat, 10 Sep 2016 02:54:07 +0000 (02:54 +0000)
31 files changed:
extraconfig/tasks/major_upgrade_ceph_mon.sh
extraconfig/tasks/major_upgrade_pacemaker.yaml
network/service_net_map.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/all-nodes-config.yaml
puppet/blockstorage-config.yaml [new file with mode: 0644]
puppet/ceph-storage-post.yaml [deleted file]
puppet/cephstorage-config.yaml [new file with mode: 0644]
puppet/cinder-storage-post.yaml [deleted file]
puppet/compute-config.yaml [new file with mode: 0644]
puppet/compute-post.yaml [deleted file]
puppet/controller-post.yaml [deleted file]
puppet/controller.yaml
puppet/objectstorage-config.yaml [new file with mode: 0644]
puppet/post.yaml [new file with mode: 0644]
puppet/services/README.rst
puppet/services/network/contrail-analytics.yaml [new file with mode: 0644]
puppet/services/network/contrail-base.yaml [new file with mode: 0644]
puppet/services/network/contrail-config.yaml [new file with mode: 0644]
puppet/services/network/contrail-control.yaml [new file with mode: 0644]
puppet/services/network/contrail-database.yaml [new file with mode: 0644]
puppet/services/network/contrail-webui.yaml [new file with mode: 0644]
puppet/services/neutron-sriov-agent.yaml
puppet/services/services.yaml
puppet/services/swift-ringbuilder.yaml
puppet/services/swift-storage.yaml
puppet/services/vip-hosts.yaml
puppet/swift-devices-and-proxy-config.yaml [deleted file]
puppet/swift-storage-post.yaml [deleted file]
puppet/swift-storage.yaml

index 38befbb..b76dd7c 100755 (executable)
@@ -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
index c2e1488..598d22d 100644 (file)
@@ -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
index 4cfff40..5d3f087 100644 (file)
@@ -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
index 6126fb0..f758161 100644 (file)
@@ -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
index 2a02fda..4092e11 100644 (file)
@@ -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:
index 69bb193..c764d4e 100644 (file)
@@ -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 (file)
index 0000000..9b31b44
--- /dev/null
@@ -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 (file)
index df6b724..0000000
+++ /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 (file)
index 0000000..4bad4a1
--- /dev/null
@@ -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 (file)
index 0620bc6..0000000
+++ /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 (file)
index 0000000..9e128d3
--- /dev/null
@@ -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 (file)
index 358ec5a..0000000
+++ /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 (file)
index c97c3bc..0000000
+++ /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}
index 1656aea..a18d00d 100644 (file)
@@ -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 (file)
index 0000000..1dee8e6
--- /dev/null
@@ -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 (file)
index 0000000..8f57b34
--- /dev/null
@@ -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]}
index 15c8c1f..8fe51fa 100644 (file)
@@ -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 (file)
index 0000000..1c2331f
--- /dev/null
@@ -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 (file)
index 0000000..03dbea5
--- /dev/null
@@ -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 (file)
index 0000000..0987fc7
--- /dev/null
@@ -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 (file)
index 0000000..9356e9e
--- /dev/null
@@ -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 (file)
index 0000000..e571261
--- /dev/null
@@ -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 (file)
index 0000000..72b9e1c
--- /dev/null
@@ -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
index b9a9339..44f7f24 100644 (file)
@@ -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
index 669e287..b54a6d7 100644 (file)
@@ -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]}]}
index f41228e..e151d18 100644 (file)
@@ -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: |
index 91d5256..7fbb8d9 100644 (file)
@@ -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
index 445a276..a9d757e 100644 (file)
@@ -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 (file)
index afee4da..0000000
+++ /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 (file)
index ebc54ab..0000000
+++ /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}
-
index d8e49ca..c414d8e 100644 (file)
@@ -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]}