Add DefaultPasswords to composable services
[apex-tripleo-heat-templates.git] / overcloud.yaml
index 503acf5..a4f8fee 100644 (file)
@@ -12,22 +12,6 @@ description: >
 parameters:
 
   # Common parameters (not specific to a role)
-  AdminPassword:
-    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
-    type: string
-    hidden: true
-  AodhPassword:
-    description: The password for the aodh services.
-    type: string
-    hidden: true
-  CinderEnableNfsBackend:
-    default: false
-    description: Whether to enable or not the NFS backend for Cinder
-    type: boolean
-  CinderEnableRbdBackend:
-    default: false
-    description: Whether to enable or not the Rbd backend for Cinder
-    type: boolean
   CloudName:
     default: overcloud
     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
@@ -36,58 +20,20 @@ parameters:
     default: []
     description: Should be used for arbitrary ips.
     type: json
-  CorosyncIPv6:
-    default: false
-    description: Enable IPv6 in Corosync
-    type: boolean
-  Debug:
-    default: ''
-    description: Set to True to enable debugging on all services.
-    type: string
-  HAProxySyslogAddress:
-    default: /dev/log
-    description: Syslog address where HAproxy will send its log
-    type: string
-  ImageUpdatePolicy:
-    default: 'REBUILD_PRESERVE_EPHEMERAL'
-    description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
-    type: string
   InternalApiVirtualFixedIPs:
     default: []
     description: >
         Control the IP allocation for the InternalApiVirtualInterface port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
-  KeyName:
-    default: default
-    description: Name of an existing Nova key pair to enable SSH access to the instances
-    type: string
-    constraints:
-      - custom_constraint: nova.keypair
-  MemcachedIPv6:
-    default: false
-    description: Enable IPv6 features in Memcached.
-    type: boolean
   NeutronControlPlaneID:
     default: 'ctlplane'
     type: string
     description: Neutron ID or name for ctlplane network.
-  NeutronPassword:
-    description: The password for the neutron service account, used by neutron agents.
-    type: string
-    hidden: true
   NeutronPublicInterface:
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
-  NovaIPv6:
-    default: false
-    description: Enable IPv6 features in Nova
-    type: boolean
-  NovaPassword:
-    description: The password for the nova service account, used by nova-api.
-    type: string
-    hidden: true
   PublicVirtualFixedIPs:
     default: []
     description: >
@@ -98,28 +44,6 @@ parameters:
     type: string
     default: unset
     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
-  RabbitUserName:
-    default: guest
-    description: The username for RabbitMQ
-    type: string
-  RabbitPassword:
-    description: The password for RabbitMQ
-    type: string
-    hidden: true
-  RabbitClientUseSSL:
-    default: false
-    description: >
-        Rabbit client subscriber parameter to specify
-        an SSL connection to the RabbitMQ host.
-    type: string
-  RabbitClientPort:
-    default: 5672
-    description: Set rabbit subscriber port, change this if using SSL
-    type: number
-  RedisPassword:
-    description: The password for Redis
-    type: string
-    hidden: true
   StorageVirtualFixedIPs:
     default: []
     description: >
@@ -154,33 +78,6 @@ parameters:
     description: |
       Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
     type: json
-  controllerImage:
-    type: string
-    default: overcloud-full
-    constraints:
-      - custom_constraint: glance.image
-  OvercloudControlFlavor:
-    description: Flavor for control nodes to request when deploying.
-    default: baremetal
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
-  ControlVirtualInterface:
-    default: 'br-ex'
-    description: Interface where virtual ip will be assigned.
-    type: string
-  EnableFencing:
-    default: false
-    description: Whether to enable fencing in Pacemaker or not.
-    type: boolean
-  EnableGalera:
-    default: true
-    description: Whether to use Galera instead of regular MariaDB.
-    type: boolean
-  ControllerSchedulerHints:
-    type: json
-    description: Optional scheduler hints to pass to nova
-    default: {}
   ExtraConfig:
     default: {}
     description: |
@@ -188,85 +85,11 @@ parameters:
       may be implementation specific, e.g puppet hieradata.  Any role specific
       ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
     type: json
-  FencingConfig:
-    default: {}
-    description: |
-      Pacemaker fencing configuration. The JSON should have
-      the following structure:
-        {
-          "devices": [
-            {
-              "agent": "AGENT_NAME",
-              "host_mac": "HOST_MAC_ADDRESS",
-              "params": {"PARAM_NAME": "PARAM_VALUE"}
-            }
-          ]
-        }
-      For instance:
-        {
-          "devices": [
-            {
-              "agent": "fence_xvm",
-              "host_mac": "52:54:00:aa:bb:cc",
-              "params": {
-                "multicast_address": "225.0.0.12",
-                "port": "baremetal_0",
-                "manage_fw": true,
-                "manage_key_file": true,
-                "key_file": "/etc/fence_xvm.key",
-                "key_file_password": "abcdef"
-              }
-            }
-          ]
-        }
-    type: json
-    type: string
-    hidden: true
-  InstanceNameTemplate:
-    default: 'instance-%08x'
-    description: Template string to be used to generate instance names
-    type: string
-  ManageFirewall:
-    default: true
-    description: Whether to manage IPtables rules.
-    type: boolean
-  PurgeFirewallRules:
-    default: false
-    description: Whether IPtables rules should be purged before setting up the ones.
-    type: boolean
-  MysqlInnodbBufferPoolSize:
-    description: >
-        Specifies the size of the buffer pool in megabytes. Setting to
-        zero should be interpreted as "no value" and will defer to the
-        lower level default.
-    type: number
-    default: 0
-  MysqlMaxConnections:
-    description: Configures MySQL max_connections config setting
-    type: number
-    default: 4096
-  PublicVirtualInterface:
-    default: 'br-ex'
-    description: >
-        Specifies the interface where the public-facing virtual ip will be assigned.
-        This should be int_public when a VLAN is being used.
-    type: string
   SwiftHashSuffix:
     description: A random string to be used as a salt when hashing to determine mappings in the ring.
     type: string
     hidden: true
-  SwiftMinPartHours:
-    type: number
-    default: 1
-    description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
-  SwiftPartPower:
-    default: 10
-    description: Partition Power to use when building Swift rings
-    type: number
-  SwiftReplicas:
-    type: number
-    default: 3
-    description: How many replicas to use in the swift rings.
+
 
 # Compute-specific params
   ComputeCount:
@@ -283,94 +106,16 @@ parameters:
     default: nic1
     description: What interface to add to the HypervisorNeutronPhysicalBridge.
     type: string
-  NovaComputeDriver:
-    type: string
-    default: libvirt.LibvirtDriver
-  NovaComputeExtraConfig:
-    default: {}
-    description: |
-      NovaCompute specific configuration to inject into the cluster. Same
-      structure as ExtraConfig.
-    type: json
-  NovaComputeLibvirtType:
-    default: kvm
-    type: string
-  NovaComputeLibvirtVifDriver:
-    default: ''
-    description: Libvirt VIF driver configuration for the network
-    type: string
-  NovaComputeSchedulerHints:
-    type: json
-    description: Optional scheduler hints to pass to nova
-    default: {}
-  NovaEnableRbdBackend:
-    default: false
-    description: Whether to enable or not the Rbd backend for Nova
-    type: boolean
-  NovaImage:
-    type: string
-    default: overcloud-full
-    constraints:
-      - custom_constraint: glance.image
-  NovaOVSBridge:
-    default: 'br-int'
-    description: Name of integration bridge used by Open vSwitch
-    type: string
-  NovaSecurityGroupAPI:
-    default: 'neutron'
-    description: The full class name of the security API class
-    type: string
-  OvercloudComputeFlavor:
-    description: Use this flavor
-    default: baremetal
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
-  ServiceNetMap:
-    default:
-      NeutronTenantNetwork: tenant
-      CeilometerApiNetwork: internal_api
-      AodhApiNetwork: internal_api
-      GnocchiApiNetwork: internal_api
-      MongoDbNetwork: internal_api
-      CinderApiNetwork: internal_api
-      CinderIscsiNetwork: storage
-      GlanceApiNetwork: storage
-      GlanceRegistryNetwork: internal_api
-      IronicApiNetwork: internal_api
-      KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
-      KeystonePublicApiNetwork: internal_api
-      NeutronApiNetwork: internal_api
-      HeatApiNetwork: internal_api
-      NovaApiNetwork: internal_api
-      NovaMetadataNetwork: internal_api
-      NovaVncProxyNetwork: internal_api
-      SwiftMgmtNetwork: storage_mgmt
-      SwiftProxyNetwork: storage
-      SaharaApiNetwork: internal_api
-      HorizonNetwork: internal_api
-      MemcachedNetwork: internal_api
-      RabbitMqNetwork: internal_api
-      RedisNetwork: internal_api
-      MysqlNetwork: internal_api
-      CephClusterNetwork: storage_mgmt
-      CephPublicNetwork: storage
-      ControllerHostnameResolveNetwork: internal_api
-      ComputeHostnameResolveNetwork: internal_api
-      BlockStorageHostnameResolveNetwork: internal_api
-      ObjectStorageHostnameResolveNetwork: internal_api
-      CephStorageHostnameResolveNetwork: storage
-    description: Mapping of service_name -> network name. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
 
   ControllerServices:
     default:
       - OS::TripleO::Services::CephMon
       - OS::TripleO::Services::CephExternal
       - OS::TripleO::Services::CinderApi
+      - OS::TripleO::Services::CinderBackup
       - OS::TripleO::Services::CinderScheduler
       - OS::TripleO::Services::CinderVolume
+      - OS::TripleO::Services::Core
       - OS::TripleO::Services::Kernel
       - OS::TripleO::Services::Keystone
       - OS::TripleO::Services::GlanceApi
@@ -383,7 +128,7 @@ parameters:
       - OS::TripleO::Services::NeutronDhcpAgent
       - OS::TripleO::Services::NeutronL3Agent
       - OS::TripleO::Services::NeutronMetadataAgent
-      - OS::TripleO::Services::NeutronServer
+      - OS::TripleO::Services::NeutronApi
       - OS::TripleO::Services::NeutronCorePlugin
       - OS::TripleO::Services::NeutronOvsAgent
       - OS::TripleO::Services::RabbitMQ
@@ -401,6 +146,7 @@ parameters:
       - OS::TripleO::Services::Ntp
       - OS::TripleO::Services::SwiftProxy
       - OS::TripleO::Services::SwiftStorage
+      - OS::TripleO::Services::SwiftRingBuilder
       - OS::TripleO::Services::Snmp
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::CeilometerApi
@@ -412,7 +158,20 @@ parameters:
       - OS::TripleO::Services::GnocchiApi
       - OS::TripleO::Services::GnocchiMetricd
       - OS::TripleO::Services::GnocchiStatsd
-
+      - OS::Tripleo::Services::ManilaApi
+      - OS::Tripleo::Services::ManilaScheduler
+      - OS::Tripleo::Services::ManilaShare
+      - OS::TripleO::Services::AodhApi
+      - OS::TripleO::Services::AodhEvaluator
+      - OS::TripleO::Services::AodhNotifier
+      - OS::TripleO::Services::AodhListener
+      - OS::TripleO::Services::SaharaApi
+      - OS::TripleO::Services::SaharaEngine
+      - OS::TripleO::Services::IronicApi
+      - OS::TripleO::Services::IronicConductor
+      - OS::TripleO::Services::NovaIronic
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
@@ -431,6 +190,10 @@ parameters:
       - OS::TripleO::Services::ComputeNeutronCorePlugin
       - OS::TripleO::Services::ComputeNeutronOvsAgent
       - OS::TripleO::Services::ComputeCeilometerAgent
+      - OS::TripleO::Services::ComputeNeutronL3Agent
+      - OS::TripleO::Services::ComputeNeutronMetadataAgent
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Compute Nodes.
@@ -440,25 +203,12 @@ parameters:
   BlockStorageCount:
     type: number
     default: 0
-  BlockStorageImage:
-    default: overcloud-full
-    type: string
-  OvercloudBlockStorageFlavor:
-    description: Flavor for block storage nodes to request when deploying.
-    default: baremetal
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
   BlockStorageExtraConfig:
     default: {}
     description: |
       BlockStorage specific configuration to inject into the cluster. Same
       structure as ExtraConfig.
     type: json
-  BlockStorageSchedulerHints:
-    type: json
-    description: Optional scheduler hints to pass to nova
-    default: {}
   BlockStorageServices:
     default:
       - OS::TripleO::Services::CinderVolume
@@ -466,6 +216,8 @@ parameters:
       - OS::TripleO::Services::Ntp
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::Snmp
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the BlockStorage nodes.
@@ -475,32 +227,22 @@ parameters:
   ObjectStorageCount:
     type: number
     default: 0
-  OvercloudSwiftStorageFlavor:
-    description: Flavor for Swift storage nodes to request when deploying.
-    default: baremetal
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
-  SwiftStorageImage:
-    default: overcloud-full
-    type: string
   ObjectStorageExtraConfig:
     default: {}
     description: |
       ObjectStorage specific configuration to inject into the cluster. Same
       structure as ExtraConfig.
     type: json
-  ObjectStorageSchedulerHints:
-    type: json
-    description: Optional scheduler hints to pass to nova
-    default: {}
   ObjectStorageServices:
     default:
       - OS::TripleO::Services::Kernel
       - OS::TripleO::Services::Ntp
       - OS::TripleO::Services::SwiftStorage
+      - OS::TripleO::Services::SwiftRingBuilder
       - OS::TripleO::Services::Snmp
       - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the ObjectStorage nodes.
@@ -512,31 +254,20 @@ parameters:
   CephStorageCount:
     type: number
     default: 0
-  CephStorageImage:
-    default: overcloud-full
-    type: string
-  OvercloudCephStorageFlavor:
-    default: baremetal
-    description: Flavor for Ceph storage nodes to request when deploying.
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
   CephStorageExtraConfig:
     default: {}
     description: |
       CephStorage specific configuration to inject into the cluster. Same
       structure as ExtraConfig.
     type: json
-  CephStorageSchedulerHints:
-    type: json
-    description: Optional scheduler hints to pass to nova
-    default: {}
   CephStorageServices:
     default:
       - OS::TripleO::Services::CephOSD
       - OS::TripleO::Services::Kernel
       - OS::TripleO::Services::Ntp
       - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the CephStorage nodes.
@@ -637,33 +368,23 @@ resources:
     properties:
       length: 10
 
+  ServiceNetMap:
+    type: OS::TripleO::ServiceNetMap
+
   EndpointMap:
     type: OS::TripleO::EndpointMap
     properties:
       CloudName: {get_param: CloudName}
-      CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
-      AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
-      CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
-      GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-      GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
-      GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
-      HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
-      IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
-      KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-      KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
-      MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-      MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-      NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
-      NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
-      SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
-      SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
-      PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
+      NetIpMap: {get_attr: [VipMap, net_ip_map]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
 
   ControllerServiceChain:
     type: OS::TripleO::Services
     properties:
       Services: {get_param: ControllerServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
 
   Controller:
     type: OS::Heat::ResourceGroup
@@ -674,71 +395,35 @@ resources:
       resource_def:
         type: OS::TripleO::Controller
         properties:
-          AdminPassword: {get_param: AdminPassword}
-          AodhPassword: {get_param: AodhPassword}
           CloudDomain: {get_param: CloudDomain}
-          ControlVirtualInterface: {get_param: ControlVirtualInterface}
           controllerExtraConfig: {get_param: controllerExtraConfig}
-          CorosyncIPv6: {get_param: CorosyncIPv6}
-          Debug: {get_param: Debug}
-          EnableFencing: {get_param: EnableFencing}
-          ManageFirewall: {get_param: ManageFirewall}
-          PurgeFirewallRules: {get_param: PurgeFirewallRules}
-          EnableGalera: {get_param: EnableGalera}
-          ExtraConfig: {get_param: ExtraConfig}
-          FencingConfig: {get_param: FencingConfig}
-          Flavor: {get_param: OvercloudControlFlavor}
-          HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
           HorizonSecret: {get_resource: HorizonSecret}
-          Image: {get_param: controllerImage}
-          ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
-          InstanceNameTemplate: {get_param: InstanceNameTemplate}
-          KeyName: {get_param: KeyName}
-          MemcachedIPv6: {get_param: MemcachedIPv6}
           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
-          MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
-          MysqlMaxConnections: {get_param: MysqlMaxConnections}
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
-          NeutronPublicInterface: {get_param: NeutronPublicInterface}
-          NeutronPassword: {get_param: NeutronPassword}
-          NovaIPv6: {get_param: NovaIPv6}
-          NovaPassword: {get_param: NovaPassword}
           PcsdPassword: {get_resource: PcsdPassword}
-          PublicVirtualInterface: {get_param: PublicVirtualInterface}
-          RabbitPassword: {get_param: RabbitPassword}
-          RabbitUserName: {get_param: RabbitUserName}
           RabbitCookie: {get_attr: [RabbitCookie, value]}
-          RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
-          RabbitClientPort: {get_param: RabbitClientPort}
-          RedisPassword: {get_param: RedisPassword}
           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
           RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
-          SwiftHashSuffix: {get_param: SwiftHashSuffix}
-          SwiftMinPartHours: {get_param: SwiftMinPartHours}
-          SwiftPartPower: {get_param: SwiftPartPower}
-          SwiftReplicas: { get_param: SwiftReplicas}
-          ServiceNetMap: {get_param: ServiceNetMap}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
-          MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-          UpdateIdentifier: {get_param: UpdateIdentifier}
+          MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
           Hostname:
             str_replace:
               template: {get_param: ControllerHostnameFormat}
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
           NodeIndex: '%index%'
-          ServerMetadata: {get_param: ServerMetadata}
-          SchedulerHints: {get_param: ControllerSchedulerHints}
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
 
   ComputeServiceChain:
-
     type: OS::TripleO::Services
     properties:
       Services: {get_param: ComputeServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
 
   Compute:
     type: OS::Heat::ResourceGroup
@@ -749,49 +434,19 @@ resources:
       resource_def:
         type: OS::TripleO::Compute
         properties:
-          AdminPassword: {get_param: AdminPassword}
-          CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
-          CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
-          Debug: {get_param: Debug}
-          ExtraConfig: {get_param: ExtraConfig}
-          Flavor: {get_param: OvercloudComputeFlavor}
-          GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-          Image: {get_param: NovaImage}
-          ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
-          KeyName: {get_param: KeyName}
-          KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-          KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
-          NeutronPassword: {get_param: NeutronPassword}
+          CloudDomain: {get_param: CloudDomain}
           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
           # L3 HA and Failover is not relevant for Computes, should be removed
-          NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
-          NovaComputeDriver: {get_param: NovaComputeDriver}
-          NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
-          NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
-          NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
-          NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
-          NovaIPv6: {get_param: NovaIPv6}
+          NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
           NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
-          NovaPassword: {get_param: NovaPassword}
-          NovaOVSBridge: {get_param: NovaOVSBridge}
-          NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
-          RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
-          RabbitPassword: {get_param: RabbitPassword}
-          RabbitUserName: {get_param: RabbitUserName}
-          RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
-          RabbitClientPort: {get_param: RabbitClientPort}
-          ServiceNetMap: {get_param: ServiceNetMap}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
-          UpdateIdentifier: {get_param: UpdateIdentifier}
           Hostname:
             str_replace:
               template: {get_param: ComputeHostnameFormat}
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
-          CloudDomain: {get_param: CloudDomain}
-          ServerMetadata: {get_param: ServerMetadata}
-          SchedulerHints: {get_param: NovaComputeSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
@@ -800,7 +455,9 @@ resources:
     type: OS::TripleO::Services
     properties:
       Services: {get_param: BlockStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
 
   BlockStorage:
     type: OS::Heat::ResourceGroup
@@ -811,21 +468,17 @@ resources:
       resource_def:
         type: OS::TripleO::BlockStorage
         properties:
-          Image: {get_param: BlockStorageImage}
-          KeyName: {get_param: KeyName}
-          Flavor: {get_param: OvercloudBlockStorageFlavor}
           UpdateIdentifier: {get_param: UpdateIdentifier}
           Hostname:
             str_replace:
               template: {get_param: BlockStorageHostnameFormat}
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
-          ServiceNetMap: {get_param: ServiceNetMap}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           ExtraConfig: {get_param: ExtraConfig}
           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
           CloudDomain: {get_param: CloudDomain}
           ServerMetadata: {get_param: ServerMetadata}
-          SchedulerHints: {get_param: BlockStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
@@ -834,7 +487,9 @@ resources:
     type: OS::TripleO::Services
     properties:
       Services: {get_param: ObjectStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
 
   ObjectStorage:
     type: OS::Heat::ResourceGroup
@@ -845,15 +500,9 @@ resources:
       resource_def:
         type: OS::TripleO::ObjectStorage
         properties:
-          KeyName: {get_param: KeyName}
-          Flavor: {get_param: OvercloudSwiftStorageFlavor}
           HashSuffix: {get_param: SwiftHashSuffix}
-          MinPartHours: {get_param: SwiftMinPartHours}
-          PartPower: {get_param: SwiftPartPower}
-          Image: {get_param: SwiftStorageImage}
-          Replicas: { get_param: SwiftReplicas}
           UpdateIdentifier: {get_param: UpdateIdentifier}
-          ServiceNetMap: {get_param: ServiceNetMap}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           Hostname:
             str_replace:
               template: {get_param: ObjectStorageHostnameFormat}
@@ -863,7 +512,6 @@ resources:
           ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
           CloudDomain: {get_param: CloudDomain}
           ServerMetadata: {get_param: ServerMetadata}
-          SchedulerHints: {get_param: ObjectStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
@@ -872,7 +520,9 @@ resources:
     type: OS::TripleO::Services
     properties:
       Services: {get_param: CephStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
 
   CephStorage:
     type: OS::Heat::ResourceGroup
@@ -883,10 +533,7 @@ resources:
       resource_def:
         type: OS::TripleO::CephStorage
         properties:
-          Image: {get_param: CephStorageImage}
-          KeyName: {get_param: KeyName}
-          Flavor: {get_param: OvercloudCephStorageFlavor}
-          ServiceNetMap: {get_param: ServiceNetMap}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           UpdateIdentifier: {get_param: UpdateIdentifier}
           Hostname:
             str_replace:
@@ -897,7 +544,6 @@ resources:
           CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
           CloudDomain: {get_param: CloudDomain}
           ServerMetadata: {get_param: ServerMetadata}
-          SchedulerHints: {get_param: CephStorageSchedulerHints}
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
@@ -916,35 +562,47 @@ resources:
   allNodesConfig:
     type: OS::TripleO::AllNodes::SoftwareConfig
     properties:
-      compute_hosts: {get_attr: [Compute, hosts_entry]}
-      controller_hosts: {get_attr: [Controller, hosts_entry]}
+      hosts:
+        - list_join:
+            - '\n'
+            - {get_attr: [Compute, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [Controller, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [BlockStorage, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [ObjectStorage, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [CephStorage, hosts_entry]}
       controller_ips: {get_attr: [Controller, ip_address]}
-      block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
-      object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
-      ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
       controller_names: {get_attr: [Controller, hostname]}
-      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
-      mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
-      redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
-      memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
-      mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-      horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
-      heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
-      swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
-      ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
-      aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
-      gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
-      nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
-      nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
-      glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-      glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
-      cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
-      neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
-      keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
-      keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-      sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
-      ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
-      ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
+      mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
+      redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
+      memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
+      mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
+      horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
+      heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
+      swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
+      ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
+      aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
+      gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
+      nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
+      nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
+      glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
+      glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
+      cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
+      manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
+      neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
+      keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+      keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
+      sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
+      ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
+      ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
       ceph_mon_node_names: {get_attr: [Controller, hostname]}
       DeployIdentifier: {get_param: DeployIdentifier}
       UpdateIdentifier: {get_param: UpdateIdentifier}
@@ -965,6 +623,16 @@ resources:
       length: 20
       salt: {get_param: RabbitCookieSalt}
 
+  DefaultPasswords:
+    type: OS::TripleO::DefaultPasswords
+    properties:
+      DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
+      DefaultMysqlClusterPassword: {get_attr: [MysqlClusterUniquePart, value]}
+      DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
+      DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
+      DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
+      DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
+
   # creates the network architecture
   Networks:
     type: OS::TripleO::Network
@@ -985,7 +653,7 @@ resources:
       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
       PortName: redis_virtual_ip
-      NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
+      NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
       ServiceName: redis
 
   # The public VIP is on the External net, falls back to ctlplane
@@ -1047,29 +715,30 @@ resources:
       servers: {get_attr: [Controller, attributes, nova_server_resource]}
       input_values:
         # service VIP mappings
-        keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-        keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
-        neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
-        cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
-        glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-        glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
-        swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
-        nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
-        nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
-        ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
-        aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
-        gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
-        heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
-        horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
+        keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
+        keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+        neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
+        cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
+        glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
+        glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
+        swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
+        nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
+        nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
+        ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
+        aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
+        gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
+        heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
+        horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
         redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
-        mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-        rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
+        manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
+        mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
+        rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
         # direct configuration of Virtual IPs for each network
         control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
         public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
         internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
-        sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
-        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
+        sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
+        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
         storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
         storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
 
@@ -1094,30 +763,6 @@ resources:
       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
       controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
 
-  ComputeCephDeployment:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: ComputeCephDeployment
-      config: {get_attr: [CephClusterConfig, config_id]}
-      servers: {get_attr: [Compute, attributes, nova_server_resource]}
-
-  ControllerCephDeployment:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: ControllerCephDeployment
-      config: {get_attr: [CephClusterConfig, config_id]}
-      servers: {get_attr: [Controller, attributes, nova_server_resource]}
-
-  CephStorageCephDeployment:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: CephStorageCephDeployment
-      config: {get_attr: [CephClusterConfig, config_id]}
-      servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
-
-  CephClusterConfig:
-    type: OS::TripleO::CephClusterConfig::SoftwareConfig
-
   ControllerAllNodesDeployment:
     type: OS::Heat::StructuredDeployments
     properties:
@@ -1180,6 +825,7 @@ resources:
           - {get_attr: [Controller, resource.0.storage_ip_address]}
           - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
           - {get_attr: [Controller, resource.0.tenant_ip_address]}
+          - {get_attr: [Controller, resource.0.management_ip_address]}
 
   ControllerAllNodesValidationDeployment:
     type: OS::Heat::StructuredDeployments
@@ -1254,14 +900,14 @@ resources:
   # Nested stack deployment runs after all other controller deployments
   ControllerNodesPostDeployment:
     type: OS::TripleO::ControllerPostDeployment
-    depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
+    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, ComputeCephDeployment]
+    depends_on: [ComputeAllNodesDeployment]
     properties:
       servers: {get_attr: [Compute, attributes, nova_server_resource]}
       RoleData: {get_attr: [ComputeServiceChain, role_data]}
@@ -1282,7 +928,7 @@ resources:
 
   CephStorageNodesPostDeployment:
     type: OS::TripleO::CephStoragePostDeployment
-    depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
+    depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
     properties:
       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
       RoleData: {get_attr: [CephStorageServiceChain, role_data]}
@@ -1293,46 +939,49 @@ outputs:
     value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
   KeystoneAdminVip:
     description: Keystone Admin VIP endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
   PublicVip:
     description: Controller VIP for public API endpoints
     value: {get_attr: [VipMap, net_ip_map, external]}
   AodhInternalVip:
     description: VIP for Aodh API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
   CeilometerInternalVip:
     description: VIP for Ceilometer API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
   CinderInternalVip:
     description: VIP for Cinder API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
   GlanceInternalVip:
     description: VIP for Glance API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
   GnocchiInternalVip:
     description: VIP for Gnocchi API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
   HeatInternalVip:
     description: VIP for Heat API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
   IronicInternalVip:
     description: VIP for Ironic API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
   KeystoneInternalVip:
     description: VIP for Keystone API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+  ManilaInternalVip:
+    description: VIP for Manila API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
   NeutronInternalVip:
     description: VIP for Neutron API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
   NovaInternalVip:
     description: VIP for Nova API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
   SaharaInternalVip:
     description: VIP for Sahara API internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
   SwiftInternalVip:
     description: VIP for Swift Proxy internal endpoint
-    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
   EndpointMap:
     description: |
       Mapping of the resources with the needed info for their endpoints.
@@ -1345,3 +994,11 @@ outputs:
       hostname-based access to the deployed nodes (useful for testing without
       setting up a DNS).
     value: {get_attr: [allNodesConfig, hosts_entries]}
+  EnabledServices:
+    description: The services enabled on each role
+    value:
+      Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
+      Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
+      BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+      ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+      CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}