Add bootstrap_node and vip_data to hierarchy for all roles
[apex-tripleo-heat-templates.git] / overcloud.yaml
index 4bdd0b8..0258b0b 100644 (file)
@@ -1,8 +1,8 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   Deploy an OpenStack environment, consisting of several node types (roles),
-  Controller, Compute, BlockStorage, SwiftStorage and CephStorage.  The Storage
+  Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
   roles enable independent scaling of the storage components, but the minimal
   deployment is one Controller and one Compute node.
 
@@ -13,7 +13,7 @@ parameters:
 
   # Common parameters (not specific to a role)
   CloudName:
-    default: overcloud
+    default: overcloud.localdomain
     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
     type: string
   CloudNameInternal:
@@ -199,6 +199,7 @@ parameters:
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
       - OS::TripleO::Services::OpenDaylight
+      - OS::TripleO::Services::SensuClient
     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.
@@ -224,6 +225,7 @@ parameters:
       - OS::TripleO::Services::TripleoFirewall
       - OS::TripleO::Services::NeutronSriovAgent
       - OS::TripleO::Services::OpenDaylightOvs
+      - OS::TripleO::Services::SensuClient
     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.
@@ -249,6 +251,7 @@ parameters:
       - OS::TripleO::Services::Snmp
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     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.
@@ -275,6 +278,7 @@ parameters:
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     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.
@@ -301,6 +305,7 @@ parameters:
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     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.
@@ -435,9 +440,6 @@ resources:
         properties:
           CloudDomain: {get_param: CloudDomain}
           controllerExtraConfig: {get_param: controllerExtraConfig}
-          PcsdPassword: {get_resource: PcsdPassword}
-          RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
-          RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
           ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           Hostname:
@@ -448,6 +450,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
 
   ComputeServiceChain:
     type: OS::TripleO::Services
@@ -479,6 +482,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
 
   BlockStorageServiceChain:
     type: OS::TripleO::Services
@@ -511,6 +515,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
 
   ObjectStorageServiceChain:
     type: OS::TripleO::Services
@@ -543,6 +548,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
 
   CephStorageServiceChain:
     type: OS::TripleO::Services
@@ -575,6 +581,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
 
   ControllerIpListMap:
     type: OS::TripleO::Network::Ports::NetIpListMap
@@ -588,6 +595,63 @@ resources:
       ManagementIpList: {get_attr: [Controller, management_ip_address]}
       EnabledServices: {get_attr: [ControllerServiceChain, role_data, service_names]}
       ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+      ServiceHostnameList: {get_attr: [Controller, hostname]}
+
+  ComputeIpListMap:
+    type: OS::TripleO::Network::Ports::NetIpListMap
+    properties:
+      ControlPlaneIpList: {get_attr: [Compute, ip_address]}
+      ExternalIpList: {get_attr: [Compute, external_ip_address]}
+      InternalApiIpList: {get_attr: [Compute, internal_api_ip_address]}
+      StorageIpList: {get_attr: [Compute, storage_ip_address]}
+      StorageMgmtIpList: {get_attr: [Compute, storage_mgmt_ip_address]}
+      TenantIpList: {get_attr: [Compute, tenant_ip_address]}
+      ManagementIpList: {get_attr: [Compute, management_ip_address]}
+      EnabledServices: {get_attr: [ComputeServiceChain, role_data, service_names]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+      ServiceHostnameList: {get_attr: [Compute, hostname]}
+
+  BlockStorageIpListMap:
+    type: OS::TripleO::Network::Ports::NetIpListMap
+    properties:
+      ControlPlaneIpList: {get_attr: [BlockStorage, ip_address]}
+      ExternalIpList: {get_attr: [BlockStorage, external_ip_address]}
+      InternalApiIpList: {get_attr: [BlockStorage, internal_api_ip_address]}
+      StorageIpList: {get_attr: [BlockStorage, storage_ip_address]}
+      StorageMgmtIpList: {get_attr: [BlockStorage, storage_mgmt_ip_address]}
+      TenantIpList: {get_attr: [BlockStorage, tenant_ip_address]}
+      ManagementIpList: {get_attr: [BlockStorage, management_ip_address]}
+      EnabledServices: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+      ServiceHostnameList: {get_attr: [BlockStorage, hostname]}
+
+  ObjectStorageIpListMap:
+    type: OS::TripleO::Network::Ports::NetIpListMap
+    properties:
+      ControlPlaneIpList: {get_attr: [ObjectStorage, ip_address]}
+      ExternalIpList: {get_attr: [ObjectStorage, external_ip_address]}
+      InternalApiIpList: {get_attr: [ObjectStorage, internal_api_ip_address]}
+      StorageIpList: {get_attr: [ObjectStorage, storage_ip_address]}
+      StorageMgmtIpList: {get_attr: [ObjectStorage, storage_mgmt_ip_address]}
+      TenantIpList: {get_attr: [ObjectStorage, tenant_ip_address]}
+      ManagementIpList: {get_attr: [ObjectStorage, management_ip_address]}
+      EnabledServices: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+      ServiceHostnameList: {get_attr: [ObjectStorage, hostname]}
+
+  CephStorageIpListMap:
+    type: OS::TripleO::Network::Ports::NetIpListMap
+    properties:
+      ControlPlaneIpList: {get_attr: [CephStorage, ip_address]}
+      ExternalIpList: {get_attr: [CephStorage, external_ip_address]}
+      InternalApiIpList: {get_attr: [CephStorage, internal_api_ip_address]}
+      StorageIpList: {get_attr: [CephStorage, storage_ip_address]}
+      StorageMgmtIpList: {get_attr: [CephStorage, storage_mgmt_ip_address]}
+      TenantIpList: {get_attr: [CephStorage, tenant_ip_address]}
+      ManagementIpList: {get_attr: [CephStorage, management_ip_address]}
+      EnabledServices: {get_attr: [CephStorageServiceChain, role_data, service_names]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+      ServiceHostnameList: {get_attr: [CephStorage, hostname]}
 
   allNodesConfig:
     type: OS::TripleO::AllNodes::SoftwareConfig
@@ -618,13 +682,37 @@ resources:
           - {get_attr: [CephStorageServiceChain, role_data, service_names]}
       controller_ips: {get_attr: [Controller, ip_address]}
       controller_names: {get_attr: [Controller, hostname]}
-      service_ips: {get_attr: [ControllerIpListMap, service_ips]}
+      service_ips:
+        # Note (shardy) this somewhat complex yaql may be replaced
+        # with a map_deep_merge function in ocata.  It merges the
+        # list of maps, but appends to colliding lists when a service
+        # is deployed on more than one role
+        yaql:
+          expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
+          data:
+            l:
+              - {get_attr: [ControllerIpListMap, service_ips]}
+              - {get_attr: [ComputeIpListMap, service_ips]}
+              - {get_attr: [BlockStorageIpListMap, service_ips]}
+              - {get_attr: [ObjectStorageIpListMap, service_ips]}
+              - {get_attr: [CephStorageIpListMap, service_ips]}
+      service_node_names:
+        yaql:
+          expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
+          data:
+            l:
+              - {get_attr: [ControllerIpListMap, service_hostnames]}
+              - {get_attr: [ComputeIpListMap, service_hostnames]}
+              - {get_attr: [BlockStorageIpListMap, service_hostnames]}
+              - {get_attr: [ObjectStorageIpListMap, service_hostnames]}
+              - {get_attr: [CephStorageIpListMap, service_hostnames]}
       # FIXME(shardy): These require further work to move into service_ips
-      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
       memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
       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]}]}
-      ceph_mon_node_names: {get_attr: [Controller, hostname]}
+      NetVipMap: {get_attr: [VipMap, net_ip_map]}
+      RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
       DeployIdentifier: {get_param: DeployIdentifier}
       UpdateIdentifier: {get_param: UpdateIdentifier}
 
@@ -720,45 +808,6 @@ resources:
       StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
       # No tenant or management VIP required
 
-  VipConfig:
-    type: OS::TripleO::VipConfig
-
-  VipDeployment:
-    type: OS::Heat::StructuredDeployments
-    properties:
-      name: VipDeployment
-      config: {get_resource: VipConfig}
-      servers: {get_attr: [Controller, attributes, nova_server_resource]}
-      input_values:
-        # service VIP mappings
-        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]}
-        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_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
-        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
-        opendaylight_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
-        storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
-        storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
-
   ControllerSwiftDeployment:
     type: OS::Heat::StructuredDeployments
     properties:
@@ -778,7 +827,6 @@ resources:
     properties:
       controller_swift_devices: {get_attr: [Controller, swift_device]}
       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
-      controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
 
   ControllerAllNodesDeployment:
     type: OS::Heat::StructuredDeployments
@@ -950,6 +998,7 @@ resources:
       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
       RoleData: {get_attr: [CephStorageServiceChain, role_data]}
 
+
 outputs:
   ManagedEndpoints:
     description: Asserts that the keystone endpoints have been provisioned.