Deploy Gnocchi as a Ceilometer metrics storage backend
[apex-tripleo-heat-templates.git] / overcloud.yaml
index 2267521..87a5f7b 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2015-04-30
+heat_template_version: 2016-04-08
 
 description: >
   Deploy an OpenStack environment, consisting of several node types (roles),
@@ -16,6 +16,10 @@ parameters:
     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
   CeilometerBackend:
     default: 'mongodb'
     description: The ceilometer backend type.
@@ -28,6 +32,12 @@ parameters:
     description: The password for the ceilometer service account.
     type: string
     hidden: true
+  CeilometerMeterDispatcher:
+    default: 'database'
+    description: Dispatcher to process meter data
+    type: string
+    constraints:
+    - allowed_values: ['gnocchi', 'database']
   # This has to be an UUID so for now we generate it outside the template
   CephClusterFSID:
     default: ''
@@ -351,10 +361,6 @@ parameters:
     type: json
 
   # Controller-specific params
-  AdminToken:
-    description: The keystone auth secret.
-    type: string
-    hidden: true
   CinderLVMLoopDeviceSize:
     default: 10280
     description: The size of the loopback file used by the cinder LVM driver.
@@ -483,6 +489,21 @@ parameters:
     type: string
     constraints:
     - allowed_values: ['swift', 'file', 'rbd']
+  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
+  GnocchiPassword:
+    description: The password for the gnocchi service account.
+    type: string
+    hidden: true
   HeatPassword:
     description: The password for the Heat service account, used by the Heat services.
     type: string
@@ -495,38 +516,6 @@ parameters:
     default: 'instance-%08x'
     description: Template string to be used to generate instance names
     type: string
-  KeystoneCACertificate:
-    default: ''
-    description: Keystone self-signed certificate authority certificate.
-    type: string
-  KeystoneSigningCertificate:
-    default: ''
-    description: Keystone certificate for verifying token validity.
-    type: string
-  KeystoneSigningKey:
-    default: ''
-    description: Keystone key for signing tokens.
-    type: string
-    hidden: true
-  KeystoneSSLCertificate:
-    default: ''
-    description: Keystone certificate for verifying token validity.
-    type: string
-  KeystoneSSLCertificateKey:
-    default: ''
-    description: Keystone key for signing tokens.
-    type: string
-    hidden: true
-  KeystoneNotificationDriver:
-    description: Comma-separated list of Oslo notification drivers used by Keystone
-    default: ['messaging']
-    type: comma_delimited_list
-  KeystoneNotificationFormat:
-    description: The Keystone notification format
-    default: 'basic'
-    type: string
-    constraints:
-      - allowed_values: [ 'basic', 'cadf' ]
   ManageFirewall:
     default: false
     description: Whether to manage IPtables rules.
@@ -675,6 +664,8 @@ parameters:
     default:
       NeutronTenantNetwork: tenant
       CeilometerApiNetwork: internal_api
+      AodhApiNetwork: internal_api
+      GnocchiApiNetwork: internal_api
       MongoDbNetwork: internal_api
       CinderApiNetwork: internal_api
       CinderIscsiNetwork: storage
@@ -706,6 +697,14 @@ parameters:
                  via parameter_defaults in the resource registry.
     type: json
 
+  ControllerServices:
+    default:
+      - OS::TripleO::Services::Keystone
+    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.
+    type: comma_delimited_list
+
 # Block storage specific parameters
   BlockStorageCount:
     type: number
@@ -874,8 +873,10 @@ resources:
     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]}]}
+      GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
       HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
       KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
       KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
@@ -886,6 +887,13 @@ resources:
       SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
       PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
 
+  ControllerServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ControllerServices}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+
   Controller:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
@@ -896,10 +904,11 @@ resources:
         type: OS::TripleO::Controller
         properties:
           AdminPassword: {get_param: AdminPassword}
-          AdminToken: {get_param: AdminToken}
+          AodhPassword: {get_param: AodhPassword}
           CeilometerBackend: {get_param: CeilometerBackend}
           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
           CeilometerPassword: {get_param: CeilometerPassword}
+          CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
           CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
           CinderNfsServers: {get_param: CinderNfsServers}
@@ -926,6 +935,9 @@ resources:
           GlanceBackend: {get_param: GlanceBackend}
           GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
           GlanceLogFile: {get_param: GlanceLogFile}
+          GnocchiPassword: {get_param: GnocchiPassword}
+          GnocchiBackend: {get_param: GnocchiBackend}
+          GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
           HeatPassword: {get_param: HeatPassword}
           HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
@@ -936,13 +948,6 @@ resources:
           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
           InstanceNameTemplate: {get_param: InstanceNameTemplate}
           KeyName: {get_param: KeyName}
-          KeystoneCACertificate: {get_param: KeystoneCACertificate}
-          KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
-          KeystoneSigningKey: {get_param: KeystoneSigningKey}
-          KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
-          KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
-          KeystoneNotificationDriver: {get_param: KeystoneNotificationDriver}
-          KeystoneNotificationFormat: {get_param: KeystoneNotificationFormat}
           MemcachedIPv6: {get_param: MemcachedIPv6}
           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
@@ -1012,6 +1017,8 @@ resources:
           ServiceNetMap: {get_param: ServiceNetMap}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+          AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+          GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
           CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
           HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
           HeatApiVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
@@ -1021,8 +1028,6 @@ resources:
           SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
           MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
-          KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
-          KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
           NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
@@ -1035,6 +1040,7 @@ resources:
           NodeIndex: '%index%'
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: ControllerSchedulerHints}
+          ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
 
   Compute:
     type: OS::Heat::ResourceGroup
@@ -1250,6 +1256,8 @@ resources:
       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]}]}
@@ -1370,6 +1378,8 @@ resources:
         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]}]}
         redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
@@ -1601,6 +1611,7 @@ resources:
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         controller_config: {get_attr: [Controller, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
+      StepConfig: {get_attr: [ControllerServiceChain, step_config]}
 
   ComputeNodesPostDeployment:
     type: OS::TripleO::ComputePostDeployment
@@ -1652,6 +1663,9 @@ outputs:
   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]}]}
   CeilometerInternalVip:
     description: VIP for Ceilometer API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -1661,6 +1675,9 @@ outputs:
   GlanceInternalVip:
     description: VIP for Glance API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+  GnocchiInternalVip:
+    description: VIP for Gnocchi API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
   HeatInternalVip:
     description: VIP for Heat API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
@@ -1679,6 +1696,12 @@ outputs:
   SwiftInternalVip:
     description: VIP for Swift Proxy internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
+  EndpointMap:
+    description: |
+      Mapping of the resources with the needed info for their endpoints.
+      This includes the protocol used, the IP, port and also a full
+      representation of the URI.
+    value: {get_attr: [EndpointMap, endpoint_map]}
   HostsEntry:
     description: |
       The content that should be appended to your /etc/hosts if you want to get