Merge "Revert "Pin puppetlabs_spec_helper to 1.1.1""
[apex-tripleo-heat-templates.git] / puppet / controller.yaml
index 9c0d8e8..a1cc8db 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   OpenStack controller node configured by Puppet.
@@ -8,95 +8,10 @@ parameters:
     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
     type: string
     hidden: true
-  AodhApiVirtualIP:
-    type: string
-    default: ''
   AodhPassword:
     description: The password for the aodh services.
     type: string
     hidden: true
-  CeilometerApiVirtualIP:
-    type: string
-    default: ''
-  CeilometerBackend:
-    default: 'mongodb'
-    description: The ceilometer backend type.
-    type: string
-  CeilometerMeteringSecret:
-    description: Secret shared by the ceilometer services.
-    type: string
-    hidden: true
-  CeilometerPassword:
-    description: The password for the ceilometer service  and db account.
-    type: string
-    hidden: true
-  CeilometerStoreEvents:
-    default: false
-    description: Whether to store events in ceilometer.
-    type: boolean
-  CeilometerMeterDispatcher:
-    default: 'database'
-    description: Dispatcher to process meter data
-    type: string
-    constraints:
-    - allowed_values: ['gnocchi', 'database']
-  CinderApiVirtualIP:
-    type: string
-    default: ''
-  CeilometerWorkers:
-    default: 0
-    description: Number of workers for Ceilometer service.
-    type: number
-  CinderEnableDBPurge:
-    default: true
-    description: |
-      Whether to create cron job for purging soft deleted rows in Cinder database.
-    type: boolean
-  CinderEnableNfsBackend:
-    default: false
-    description: Whether to enable or not the NFS backend for Cinder
-    type: boolean
-  CinderEnableIscsiBackend:
-    default: true
-    description: Whether to enable or not the Iscsi backend for Cinder
-    type: boolean
-  CinderEnableRbdBackend:
-    default: false
-    description: Whether to enable or not the Rbd backend for Cinder
-    type: boolean
-  CinderISCSIHelper:
-    default: lioadm
-    description: The iSCSI helper to use with cinder.
-    type: string
-  CinderLVMLoopDeviceSize:
-    default: 10280
-    description: The size of the loopback file used by the cinder LVM driver.
-    type: number
-  CinderNfsMountOptions:
-    default: ''
-    description: >
-      Mount options for NFS mounts used by Cinder NFS backend. Effective
-      when CinderEnableNfsBackend is true.
-    type: string
-  CinderNfsServers:
-    default: ''
-    description: >
-      NFS servers used by Cinder NFS backend. Effective when
-      CinderEnableNfsBackend is true.
-    type: comma_delimited_list
-  CinderPassword:
-    description: The password for the cinder service and db account, used by cinder-api.
-    type: string
-    hidden: true
-  CinderBackendConfig:
-    default: {}
-    description: Contains parameters to configure Cinder backends. Typically
-                 set via parameter_defaults in the resource registry.
-    type: json
-  CinderWorkers:
-    default: 0
-    description: Number of workers for Cinder service.
-    type: number
   controllerExtraConfig:
     default: {}
     description: |
@@ -140,14 +55,6 @@ parameters:
     default: true
     description: Whether to deploy a LoadBalancer on the Controller
     type: boolean
-  EnableCephStorage:
-    default: false
-    description: Whether to deploy Ceph Storage (OSD) on the Controller
-    type: boolean
-  EnableSwiftStorage:
-    default: true
-    description: Whether to enable Swift Storage on the Controller
-    type: boolean
   ExtraConfig:
     default: {}
     description: |
@@ -186,29 +93,12 @@ parameters:
           ]
         }
     type: json
-  Flavor:
+  OvercloudControlFlavor:
     description: Flavor for control nodes to request when deploying.
+    default: baremetal
     type: string
     constraints:
       - custom_constraint: nova.flavor
-  GnocchiBackend:
-    default: file
-    description: The short name of the Gnocchi backend to use. Should be one
-      of swift, rbd, or file
-    type: string
-    constraints:
-    - allowed_values: ['swift', 'file', 'rbd']
-  GnocchiIndexerBackend:
-    default: 'mysql'
-    description: The short name of the Gnocchi indexer backend to use.
-    type: string
-  GnocchiApiVirtualIP:
-    type: string
-    default: ''
-  GnocchiPassword:
-    description: The password for the gnocchi service and db account.
-    type: string
-    hidden: true
   HAProxyStatsPassword:
     description: Password for HAProxy stats endpoint
     type: string
@@ -224,17 +114,13 @@ parameters:
     description: Auth encryption key for heat-engine
     type: string
     hidden: true
-  HorizonAllowedHosts:
-    default: '*'
-    description: A list of IP/Hostname allowed to connect to horizon
-    type: comma_delimited_list
   HorizonSecret:
     description: Secret key for Django
     type: string
     hidden: true
-  Image:
+  controllerImage:
     type: string
-    default: overcloud-control
+    default: overcloud-full
     constraints:
       - custom_constraint: glance.image
   ImageUpdatePolicy:
@@ -251,10 +137,6 @@ parameters:
     type: string
     constraints:
       - custom_constraint: nova.keypair
-  KeystoneRegion:
-    type: string
-    default: 'regionOne'
-    description: Keystone region for endpoint
   ManageFirewall:
     default: false
     description: Whether to manage IPtables rules.
@@ -267,14 +149,6 @@ parameters:
     default: false
     description: Whether IPtables rules should be purged before setting up the new ones.
     type: boolean
-  SaharaApiVirtualIP:
-    type: string
-    default: ''
-  SaharaPassword:
-    default: unset
-    description: The password for the sahara service account, used by sahara-api.
-    type: string
-    hidden: true
   MysqlClusterUniquePart:
     description: A unique identifier of the MySQL cluster the controller is in.
     type: string
@@ -300,89 +174,10 @@ parameters:
     type: string
     hidden: true
     default: ''  # Has to be here because of the ignored empty value bug
-  NeutronBridgeMappings:
-    description: >
-      The OVS logical->physical bridge mappings to use. See the Neutron
-      documentation for details. Defaults to mapping br-ex - the external
-      bridge on hosts - to a physical name 'datacentre' which can be used
-      to create provider networks (and we use this for the default floating
-      network) - if changing this either use different post-install network
-      scripts or be sure to keep 'datacentre' as a mapping network name.
-    type: comma_delimited_list
-    default: "datacentre:br-ex"
-  NeutronEnableOVSAgent:
-    description: Knob to enable/disable OVS Agent
-    type: boolean
-    default: true
-  NeutronAgentMode:
-    default: 'dvr_snat'
-    description: Agent mode for the neutron-l3-agent on the controller hosts
-    type: string
-  NeutronL3HA:
-    default: 'False'
-    description: Whether to enable l3-agent HA
-    type: string
-  NeutronDVR:
-    default: 'False'
-    description: Whether to configure Neutron Distributed Virtual Routers
-    type: string
   NeutronMetadataProxySharedSecret:
     description: Shared secret to prevent spoofing
     type: string
     hidden: true
-  NeutronCorePlugin:
-    default: 'ml2'
-    description: |
-        The core plugin for Neutron. The value should be the entrypoint to be loaded
-        from neutron.core_plugins namespace.
-    type: string
-  NeutronServicePlugins:
-    default: "router,qos"
-    description: |
-        Comma-separated list of service plugin entrypoints to be loaded from the
-        neutron.service_plugins namespace.
-    type: comma_delimited_list
-  NeutronTypeDrivers:
-    default: "vxlan,vlan,flat,gre"
-    description: |
-        Comma-separated list of network type driver entrypoints to be loaded.
-    type: comma_delimited_list
-  NeutronMechanismDrivers:
-    default: 'openvswitch'
-    description: |
-        The mechanism drivers for the Neutron tenant network.
-    type: comma_delimited_list
-  NeutronAllowL3AgentFailover:
-    default: 'True'
-    description: Allow automatic l3-agent failover
-    type: string
-  NeutronEnableTunnelling:
-    type: string
-    default: "True"
-  NeutronEnableL2Pop:
-    type: string
-    description: >
-        Enable/disable the L2 population feature in the Neutron agents.
-    default: "False"
-  NeutronFlatNetworks:
-    type: comma_delimited_list
-    default: 'datacentre'
-    description: If set, flat networks to configure in neutron plugins.
-  NeutronL3HA:
-    default: 'False'
-    description: Whether to enable l3-agent HA
-    type: string
-  NeutronNetworkType:
-    default: 'vxlan'
-    description: The tenant network type for Neutron.
-    type: comma_delimited_list
-  NeutronNetworkVLANRanges:
-    default: 'datacentre:1:1000'
-    description: >
-      The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
-      Neutron documentation for permitted values. Defaults to permitting any
-      VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
-    type: comma_delimited_list
   NeutronPassword:
     description: The password for the neutron service and db account, used by neutron agents.
     type: string
@@ -391,71 +186,6 @@ parameters:
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
-  NeutronPublicInterfaceTag:
-    default: ''
-    description: >
-      VLAN tag for creating a public VLAN. The tag will be used to
-      create an access port on the exterior bridge for each control plane node,
-      and that port will be given the IP address returned by neutron from the
-      public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
-      overcloud.yaml to include the deployment of VLAN ports to the control
-      plane.
-    type: string
-  NeutronPublicInterfaceDefaultRoute:
-    default: ''
-    description: A custom default route for the NeutronPublicInterface.
-    type: string
-  NeutronPublicInterfaceIP:
-    default: ''
-    description: A custom IP address to put onto the NeutronPublicInterface.
-    type: string
-  NeutronPublicInterfaceRawDevice:
-    default: ''
-    description: If set, the public interface is a vlan with this device as the raw device.
-    type: string
-  NeutronTenantMtu:
-    description: >
-      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
-      be at least 50 bytes smaller than the MTU on the physical network. This
-      value will be used to set the MTU on the virtual Ethernet device.
-      This number is related to the value of NeutronDnsmasqOptions, since that
-      will determine the MTU that is assigned to the VM host through DHCP.
-    default: 1400
-    type: number
-  NeutronTunnelTypes:
-    default: 'vxlan'
-    description: |
-        The tunnel types for the Neutron tenant network.
-    type: comma_delimited_list
-  NeutronTunnelIdRanges:
-    description: |
-        Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
-        of GRE tunnel IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronVniRanges:
-    description: |
-        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
-        of VXLAN VNI IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronPluginExtensions:
-    default: "qos,port_security"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron plugin.
-    type: comma_delimited_list
-  NeutronAgentExtensions:
-    default: "qos"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron agents.
-    type: comma_delimited_list
-  NovaApiVirtualIP:
-    type: string
-    default: ''
-  NeutronWorkers:
-    default: 0
-    description: Number of workers for Neutron service.
-    type: number
   NovaEnableDBPurge:
     default: true
     description: |
@@ -469,22 +199,6 @@ parameters:
     description: The password for the nova service and db account, used by nova-api.
     type: string
     hidden: true
-  NovaWorkers:
-    default: 0
-    description: Number of workers for Nova service.
-    type: number
-  MongoDbNoJournal:
-    default: false
-    description: Should MongoDb journaling be disabled
-    type: boolean
-  MongoDbIPv6:
-    default: false
-    description: Enable IPv6 if Mongo DB VIP is IPv6
-    type: boolean
-  NtpServer:
-    default: ''
-    description: Comma-separated list of ntp servers
-    type: comma_delimited_list
   PcsdPassword:
     type: string
     description: The password for the 'pcsd' user.
@@ -495,9 +209,6 @@ parameters:
         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
-  PublicVirtualIP:
-    type: string
-    default: ''  # Has to be here because of the ignored empty value bug
   RabbitCookie:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
@@ -521,8 +232,8 @@ parameters:
     description: Set rabbit subscriber port, change this if using SSL
     type: number
   RedisPassword:
+    description: The password for Redis
     type: string
-    description: The password to access the Redis service
     hidden: true
   RedisVirtualIP:
     type: string
@@ -531,69 +242,18 @@ parameters:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
     description: An IP address which is wrapped in brackets in case of IPv6
-  SnmpdReadonlyUserName:
-    default: ro_snmp_user
-    description: The user name for SNMPd with readonly rights running on all Overcloud nodes
-    type: string
-  SnmpdReadonlyUserPassword:
-    description: The user password for SNMPd with readonly rights running on all Overcloud nodes
-    type: string
-    hidden: true
   SwiftHashSuffix:
     description: A random string to be used as a salt when hashing to determine mappings
       in the ring.
     hidden: true
     type: string
-  SwiftMountCheck:
-    default: 'false'
-    description: Value of mount_check in Swift account/container/object -server.conf
-    type: boolean
-  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
-  SwiftRingBuild:
-    default: true
-    description: Whether to manage Swift rings or not
-    type: boolean
-  SwiftProxyVirtualIP:
-    type: string
-    default: ''
-  SwiftReplicas:
-    type: number
-    default: 3
-    description: How many replicas to use in the swift rings.
-  TimeZone:
-    default: 'UTC'
-    description: The timezone to be set on controller nodes.
-    type: string
   UpgradeLevelNovaCompute:
     type: string
     description: Nova Compute upgrade level
     default: ''
-  VirtualIP: # DEPRECATED: use per service settings instead
-    type: string
-    default: ''  # Has to be here because of the ignored empty value bug
-  HeatApiVirtualIP:
-    type: string
-    default: ''
-  HeatApiVirtualIPUri:
-    type: string
-    default: ''
   MysqlVirtualIP:
     type: string
     default: ''
-  NeutronApiVirtualIP:
-    type: string
-    default: ''
-  EnablePackageInstall:
-    default: 'false'
-    description: Set to true to enable package installation via Puppet
-    type: boolean
   ServiceNetMap:
     default: {}
     description: Mapping of service_name -> network name. Typically set
@@ -633,7 +293,6 @@ parameters:
     constraints:
     - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
   CloudDomain:
-    default: ''
     type: string
     description: >
       The DNS domain used for the hosts. This should match the dhcp_domain
@@ -644,13 +303,20 @@ parameters:
       Extra properties or metadata passed to Nova for the created nodes in
       the overcloud. It's accessible via the Nova metadata API.
     type: json
-  SchedulerHints:
+  ControllerSchedulerHints:
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
   ServiceConfigSettings:
     type: json
     default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
+  ConfigCommand:
+    type: string
+    description: Command which will be run whenever configuration data changes
+    default: os-refresh-config --timeout 14400
 
 parameter_groups:
 - label: deprecated
@@ -661,11 +327,14 @@ parameter_groups:
 resources:
 
   Controller:
-    type: OS::Nova::Server
+    type: OS::TripleO::Server
+    metadata:
+      os-collect-config:
+        command: {get_param: ConfigCommand}
     properties:
-      image: {get_param: Image}
+      image: {get_param: controllerImage}
       image_update_policy: {get_param: ImageUpdatePolicy}
-      flavor: {get_param: Flavor}
+      flavor: {get_param: OvercloudControlFlavor}
       key_name: {get_param: KeyName}
       networks:
         - network: ctlplane
@@ -677,7 +346,7 @@ resources:
             params: {get_param: HostnameMap}
       software_config_transport: {get_param: SoftwareConfigTransport}
       metadata: {get_param: ServerMetadata}
-      scheduler_hints: {get_param: SchedulerHints}
+      scheduler_hints: {get_param: ControllerSchedulerHints}
 
   # Combine the NodeAdminUserData and NodeUserData mime archives
   UserData:
@@ -811,58 +480,19 @@ resources:
       server: {get_resource: Controller}
       input_values:
         bootstack_nodeid: {get_attr: [Controller, name]}
-        ceilometer_workers: {get_param: CeilometerWorkers}
-        cinder_workers: {get_param: CinderWorkers}
-        nova_workers: {get_param: NovaWorkers}
-        neutron_workers: {get_param: NeutronWorkers}
-        neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
-        neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
         haproxy_log_address: {get_param: HAProxySyslogAddress}
         haproxy_stats_password: {get_param: HAProxyStatsPassword}
         haproxy_stats_user: {get_param: HAProxyStatsUser}
         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
-        horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
         horizon_secret: {get_param: HorizonSecret}
         admin_password: {get_param: AdminPassword}
-        neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
         debug: {get_param: Debug}
-        cinder_enable_db_purge: {get_param: CinderEnableDBPurge}
-        cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
-        cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
-        cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
-        cinder_nfs_servers:
-          str_replace:
-            template: SERVERS
-            params:
-              SERVERS: {get_param: CinderNfsServers}
-        cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
-        cinder_password: {get_param: CinderPassword}
-        cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
-        cinder_iscsi_helper: {get_param: CinderISCSIHelper}
-        cinder_backend_config: {get_param: CinderBackendConfig}
-        cinder_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://cinder:'
-              - {get_param: CinderPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/cinder'
-        cinder_public_url: {get_param: [EndpointMap, CinderPublic, uri]}
-        cinder_internal_url: {get_param: [EndpointMap, CinderInternal, uri]}
-        cinder_admin_url: {get_param: [EndpointMap, CinderAdmin, uri]}
-        cinder_public_url_v2: {get_param: [EndpointMap, CinderV2Public, uri]}
-        cinder_internal_url_v2: {get_param: [EndpointMap, CinderV2Internal, uri]}
-        cinder_admin_url_v2: {get_param: [EndpointMap, CinderV2Admin, uri]}
         keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
         keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
         keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
         enable_fencing: {get_param: EnableFencing}
         enable_galera: {get_param: EnableGalera}
         enable_load_balancer: {get_param: EnableLoadBalancer}
-        enable_ceph_storage: {get_param: EnableCephStorage}
-        enable_swift_storage: {get_param: EnableSwiftStorage}
         manage_firewall: {get_param: ManageFirewall}
         purge_firewall_rules: {get_param: PurgeFirewallRules}
         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
@@ -874,105 +504,10 @@ resources:
             template: tripleo-CLUSTER
             params:
               CLUSTER: {get_param: MysqlClusterUniquePart}
-        neutron_flat_networks:
-          str_replace:
-            template: NETWORKS
-            params:
-              NETWORKS: {get_param: NeutronFlatNetworks}
         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
-        neutron_agent_mode: {get_param: NeutronAgentMode}
-        neutron_router_distributed: {get_param: NeutronDVR}
-        neutron_core_plugin: {get_param: NeutronCorePlugin}
-        neutron_service_plugins:
-          str_replace:
-            template: PLUGINS
-            params:
-              PLUGINS: {get_param: NeutronServicePlugins}
-        neutron_type_drivers:
-          str_replace:
-            template: DRIVERS
-            params:
-              DRIVERS: {get_param: NeutronTypeDrivers}
-        neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
-        neutron_mechanism_drivers:
-          str_replace:
-            template: MECHANISMS
-            params:
-              MECHANISMS: {get_param: NeutronMechanismDrivers}
-        neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
-        neutron_l3_ha: {get_param: NeutronL3HA}
-        neutron_network_vlan_ranges:
-          str_replace:
-            template: RANGES
-            params:
-              RANGES: {get_param: NeutronNetworkVLANRanges}
-        neutron_bridge_mappings:
-          str_replace:
-            template: MAPPINGS
-            params:
-              MAPPINGS: {get_param: NeutronBridgeMappings}
-        neutron_public_interface: {get_param: NeutronPublicInterface}
-        neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
-        neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
-        neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
-        neutron_tunnel_id_ranges:
-          str_replace:
-            template: RANGES
-            params:
-              RANGES: {get_param: NeutronTunnelIdRanges}
-        neutron_vni_ranges:
-          str_replace:
-            template: RANGES
-            params:
-              RANGES: {get_param: NeutronVniRanges}
-        neutron_tenant_network_types:
-          str_replace:
-            template: TYPES
-            params:
-              TYPES: {get_param: NeutronNetworkType}
-        neutron_tunnel_types:
-          str_replace:
-            template: TYPES
-            params:
-              TYPES: {get_param: NeutronTunnelTypes}
-        neutron_plugin_extensions:
-          str_replace:
-            template: PLUGIN_EXTENSIONS
-            params:
-              PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
-        neutron_agent_extensions:
-          str_replace:
-            template: AGENT_EXTENSIONS
-            params:
-              AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
-        neutron_password: {get_param: NeutronPassword}
-        neutron_tenant_mtu: {get_param: NeutronTenantMtu}
-        neutron_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://neutron:'
-              - {get_param: NeutronPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/ovs_neutron?charset=utf8'
-        neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
-        neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
-        neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
-        neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
-        nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
-        ceilometer_backend: {get_param: CeilometerBackend}
-        ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
-        ceilometer_password: {get_param: CeilometerPassword}
-        ceilometer_store_events: {get_param: CeilometerStoreEvents}
-        aodh_password: {get_param: AodhPassword}
         aodh_internal_url: { get_param: [ EndpointMap, AodhInternal, uri ] }
         aodh_public_url: { get_param: [ EndpointMap, AodhPublic, uri ] }
         aodh_admin_url: { get_param: [ EndpointMap, AodhAdmin, uri ] }
-        ceilometer_meter_dispatcher: {get_param: CeilometerMeterDispatcher}
-        gnocchi_password: {get_param: GnocchiPassword}
-        gnocchi_backend: {get_param: GnocchiBackend}
-        gnocchi_indexer_backend: {get_param: GnocchiIndexerBackend}
         ceilometer_coordination_url:
           list_join:
             - ''
@@ -981,60 +516,13 @@ resources:
               - '@'
               - {get_param: RedisVirtualIPUri}
               - ':6379/'
-        ceilometer_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://ceilometer:'
-              - {get_param: CeilometerPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/ceilometer'
-        gnocchi_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://gnocchi:'
-              - {get_param: GnocchiPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/gnocchi'
-        gnocchi_internal_url: {get_param: [EndpointMap, GnocchiInternal, uri]}
-        gnocchi_public_url: { get_param: [ EndpointMap, GnocchiPublic, uri ] }
-        gnocchi_admin_url: { get_param: [ EndpointMap, GnocchiAdmin, uri ] }
-        ceilometer_public_url: {get_param: [EndpointMap, CeilometerPublic, uri]}
-        ceilometer_internal_url: {get_param: [EndpointMap, CeilometerInternal, uri]}
-        ceilometer_admin_url: {get_param: [EndpointMap, CeilometerAdmin, uri]}
-        snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
-        snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
         nova_enable_db_purge: {get_param: NovaEnableDBPurge}
         nova_ipv6: {get_param: NovaIPv6}
         corosync_ipv6: {get_param: CorosyncIPv6}
         memcached_ipv6: {get_param: MemcachedIPv6}
         nova_password: {get_param: NovaPassword}
-        nova_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova'
-        nova_api_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova_api:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova_api'
         upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
         instance_name_template: {get_param: InstanceNameTemplate}
-        nova_public_url: {get_param: [EndpointMap, NovaPublic, uri]}
-        nova_internal_url: {get_param: [EndpointMap, NovaInternal, uri]}
-        nova_admin_url: {get_param: [EndpointMap, NovaAdmin, uri]}
         fencing_config: {get_param: FencingConfig}
         pcsd_password: {get_param: PcsdPassword}
         rabbit_username: {get_param: RabbitUserName}
@@ -1042,49 +530,20 @@ resources:
         rabbit_cookie: {get_param: RabbitCookie}
         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
         rabbit_client_port: {get_param: RabbitClientPort}
-        mongodb_no_journal: {get_param: MongoDbNoJournal}
-        mongodb_ipv6: {get_param: MongoDbIPv6}
-        ntp_servers: {get_param: NtpServer}
-        timezone: {get_param: TimeZone}
         control_virtual_interface: {get_param: ControlVirtualInterface}
         public_virtual_interface: {get_param: PublicVirtualInterface}
         swift_hash_suffix: {get_param: SwiftHashSuffix}
-        swift_part_power: {get_param: SwiftPartPower}
-        swift_ring_build: {get_param: SwiftRingBuild}
-        swift_replicas: {get_param: SwiftReplicas}
-        swift_min_part_hours: {get_param: SwiftMinPartHours}
-        swift_mount_check: {get_param: SwiftMountCheck}
-        enable_package_install: {get_param: EnablePackageInstall}
         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
-        sahara_password: {get_param: SaharaPassword}
-        sahara_public_url: {get_param: [EndpointMap, SaharaPublic, uri]}
-        sahara_internal_url: {get_param: [EndpointMap, SaharaInternal, uri]}
-        sahara_admin_url: {get_param: [EndpointMap, SaharaAdmin, uri]}
-        sahara_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://sahara:'
-              - {get_param: SaharaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/sahara'
         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
-        cinder_iscsi_network:
-          str_replace:
-            template: "'IP'"
-            params:
-              IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
-        cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
         glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-        keystone_region: {get_param: KeystoneRegion}
-        mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
+        manila_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
+        mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongodbNetwork]}]}
         neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
         ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -1097,18 +556,39 @@ resources:
           str_replace:
             template: "['SUBNET']"
             params:
-              SUBNET: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
-        rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
+              SUBNET:
+                get_attr:
+                  - NetIpMap
+                  - net_ip_map
+                  - str_replace:
+                      template: "NETWORK_subnet"
+                      params:
+                        NETWORK: {get_param: [ServiceNetMap, HorizonNetwork]}
+        rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitmqNetwork]}]}
         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
-        redis_password: {get_param: RedisPassword}
         redis_vip: {get_param: RedisVirtualIP}
         sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
         mysql_virtual_ip: {get_param: MysqlVirtualIP}
-        ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
-        ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+        ceph_cluster_network:
+          get_attr:
+            - NetIpMap
+            - net_ip_map
+            - str_replace:
+                template: "NETWORK_subnet"
+                params:
+                  NETWORK: {get_param: [ServiceNetMap, CephClusterNetwork]}
+        ceph_public_network:
+          get_attr:
+            - NetIpMap
+            - net_ip_map
+            - str_replace:
+                template: "NETWORK_subnet"
+                params:
+                  NETWORK: {get_param: [ServiceNetMap, CephPublicNetwork]}
         ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+        ironic_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
 
   # Map heat metadata into hiera datafiles
   ControllerConfig:
@@ -1123,9 +603,8 @@ resources:
             - controller_extraconfig
             - extraconfig
             - service_configs
+            - service_names
             - controller
-            - database
-            - object
             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
             - ceph_cluster # provided by CephClusterConfig
             - ceph
@@ -1133,22 +612,23 @@ resources:
             - all_nodes # provided by allNodesConfig
             - vip_data # provided by vip-config
             - '"%{::osfamily}"'
-            - common
-            - network
             - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
             - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
-            - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
             - midonet_data #Optionally provided by AllNodesExtraConfig
-            - neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
-            - neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
           merge_behavior: deeper
           datafiles:
+            service_names:
+              mapped_data:
+                service_names: {get_param: ServiceNames}
             service_configs:
-              mapped_data: {get_param: ServiceConfigSettings}
+              mapped_data:
+                map_replace:
+                  - {get_param: ServiceConfigSettings}
+                  - values: {get_attr: [NetIpMap, net_ip_map]}
             controller_extraconfig:
               mapped_data:
                 map_merge:
@@ -1156,25 +636,12 @@ resources:
                   - {get_param: ControllerExtraConfig}
             extraconfig:
               mapped_data: {get_param: ExtraConfig}
-            common:
-              raw_data: {get_file: hieradata/common.yaml}
-            network:
-              mapped_data:
-                net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
-                net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
-                net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
             ceph:
-              raw_data: {get_file: hieradata/ceph.yaml}
               mapped_data:
                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
                 ceph::profile::params::public_network: {get_input: ceph_public_network}
                 ceph::profile::params::public_addr: {get_input: ceph_public_ip}
-            database:
-              raw_data: {get_file: hieradata/database.yaml}
-            object:
-              raw_data: {get_file: hieradata/object.yaml}
             controller:
-              raw_data: {get_file: hieradata/controller.yaml}
               mapped_data: # data supplied directly to this deployment configuration, etc
                 bootstack_nodeid: {get_input: bootstack_nodeid}
 
@@ -1190,48 +657,10 @@ resources:
                 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
                 swift::swift_hash_path_suffix: {get_input: swift_hash_suffix}
-                tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
-                tripleo::ringbuilder::part_power: {get_input: swift_part_power}
-                tripleo::ringbuilder::replicas: {get_input: swift_replicas}
-                tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
-                swift_mount_check: {get_input: swift_mount_check}
-
-                # Cinder
-                cinder_enable_db_purge: {get_input: cinder_enable_db_purge}
-                cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
-                cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
-                cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
-                cinder_nfs_servers: {get_input: cinder_nfs_servers}
-                cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
-                cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
-                cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
-                cinder::database_connection: {get_input: cinder_dsn}
-                cinder::api::keystone_password: {get_input: cinder_password}
-                cinder::api::auth_uri: {get_input: keystone_auth_uri}
-                cinder::api::identity_uri: {get_input: keystone_identity_uri}
-                cinder::api::bind_host: {get_input: cinder_api_network}
-                cinder::rabbit_userid: {get_input: rabbit_username}
-                cinder::rabbit_password: {get_input: rabbit_password}
-                cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                cinder::rabbit_port: {get_input: rabbit_client_port}
-                cinder::debug: {get_input: debug}
-                cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
-                cinder::glance::glance_api_servers: {get_input: glance_api_servers}
-                cinder_backend_config: {get_input: CinderBackendConfig}
-                cinder::db::mysql::password: {get_input: cinder_password}
-                cinder::keystone::auth::public_url: {get_input: cinder_public_url }
-                cinder::keystone::auth::internal_url: {get_input: cinder_internal_url }
-                cinder::keystone::auth::admin_url: {get_input: cinder_admin_url }
-                cinder::keystone::auth::public_url_v2: {get_input: cinder_public_url_v2 }
-                cinder::keystone::auth::internal_url_v2: {get_input: cinder_internal_url_v2 }
-                cinder::keystone::auth::admin_url_v2: {get_input: cinder_admin_url_v2 }
-                cinder::keystone::auth::password: {get_input: cinder_password }
-                cinder::keystone::auth::region: {get_input: keystone_region}
 
                 # Glance
                 glance::api::bind_host: {get_input: glance_api_network}
                 glance::registry::bind_host: {get_input: glance_registry_network}
-                glance::keystone::auth::region: {get_input: keystone_region}
 
                 # Heat
                 heat::api::bind_host: {get_input: heat_api_network}
@@ -1244,15 +673,16 @@ resources:
                 keystone::public_bind_host: {get_input: keystone_public_api_network}
                 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
                 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
+
+                # Manila
+                manila::api::bind_host: {get_input: manila_api_network}
+
                 # MongoDB
                 mongodb::server::bind_ip: {get_input: mongo_db_network}
-                mongodb::server::nojournal: {get_input: mongodb_no_journal}
-                mongodb::server::ipv6: {get_input: mongodb_ipv6}
+
                 # MySQL
                 admin_password: {get_input: admin_password}
                 enable_galera: {get_input: enable_galera}
-                enable_ceph_storage: {get_input: enable_ceph_storage}
-                enable_swift_storage: {get_input: enable_swift_storage}
                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
                 mysql_max_connections: {get_input: mysql_max_connections}
                 mysql::server::root_password: {get_input: mysql_root_password}
@@ -1263,163 +693,42 @@ resources:
 
                 # Neutron
                 neutron::bind_host: {get_input: neutron_api_network}
-                neutron::server::auth_uri: {get_input: keystone_auth_uri}
-                neutron::server::auth_url: {get_input: keystone_identity_uri}
-                neutron::server::database_connection: {get_input: neutron_dsn}
-                neutron::server::api_workers: {get_input: neutron_workers}
-                neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
-                neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
-                neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
-                neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
-                neutron_agent_mode: {get_input: neutron_agent_mode}
-                neutron_router_distributed: {get_input: neutron_router_distributed}
-                neutron::core_plugin: {get_input: neutron_core_plugin}
-                neutron::service_plugins: {get_input: neutron_service_plugins}
-                neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
-                neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
-                neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
-                neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
-                neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
-                neutron::server::l3_ha: {get_input: neutron_l3_ha}
-                neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
-                neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
-                neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
-                neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
-                neutron_public_interface: {get_input: neutron_public_interface}
-                neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
-                neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
-                neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
-                neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
-                neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
-                neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
-                neutron::server::password: {get_input: neutron_password}
-                neutron_dsn: {get_input: neutron_dsn}
-                neutron::db::mysql::password: {get_input: neutron_password}
-                neutron::keystone::auth::public_url: {get_input: neutron_public_url }
-                neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
-                neutron::keystone::auth::admin_url: {get_input: neutron_admin_url }
-                neutron::keystone::auth::password: {get_input: neutron_password }
-                neutron::keystone::auth::region: {get_input: keystone_region}
-                neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
-                neutron::server::notifications::tenant_name: 'service'
-                neutron::server::notifications::project_name: 'service'
-                neutron::server::notifications::password: {get_input: nova_password}
+
+                # Aodh
+                aodh::api::host: {get_input: aodh_api_network}
+                aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
 
                 # Ceilometer
-                ceilometer_backend: {get_input: ceilometer_backend}
-                ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
-                ceilometer::telemetry_secret: {get_input: ceilometer_metering_secret}
-                ceilometer::rabbit_userid: {get_input: rabbit_username}
-                ceilometer::rabbit_password: {get_input: rabbit_password}
-                ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                ceilometer::rabbit_port: {get_input: rabbit_client_port}
-                ceilometer::debug: {get_input: debug}
                 ceilometer::api::host: {get_input: ceilometer_api_network}
-                ceilometer::api::keystone_password: {get_input: ceilometer_password}
-                ceilometer::api::auth_uri: {get_input: keystone_auth_uri}
-                ceilometer::api::identity_uri: {get_input: keystone_identity_uri}
-                ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
-                ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
-                ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
-                ceilometer::agent::notification::store_events: {get_input: ceilometer_store_events}
-                ceilometer::db::mysql::password: {get_input: ceilometer_password}
-                ceilometer::collector::meter_dispatcher: {get_input: ceilometer_meter_dispatcher}
-                ceilometer::dispatcher::gnocchi::url: {get_input: gnocchi_internal_url }
-                ceilometer::dispatcher::gnocchi::filter_project: 'service'
-                ceilometer::dispatcher::gnocchi::archive_policy: 'low'
-                ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
-                ceilometer::keystone::auth::public_url: {get_input: ceilometer_public_url }
-                ceilometer::keystone::auth::internal_url: {get_input: ceilometer_internal_url }
-                ceilometer::keystone::auth::admin_url: {get_input: ceilometer_admin_url }
-                ceilometer::keystone::auth::password: {get_input: ceilometer_password }
-                ceilometer::keystone::auth::region: {get_input: keystone_region}
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
 
-                # Aodh
-                aodh::rabbit_userid: {get_input: rabbit_username}
-                aodh::rabbit_password: {get_input: rabbit_password}
-                aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                aodh::rabbit_port: {get_input: rabbit_client_port}
-                aodh::debug: {get_input: debug}
-                aodh::wsgi::apache::ssl: false
-                aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
-                aodh::api::service_name: 'httpd'
-                aodh::api::host: {get_input: aodh_api_network}
-                aodh::api::keystone_password: {get_input: aodh_password}
-                aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
-                aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
-                aodh::auth::auth_password: {get_input: aodh_password}
-                aodh::db::mysql::password: {get_input: aodh_password}
-                # for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
-                aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
-                aodh::keystone::auth::public_url: {get_input: aodh_public_url }
-                aodh::keystone::auth::internal_url: {get_input: aodh_internal_url }
-                aodh::keystone::auth::admin_url: {get_input: aodh_admin_url }
-                aodh::keystone::auth::password: {get_input: aodh_password }
-                aodh::keystone::auth::region: {get_input: keystone_region}
-
                 # Gnocchi
-                gnocchi_backend: {get_input: gnocchi_backend}
-                gnocchi_indexer_backend: {get_input: gnocchi_indexer_backend}
-                gnocchi_mysql_conn_string: {get_input: gnocchi_dsn}
-                gnocchi::debug: {get_input: debug}
-                gnocchi::wsgi::apache::ssl: false
                 gnocchi::wsgi::apache::bind_host: {get_input: gnocchi_api_network}
-                gnocchi::api::service_name: 'httpd'
                 gnocchi::api::host: {get_input: gnocchi_api_network}
-                gnocchi::api::keystone_password: {get_input: gnocchi_password}
                 gnocchi::api::keystone_auth_uri: {get_input: keystone_auth_uri}
                 gnocchi::api::keystone_identity_uri: {get_input: keystone_identity_uri}
-                gnocchi::db::mysql::password: {get_input: gnocchi_password}
                 gnocchi::storage::swift::swift_authurl: {get_input: keystone_auth_uri}
-                gnocchi::storage::swift::swift_key: {get_input: gnocchi_password}
-                gnocchi::keystone::auth::public_url: {get_input: gnocchi_public_url }
-                gnocchi::keystone::auth::internal_url: {get_input: gnocchi_internal_url }
-                gnocchi::keystone::auth::admin_url: {get_input: gnocchi_admin_url }
-                gnocchi::keystone::auth::password: {get_input: gnocchi_password }
-                gnocchi::keystone::auth::region: {get_input: keystone_region}
 
                 # Nova
-                nova::rabbit_userid: {get_input: rabbit_username}
-                nova::rabbit_password: {get_input: rabbit_password}
-                nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                nova::rabbit_port: {get_input: rabbit_client_port}
                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
-                nova::debug: {get_input: debug}
                 nova::use_ipv6: {get_input: nova_ipv6}
                 nova::api::auth_uri: {get_input: keystone_auth_uri}
                 nova::api::identity_uri: {get_input: keystone_identity_uri}
                 nova::api::api_bind_address: {get_input: nova_api_network}
                 nova::api::metadata_listen: {get_input: nova_metadata_network}
                 nova::api::admin_password: {get_input: nova_password}
-                nova::api::osapi_compute_workers: {get_input: nova_workers}
-                nova::api::metadata_workers: {get_input: nova_workers}
-                nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
-                nova::database_connection: {get_input: nova_dsn}
-                nova::api_database_connection: {get_input: nova_api_dsn}
                 nova::glance_api_servers: {get_input: glance_api_servers}
                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 nova::api::instance_name_template: {get_input: instance_name_template}
-                nova::network::neutron::neutron_password: {get_input: neutron_password}
-                nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
-                nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
                 nova::vncproxy::host: {get_input: nova_api_network}
-                nova::db::mysql::password: {get_input: nova_password}
-                nova::db::mysql_api::password: {get_input: nova_password}
                 nova_enable_db_purge: {get_input: nova_enable_db_purge}
-                nova::keystone::auth::public_url: {get_input: nova_public_url}
-                nova::keystone::auth::internal_url: {get_input: nova_internal_url}
-                nova::keystone::auth::admin_url: {get_input: nova_admin_url}
-                nova::keystone::auth::password: {get_input: nova_password }
-                nova::keystone::auth::region: {get_input: keystone_region}
 
                 # Horizon
                 apache::mod::remoteip::proxy_ips: {get_input: horizon_subnet}
                 apache::ip: {get_input: horizon_network}
-                horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
                 horizon::django_debug: {get_input: debug}
                 horizon::secret_key: {get_input: horizon_secret}
                 horizon::bind_address: {get_input: horizon_network}
@@ -1427,39 +736,12 @@ resources:
 
                 # Sahara
                 sahara::host: {get_input: sahara_api_network}
-                sahara::plugins:
-                  - cdh
-                  - hdp
-                  - mapr
-                  - vanilla
-                  - spark
-                  - storm
-                sahara::admin_password: {get_input: sahara_password}
-                sahara::auth_uri: {get_input: keystone_auth_uri}
-                sahara::admin_user: sahara
-                sahara::identity_uri: {get_input: keystone_identity_uri}
-                sahara::use_neutron: true
-                sahara::database_connection: {get_input: sahara_dsn}
-                sahara::debug: {get_input: debug}
-                sahara::rpc_backend: rabbit
-                sahara::rabbit_userid: {get_input: rabbit_username}
-                sahara::rabbit_password: {get_input: rabbit_password}
-                sahara::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                sahara::rabbit_port: {get_input: rabbit_client_port}
-                sahara::db::mysql::password: {get_input: sahara_password}
-                sahara::keystone::auth::public_url: {get_input: sahara_public_url }
-                sahara::keystone::auth::internal_url: {get_input: sahara_internal_url }
-                sahara::keystone::auth::admin_url: {get_input: sahara_admin_url }
-                sahara::keystone::auth::password: {get_input: sahara_password }
-                sahara::keystone::auth::region: {get_input: keystone_region}
+
                 # RabbitMQ
                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
                 # Redis
                 redis::bind: {get_input: redis_network}
-                redis::requirepass: {get_input: redis_password}
-                redis::masterauth: {get_input: redis_password}
-                redis::sentinel_auth_pass: {get_input: redis_password}
                 redis_vip: {get_input: redis_vip}
                 # Firewall
                 tripleo::firewall::manage_firewall: {get_input: manage_firewall}
@@ -1467,9 +749,6 @@ resources:
                 # Misc
                 memcached_ipv6: {get_input: memcached_ipv6}
                 memcached::listen_ip: {get_input: memcached_network}
-                neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
-                ntp::servers: {get_input: ntp_servers}
-                timezone::timezone: {get_input: timezone}
                 control_virtual_interface: {get_input: control_virtual_interface}
                 public_virtual_interface: {get_input: public_virtual_interface}
                 tripleo::keepalived::control_virtual_interface: {get_input: control_virtual_interface}
@@ -1481,7 +760,6 @@ resources:
                 tripleo::haproxy::haproxy_stats_user: {get_input: haproxy_stats_user}
                 tripleo::haproxy::haproxy_stats_password: {get_input: haproxy_stats_password}
                 tripleo::haproxy::redis_password: {get_input: redis_password}
-                tripleo::packages::enable_install: {get_input: enable_package_install}
                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
 
   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
@@ -1600,24 +878,28 @@ outputs:
       str_replace:
         template: 'r1z1-IP:%PORT%/d1'
         params:
-          IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
+          IP:
+            get_attr:
+              - NetIpMap
+              - net_ip_map
+              - str_replace:
+                  template: "NETWORK_uri"
+                  params:
+                    NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
   swift_proxy_memcache:
     description: Swift proxy-memcache value
     value:
       str_replace:
         template: "IP:11211"
         params:
-          IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
-  config_identifier:
-    description: identifier which changes if the controller configuration may need re-applying
-    value:
-      list_join:
-        - ','
-        - - {get_attr: [ControllerDeployment, deploy_stdout]}
-          - {get_attr: [NodeTLSCAData, deploy_stdout]}
-          - {get_attr: [NodeTLSData, deploy_stdout]}
-          - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
-          - {get_param: UpdateIdentifier}
+          IP:
+            get_attr:
+              - NetIpMap
+              - net_ip_map
+              - str_replace:
+                  template: "NETWORK_uri"
+                  params:
+                    NETWORK: {get_param: [ServiceNetMap, MemcachedNetwork]}
   tls_key_modulus_md5:
     description: MD5 checksum of the TLS Key Modulus
     value: {get_attr: [NodeTLSData, key_modulus_md5]}