Re-enable default for RoleParameters
[apex-tripleo-heat-templates.git] / puppet / cephstorage-role.yaml
1 heat_template_version: pike
2 description: 'OpenStack ceph storage node configured by Puppet'
3 parameters:
4   OvercloudCephStorageFlavor:
5     description: Flavor for the Ceph Storage node.
6     default: baremetal
7     type: string
8     constraints:
9       - custom_constraint: nova.flavor
10   CephStorageImage:
11     type: string
12     default: overcloud-full
13     constraints:
14       - custom_constraint: glance.image
15   ImageUpdatePolicy:
16     default: 'REBUILD_PRESERVE_EPHEMERAL'
17     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
18     type: string
19   KeyName:
20     description: Name of an existing Nova key pair to enable SSH access to the instances
21     type: string
22     default: default
23     constraints:
24       - custom_constraint: nova.keypair
25   ServiceNetMap:
26     default: {}
27     description: Mapping of service_name -> network name. Typically set
28                  via parameter_defaults in the resource registry.
29     type: json
30   EndpointMap:
31     default: {}
32     description: Mapping of service endpoint -> protocol. Typically set
33                  via parameter_defaults in the resource registry.
34     type: json
35   UpdateIdentifier:
36     default: ''
37     type: string
38     description: >
39       Setting to a previously unused value during stack-update will trigger
40       package update on all nodes
41   Hostname:
42     type: string
43     default: '' # Defaults to Heat created hostname
44   HostnameMap:
45     type: json
46     default: {}
47     description: Optional mapping to override hostnames
48   ExtraConfig:
49     default: {}
50     description: |
51       Additional hiera configuration to inject into the cluster. Note
52       that CephStorageExtraConfig takes precedence over ExtraConfig.
53     type: json
54   CephStorageExtraConfig:
55     default: {}
56     description: |
57       Role specific additional hiera configuration to inject into the cluster.
58     type: json
59   CephStorageIPs:
60     default: {}
61     type: json
62   NetworkDeploymentActions:
63     type: comma_delimited_list
64     description: >
65       Heat action when to apply network configuration changes
66     default: ['CREATE']
67   SoftwareConfigTransport:
68     default: POLL_SERVER_CFN
69     description: |
70       How the server should receive the metadata required for software configuration.
71     type: string
72     constraints:
73     - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
74   CloudDomain:
75     default: 'localdomain'
76     type: string
77     description: >
78       The DNS domain used for the hosts. This must match the
79       overcloud_domain_name configured on the undercloud.
80   CephStorageServerMetadata:
81     default: {}
82     description: >
83       Extra properties or metadata passed to Nova for the created nodes in
84       the overcloud. It's accessible via the Nova metadata API. This option is
85       role-specific and is merged with the values given to the ServerMetadata
86       parameter.
87     type: json
88   ServerMetadata:
89     default: {}
90     description: >
91       Extra properties or metadata passed to Nova for the created nodes in
92       the overcloud. It's accessible via the Nova metadata API. This applies to
93       all roles and is merged with a role-specific metadata parameter.
94     type: json
95   CephStorageSchedulerHints:
96     type: json
97     description: Optional scheduler hints to pass to nova
98     default: {}
99   NodeIndex:
100     type: number
101     default: 0
102   ServiceConfigSettings:
103     type: json
104     default: {}
105   ServiceNames:
106     type: comma_delimited_list
107     default: []
108   MonitoringSubscriptions:
109     type: comma_delimited_list
110     default: []
111   ServiceMetadataSettings:
112     type: json
113     default: {}
114   ConfigCommand:
115     type: string
116     description: Command which will be run whenever configuration data changes
117     default: os-refresh-config --timeout 14400
118   ConfigCollectSplay:
119     type: number
120     default: 30
121     description: |
122       Maximum amount of time to possibly to delay configuation collection
123       polling. Defaults to 30 seconds. Set to 0 to disable it which will cause
124       the configuration collection to occur as soon as the collection process
125       starts.  This setting is used to prevent the configuration collection
126       processes from polling all at the exact same time.
127   UpgradeInitCommand:
128     type: string
129     description: |
130       Command or script snippet to run on all overcloud nodes to
131       initialize the upgrade process. E.g. a repository switch.
132     default: ''
133   UpgradeInitCommonCommand:
134     type: string
135     description: |
136       Common commands required by the upgrades process. This should not
137       normally be modified by the operator and is set and unset in the
138       major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
139       environment files.
140     default: ''
141   DeploymentServerBlacklistDict:
142     default: {}
143     type: json
144     description: >
145       Map of server hostnames to blacklist from any triggered
146       deployments. If the value is 1, the server will be blacklisted. This
147       parameter is generated from the parent template.
148   RoleParameters:
149     type: json
150     description: Role Specific Parameters
151     default: {}
152   DeploymentSwiftDataMap:
153     type: json
154     description: |
155       Map of servers to Swift container and object for storing deployment data.
156       The keys are the Heat assigned hostnames, and the value is a map of the
157       container/object name in Swift. Example value:
158         overcloud-controller-0:
159           container: overcloud-controller
160           object: 0
161         overcloud-controller-1:
162           container: overcloud-controller
163           object: 1
164         overcloud-controller-2:
165           container: overcloud-controller
166           object: 2
167         overcloud-novacompute-0:
168           container: overcloud-compute
169           object: 0
170     default: {}
171
172 conditions:
173   server_not_blacklisted:
174     not:
175       equals:
176         - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
177         - 1
178   deployment_swift_data_map_unset:
179     equals:
180       - get_param:
181           - DeploymentSwiftDataMap
182           - {get_param: Hostname}
183       - ""
184
185 resources:
186   CephStorage:
187     type: OS::TripleO::CephStorageServer
188     metadata:
189       os-collect-config:
190         command: {get_param: ConfigCommand}
191         splay: {get_param: ConfigCollectSplay}
192     properties:
193       image: {get_param: CephStorageImage}
194       image_update_policy: {get_param: ImageUpdatePolicy}
195       flavor: {get_param: OvercloudCephStorageFlavor}
196       key_name: {get_param: KeyName}
197       networks:
198         - network: ctlplane
199       user_data_format: SOFTWARE_CONFIG
200       user_data: {get_resource: UserData}
201       name:
202         str_replace:
203             template: {get_param: Hostname}
204             params: {get_param: HostnameMap}
205       software_config_transport: {get_param: SoftwareConfigTransport}
206       metadata:
207         map_merge:
208           - {get_param: ServerMetadata}
209           - {get_param: CephStorageServerMetadata}
210           - {get_param: ServiceMetadataSettings}
211       scheduler_hints: {get_param: CephStorageSchedulerHints}
212       deployment_swift_data:
213         if:
214           - deployment_swift_data_map_unset
215           - {}
216           - {get_param: [DeploymentSwiftDataMap,
217                          {get_param: Hostname}]}
218
219   # Combine the NodeAdminUserData and NodeUserData mime archives
220   UserData:
221     type: OS::Heat::MultipartMime
222     properties:
223       parts:
224       - config: {get_resource: NodeAdminUserData}
225         type: multipart
226       - config: {get_resource: NodeUserData}
227         type: multipart
228       - config: {get_resource: RoleUserData}
229         type: multipart
230
231   # Creates the "heat-admin" user if configured via the environment
232   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
233   NodeAdminUserData:
234     type: OS::TripleO::NodeAdminUserData
235
236   # For optional operator additional userdata
237   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
238   NodeUserData:
239     type: OS::TripleO::NodeUserData
240
241   # For optional operator role-specific userdata
242   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
243   RoleUserData:
244     type: OS::TripleO::CephStorage::NodeUserData
245
246   ExternalPort:
247     type: OS::TripleO::CephStorage::Ports::ExternalPort
248     properties:
249       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
250       IPPool: {get_param: CephStorageIPs}
251       NodeIndex: {get_param: NodeIndex}
252
253   InternalApiPort:
254     type: OS::TripleO::CephStorage::Ports::InternalApiPort
255     properties:
256       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
257       IPPool: {get_param: CephStorageIPs}
258       NodeIndex: {get_param: NodeIndex}
259
260   StoragePort:
261     type: OS::TripleO::CephStorage::Ports::StoragePort
262     properties:
263       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
264       IPPool: {get_param: CephStorageIPs}
265       NodeIndex: {get_param: NodeIndex}
266
267   StorageMgmtPort:
268     type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
269     properties:
270       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
271       IPPool: {get_param: CephStorageIPs}
272       NodeIndex: {get_param: NodeIndex}
273
274   TenantPort:
275     type: OS::TripleO::CephStorage::Ports::TenantPort
276     properties:
277       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
278       IPPool: {get_param: CephStorageIPs}
279       NodeIndex: {get_param: NodeIndex}
280
281   ManagementPort:
282     type: OS::TripleO::CephStorage::Ports::ManagementPort
283     properties:
284       ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
285       IPPool: {get_param: CephStorageIPs}
286       NodeIndex: {get_param: NodeIndex}
287
288   NetworkConfig:
289     type: OS::TripleO::CephStorage::Net::SoftwareConfig
290     properties:
291       ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
292       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
293       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
294       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
295       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
296       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
297       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
298
299   NetIpMap:
300     type: OS::TripleO::Network::Ports::NetIpMap
301     properties:
302       ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
303       ExternalIp: {get_attr: [ExternalPort, ip_address]}
304       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
305       ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
306       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
307       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
308       InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
309       StorageIp: {get_attr: [StoragePort, ip_address]}
310       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
311       StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
312       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
313       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
314       StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
315       TenantIp: {get_attr: [TenantPort, ip_address]}
316       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
317       TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
318       ManagementIp: {get_attr: [ManagementPort, ip_address]}
319       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
320       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
321
322   NetHostMap:
323     type: OS::Heat::Value
324     properties:
325       type: json
326       value:
327         external:
328           fqdn:
329             list_join:
330             - '.'
331             - - {get_attr: [CephStorage, name]}
332               - external
333               - {get_param: CloudDomain}
334           short:
335             list_join:
336             - '.'
337             - - {get_attr: [CephStorage, name]}
338               - external
339         internal_api:
340           fqdn:
341             list_join:
342             - '.'
343             - - {get_attr: [CephStorage, name]}
344               - internalapi
345               - {get_param: CloudDomain}
346           short:
347             list_join:
348             - '.'
349             - - {get_attr: [CephStorage, name]}
350               - internalapi
351         storage:
352           fqdn:
353             list_join:
354             - '.'
355             - - {get_attr: [CephStorage, name]}
356               - storage
357               - {get_param: CloudDomain}
358           short:
359             list_join:
360             - '.'
361             - - {get_attr: [CephStorage, name]}
362               - storage
363         storage_mgmt:
364           fqdn:
365             list_join:
366             - '.'
367             - - {get_attr: [CephStorage, name]}
368               - storagemgmt
369               - {get_param: CloudDomain}
370           short:
371             list_join:
372             - '.'
373             - - {get_attr: [CephStorage, name]}
374               - storagemgmt
375         tenant:
376           fqdn:
377             list_join:
378             - '.'
379             - - {get_attr: [CephStorage, name]}
380               - tenant
381               - {get_param: CloudDomain}
382           short:
383             list_join:
384             - '.'
385             - - {get_attr: [CephStorage, name]}
386               - tenant
387         management:
388           fqdn:
389             list_join:
390             - '.'
391             - - {get_attr: [CephStorage, name]}
392               - management
393               - {get_param: CloudDomain}
394           short:
395             list_join:
396             - '.'
397             - - {get_attr: [CephStorage, name]}
398               - management
399         ctlplane:
400           fqdn:
401             list_join:
402             - '.'
403             - - {get_attr: [CephStorage, name]}
404               - ctlplane
405               - {get_param: CloudDomain}
406           short:
407             list_join:
408             - '.'
409             - - {get_attr: [CephStorage, name]}
410               - ctlplane
411
412   PreNetworkConfig:
413     type: OS::TripleO::CephStorage::PreNetworkConfig
414     properties:
415       server: {get_resource: CephStorage}
416       RoleParameters: {get_param: RoleParameters}
417       ServiceNames: {get_param: ServiceNames}
418
419   NetworkDeployment:
420     type: OS::TripleO::SoftwareDeployment
421     depends_on: PreNetworkConfig
422     properties:
423       name: NetworkDeployment
424       config: {get_resource: NetworkConfig}
425       server: {get_resource: CephStorage}
426       actions:
427         if:
428           - server_not_blacklisted
429           - {get_param: NetworkDeploymentActions}
430           - []
431
432   CephStorageUpgradeInitConfig:
433     type: OS::Heat::SoftwareConfig
434     properties:
435       group: script
436       config:
437         list_join:
438         - ''
439         - - "#!/bin/bash\n\n"
440           - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
441           - get_param: UpgradeInitCommand
442           - get_param: UpgradeInitCommonCommand
443
444   # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
445   # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
446   CephStorageUpgradeInitDeployment:
447     type: OS::Heat::SoftwareDeployment
448     depends_on: NetworkDeployment
449     properties:
450       name: CephStorageUpgradeInitDeployment
451       server: {get_resource: CephStorage}
452       config: {get_resource: CephStorageUpgradeInitConfig}
453       actions:
454         if:
455           - server_not_blacklisted
456           - ['CREATE', 'UPDATE']
457           - []
458
459   CephStorageDeployment:
460     type: OS::Heat::StructuredDeployment
461     depends_on: CephStorageUpgradeInitDeployment
462     properties:
463       name: CephStorageDeployment
464       config: {get_resource: CephStorageConfig}
465       server: {get_resource: CephStorage}
466       input_values:
467         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
468       actions:
469         if:
470           - server_not_blacklisted
471           - ['CREATE', 'UPDATE']
472           - []
473
474   CephStorageConfig:
475     type: OS::Heat::StructuredConfig
476     properties:
477       group: hiera
478       config:
479         hierarchy:
480           - '"%{::uuid}"'
481           - heat_config_%{::deploy_config_name}
482           - config_step
483           - ceph_extraconfig
484           - extraconfig
485           - service_names
486           - service_configs
487           - ceph
488           - bootstrap_node # provided by allNodesConfig
489           - all_nodes # provided by allNodesConfig
490           - vip_data # provided by allNodesConfig
491           - '"%{::osfamily}"'
492         merge_behavior: deeper
493         datafiles:
494           service_names:
495             service_names: {get_param: ServiceNames}
496             sensu::subscriptions: {get_param: MonitoringSubscriptions}
497           service_configs:
498             map_replace:
499               - {get_param: ServiceConfigSettings}
500               - values: {get_attr: [NetIpMap, net_ip_map]}
501           ceph_extraconfig: {get_param: CephStorageExtraConfig}
502           extraconfig: {get_param: ExtraConfig}
503           ceph:
504             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
505             fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
506             fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
507             fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
508             fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
509             fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
510             fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
511             fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
512
513   # Resource for site-specific injection of root certificate
514   NodeTLSCAData:
515     depends_on: CephStorageDeployment
516     type: OS::TripleO::NodeTLSCAData
517     properties:
518       server: {get_resource: CephStorage}
519
520   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
521   CephStorageExtraConfigPre:
522     depends_on: CephStorageDeployment
523     type: OS::TripleO::CephStorageExtraConfigPre
524     properties:
525         server: {get_resource: CephStorage}
526
527   # Hook for site-specific additional pre-deployment config,
528   # applying to all nodes, e.g node registration/unregistration
529   NodeExtraConfig:
530     depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
531     type: OS::TripleO::NodeExtraConfig
532     properties:
533         server: {get_resource: CephStorage}
534
535   UpdateConfig:
536     type: OS::TripleO::Tasks::PackageUpdate
537
538   UpdateDeployment:
539     type: OS::Heat::SoftwareDeployment
540     depends_on: NetworkDeployment
541     properties:
542       config: {get_resource: UpdateConfig}
543       server: {get_resource: CephStorage}
544       input_values:
545         update_identifier:
546           get_param: UpdateIdentifier
547       actions:
548         if:
549           - server_not_blacklisted
550           - ['CREATE', 'UPDATE']
551           - []
552
553   SshHostPubKey:
554     type: OS::TripleO::Ssh::HostPubKey
555     depends_on: CephStorageDeployment
556     properties:
557         server: {get_resource: CephStorage}
558
559 outputs:
560   ip_address:
561     description: IP address of the server in the ctlplane network
562     value: {get_attr: [CephStorage, networks, ctlplane, 0]}
563   hostname:
564     description: Hostname of the server
565     value: {get_attr: [CephStorage, name]}
566   hostname_map:
567     description: Mapping of network names to hostnames
568     value:
569       external: {get_attr: [NetHostMap, value, external, fqdn]}
570       internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
571       storage: {get_attr: [NetHostMap, value, storage, fqdn]}
572       storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
573       tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
574       management: {get_attr: [NetHostMap, value, management, fqdn]}
575       ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
576   hosts_entry:
577     value:
578       str_replace:
579         template: |
580           PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
581           EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
582           INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
583           STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
584           STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
585           TENANTIP TENANTHOST.DOMAIN TENANTHOST
586           MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
587           CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
588         params:
589           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
590           DOMAIN: {get_param: CloudDomain}
591           PRIMARYHOST: {get_attr: [CephStorage, name]}
592           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
593           EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
594           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
595           INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
596           STORAGEIP: {get_attr: [StoragePort, ip_address]}
597           STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
598           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
599           STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
600           TENANTIP: {get_attr: [TenantPort, ip_address]}
601           TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
602           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
603           MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
604           CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
605           CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
606   known_hosts_entry:
607     description: Entry for ssh known hosts
608     value:
609       str_replace:
610         template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
611 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
612 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
613 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
614 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
615 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
616 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
617 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
618         params:
619           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
620           DOMAIN: {get_param: CloudDomain}
621           PRIMARYHOST: {get_attr: [CephStorage, name]}
622           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
623           EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
624           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
625           INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
626           STORAGEIP: {get_attr: [StoragePort, ip_address]}
627           STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
628           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
629           STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
630           TENANTIP: {get_attr: [TenantPort, ip_address]}
631           TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
632           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
633           MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
634           CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
635           CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
636           HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
637   nova_server_resource:
638     description: Heat resource handle for the ceph storage server
639     value:
640       {get_resource: CephStorage}
641     condition: server_not_blacklisted
642   external_ip_address:
643     description: IP address of the server in the external network
644     value: {get_attr: [ExternalPort, ip_address]}
645   internal_api_ip_address:
646     description: IP address of the server in the internal_api network
647     value: {get_attr: [InternalApiPort, ip_address]}
648   storage_ip_address:
649     description: IP address of the server in the storage network
650     value: {get_attr: [StoragePort, ip_address]}
651   storage_mgmt_ip_address:
652     description: IP address of the server in the storage_mgmt network
653     value: {get_attr: [StorageMgmtPort, ip_address]}
654   tenant_ip_address:
655     description: IP address of the server in the tenant network
656     value: {get_attr: [TenantPort, ip_address]}
657   management_ip_address:
658     description: IP address of the server in the management network
659     value: {get_attr: [ManagementPort, ip_address]}
660   os_collect_config:
661     description: The os-collect-config configuration associated with this server resource
662     value: {get_attr: [CephStorage, os_collect_config]}