Switch Ceph Monitor/OSD/Client/External to composable roles
[apex-tripleo-heat-templates.git] / puppet / ceph-storage.yaml
index e310e1f..b242526 100644 (file)
@@ -21,10 +21,6 @@ parameters:
     default: default
     constraints:
       - custom_constraint: nova.keypair
-  NtpServer:
-    default: ''
-    description: Comma-separated list of ntp servers
-    type: comma_delimited_list
   EnablePackageInstall:
     default: 'false'
     description: Set to true to enable package installation via Puppet
@@ -34,10 +30,6 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  TimeZone:
-    default: 'UTC'
-    description: The timezone to be set on Ceph nodes.
-    type: string
   UpdateIdentifier:
     default: ''
     type: string
@@ -47,6 +39,10 @@ parameters:
   Hostname:
     type: string
     default: '' # Defaults to Heat created hostname
+  HostnameMap:
+    type: json
+    default: {}
+    description: Optional mapping to override hostnames
   ExtraConfig:
     default: {}
     description: |
@@ -58,6 +54,9 @@ parameters:
     description: |
       Role specific additional hiera configuration to inject into the cluster.
     type: json
+  CephStorageIPs:
+    default: {}
+    type: json
   NetworkDeploymentActions:
     type: comma_delimited_list
     description: >
@@ -86,6 +85,12 @@ parameters:
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
+  NodeIndex:
+    type: number
+    default: 0
+  ServiceConfigSettings:
+    type: json
+    default: {}
 
 resources:
   CephStorage:
@@ -99,7 +104,10 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: UserData}
-      name: {get_param: Hostname}
+      name:
+        str_replace:
+            template: {get_param: Hostname}
+            params: {get_param: HostnameMap}
       software_config_transport: {get_param: SoftwareConfigTransport}
       metadata: {get_param: ServerMetadata}
       scheduler_hints: {get_param: SchedulerHints}
@@ -128,31 +136,43 @@ resources:
     type: OS::TripleO::CephStorage::Ports::ExternalPort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   InternalApiPort:
     type: OS::TripleO::CephStorage::Ports::InternalApiPort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   StoragePort:
     type: OS::TripleO::CephStorage::Ports::StoragePort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   StorageMgmtPort:
     type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   TenantPort:
     type: OS::TripleO::CephStorage::Ports::TenantPort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   ManagementPort:
     type: OS::TripleO::CephStorage::Ports::ManagementPort
     properties:
       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+      IPPool: {get_param: CephStorageIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   NetworkConfig:
     type: OS::TripleO::CephStorage::Net::SoftwareConfig
@@ -170,22 +190,23 @@ resources:
     properties:
       ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
       ExternalIp: {get_attr: [ExternalPort, ip_address]}
-      InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
-      StorageIp: {get_attr: [StoragePort, ip_address]}
-      StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
-      TenantIp: {get_attr: [TenantPort, ip_address]}
-      ManagementIp: {get_attr: [ManagementPort, ip_address]}
-
-  NetIpSubnetMap:
-    type: OS::TripleO::Network::Ports::NetIpSubnetMap
-    properties:
-      ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
+      ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
+      InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+      InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
+      StorageIp: {get_attr: [StoragePort, ip_address]}
       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+      StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
+      StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+      StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
+      TenantIp: {get_attr: [TenantPort, ip_address]}
       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
+      TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
+      ManagementIp: {get_attr: [ManagementPort, ip_address]}
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
+      ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
@@ -203,12 +224,10 @@ resources:
       config: {get_resource: CephStorageConfig}
       server: {get_resource: CephStorage}
       input_values:
-        ntp_servers: {get_param: NtpServer}
-        timezone: {get_param: TimeZone}
         enable_package_install: {get_param: EnablePackageInstall}
         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
-        ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
-        ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+        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]}]}
 
   CephStorageConfig:
     type: OS::Heat::StructuredConfig
@@ -221,13 +240,24 @@ resources:
             - heat_config_%{::deploy_config_name}
             - ceph_extraconfig
             - extraconfig
+            - service_configs
             - ceph_cluster # provided by CephClusterConfig
             - ceph
+            - all_nodes # provided by allNodesConfig
             - '"%{::osfamily}"'
             - common
+            - network
+          merge_behavior: deeper
           datafiles:
+            service_configs:
+              mapped_data: {get_param: ServiceConfigSettings}
             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_extraconfig:
               mapped_data: {get_param: CephStorageExtraConfig}
             extraconfig:
@@ -235,8 +265,6 @@ resources:
             ceph:
               raw_data: {get_file: hieradata/ceph.yaml}
               mapped_data:
-                ntp::servers: {get_input: ntp_servers}
-                timezone::timezone: {get_input: timezone}
                 tripleo::packages::enable_install: {get_input: enable_package_install}
                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
@@ -280,11 +308,54 @@ outputs:
   hosts_entry:
     value:
       str_replace:
-        template: "IP HOST.DOMAIN HOST"
+        template: |
+          PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
+          EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
+          INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
+          STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
+          STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
+          TENANTIP TENANTHOST.DOMAIN TENANTHOST
+          MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
         params:
-          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
+          PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
           DOMAIN: {get_param: CloudDomain}
-          HOST: {get_attr: [CephStorage, name]}
+          PRIMARYHOST: {get_attr: [CephStorage, name]}
+          EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
+          EXTERNALHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - external
+          INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
+          INTERNAL_APIHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - internalapi
+          STORAGEIP: {get_attr: [StoragePort, ip_address]}
+          STORAGEHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storage
+          STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
+          STORAGE_MGMTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storagemgmt
+          TENANTIP: {get_attr: [TenantPort, ip_address]}
+          TENANTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - tenant
+          MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
+          MANAGEMENTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - management
   nova_server_resource:
     description: Heat resource handle for the ceph storage server
     value: