1 heat_template_version: 2015-04-30
2 description: 'OpenStack ceph storage node configured by Puppet'
5 description: Flavor for the Ceph Storage node.
8 - custom_constraint: nova.flavor
11 default: overcloud-ceph-storage
13 - custom_constraint: glance.image
15 default: 'REBUILD_PRESERVE_EPHEMERAL'
16 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
19 description: Name of an existing Nova key pair to enable SSH access to the instances
23 - custom_constraint: nova.keypair
26 description: Comma-separated list of ntp servers
27 type: comma_delimited_list
30 description: Set to true to enable package installation via Puppet
34 description: Mapping of service_name -> network name. Typically set
35 via parameter_defaults in the resource registry.
39 description: The timezone to be set on Ceph nodes.
45 Setting to a previously unused value during stack-update will trigger
46 package update on all nodes
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
57 Additional hiera configuration to inject into the cluster. Note
58 that CephStorageExtraConfig takes precedence over ExtraConfig.
60 CephStorageExtraConfig:
63 Role specific additional hiera configuration to inject into the cluster.
65 NetworkDeploymentActions:
66 type: comma_delimited_list
68 Heat action when to apply network configuration changes
70 SoftwareConfigTransport:
71 default: POLL_SERVER_CFN
73 How the server should receive the metadata required for software configuration.
76 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
81 The DNS domain used for the hosts. This should match the dhcp_domain
82 configured in the Undercloud neutron. Defaults to localdomain.
86 Extra properties or metadata passed to Nova for the created nodes in
87 the overcloud. It's accessible via the Nova metadata API.
91 description: Optional scheduler hints to pass to nova
96 type: OS::Nova::Server
98 image: {get_param: Image}
99 image_update_policy: {get_param: ImageUpdatePolicy}
100 flavor: {get_param: Flavor}
101 key_name: {get_param: KeyName}
104 user_data_format: SOFTWARE_CONFIG
105 user_data: {get_resource: UserData}
108 template: {get_param: Hostname}
109 params: {get_param: HostnameMap}
110 software_config_transport: {get_param: SoftwareConfigTransport}
111 metadata: {get_param: ServerMetadata}
112 scheduler_hints: {get_param: SchedulerHints}
114 # Combine the NodeAdminUserData and NodeUserData mime archives
116 type: OS::Heat::MultipartMime
119 - config: {get_resource: NodeAdminUserData}
121 - config: {get_resource: NodeUserData}
124 # Creates the "heat-admin" user if configured via the environment
125 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
127 type: OS::TripleO::NodeAdminUserData
129 # For optional operator additional userdata
130 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
132 type: OS::TripleO::NodeUserData
135 type: OS::TripleO::CephStorage::Ports::ExternalPort
137 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
140 type: OS::TripleO::CephStorage::Ports::InternalApiPort
142 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
145 type: OS::TripleO::CephStorage::Ports::StoragePort
147 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
150 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
152 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
155 type: OS::TripleO::CephStorage::Ports::TenantPort
157 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
160 type: OS::TripleO::CephStorage::Ports::ManagementPort
162 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
165 type: OS::TripleO::CephStorage::Net::SoftwareConfig
167 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
168 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
169 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
170 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
171 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
172 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
173 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
176 type: OS::TripleO::Network::Ports::NetIpMap
178 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
179 ExternalIp: {get_attr: [ExternalPort, ip_address]}
180 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
181 StorageIp: {get_attr: [StoragePort, ip_address]}
182 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
183 TenantIp: {get_attr: [TenantPort, ip_address]}
184 ManagementIp: {get_attr: [ManagementPort, ip_address]}
187 type: OS::TripleO::Network::Ports::NetIpSubnetMap
189 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
190 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
191 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
192 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
193 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
194 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
195 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
198 type: OS::TripleO::SoftwareDeployment
200 name: NetworkDeployment
201 config: {get_resource: NetworkConfig}
202 server: {get_resource: CephStorage}
203 actions: {get_param: NetworkDeploymentActions}
205 CephStorageDeployment:
206 type: OS::Heat::StructuredDeployment
207 depends_on: NetworkDeployment
209 name: CephStorageDeployment
210 config: {get_resource: CephStorageConfig}
211 server: {get_resource: CephStorage}
213 ntp_servers: {get_param: NtpServer}
214 timezone: {get_param: TimeZone}
215 enable_package_install: {get_param: EnablePackageInstall}
216 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
217 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
218 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
221 type: OS::Heat::StructuredConfig
223 group: os-apply-config
228 - heat_config_%{::deploy_config_name}
231 - ceph_cluster # provided by CephClusterConfig
237 raw_data: {get_file: hieradata/common.yaml}
239 mapped_data: {get_param: CephStorageExtraConfig}
241 mapped_data: {get_param: ExtraConfig}
243 raw_data: {get_file: hieradata/ceph.yaml}
245 ntp::servers: {get_input: ntp_servers}
246 timezone::timezone: {get_input: timezone}
247 tripleo::packages::enable_install: {get_input: enable_package_install}
248 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
249 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
250 ceph::profile::params::public_network: {get_input: ceph_public_network}
252 # Resource for site-specific injection of root certificate
254 depends_on: CephStorageDeployment
255 type: OS::TripleO::NodeTLSCAData
257 server: {get_resource: CephStorage}
259 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
260 CephStorageExtraConfigPre:
261 depends_on: CephStorageDeployment
262 type: OS::TripleO::CephStorageExtraConfigPre
264 server: {get_resource: CephStorage}
266 # Hook for site-specific additional pre-deployment config,
267 # applying to all nodes, e.g node registration/unregistration
269 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
270 type: OS::TripleO::NodeExtraConfig
272 server: {get_resource: CephStorage}
275 type: OS::TripleO::Tasks::PackageUpdate
278 type: OS::Heat::SoftwareDeployment
280 config: {get_resource: UpdateConfig}
281 server: {get_resource: CephStorage}
284 get_param: UpdateIdentifier
291 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
292 EXTERNALIP EXTERNALHOST
293 INTERNAL_APIIP INTERNAL_APIHOST
294 STORAGEIP STORAGEHOST
295 STORAGE_MGMTIP STORAGE_MGMTHOST
297 MANAGEMENTIP MANAGEMENTHOST
299 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
300 DOMAIN: {get_param: CloudDomain}
301 PRIMARYHOST: {get_attr: [CephStorage, name]}
302 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
306 - - {get_attr: [CephStorage, name]}
308 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
312 - - {get_attr: [CephStorage, name]}
314 STORAGEIP: {get_attr: [StoragePort, ip_address]}
318 - - {get_attr: [CephStorage, name]}
320 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
324 - - {get_attr: [CephStorage, name]}
326 TENANTIP: {get_attr: [TenantPort, ip_address]}
330 - - {get_attr: [CephStorage, name]}
332 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
336 - - {get_attr: [CephStorage, name]}
338 nova_server_resource:
339 description: Heat resource handle for the ceph storage server
341 {get_resource: CephStorage}
343 description: IP address of the server in the external network
344 value: {get_attr: [ExternalPort, ip_address]}
345 internal_api_ip_address:
346 description: IP address of the server in the internal_api network
347 value: {get_attr: [InternalApiPort, ip_address]}
349 description: IP address of the server in the storage network
350 value: {get_attr: [StoragePort, ip_address]}
351 storage_mgmt_ip_address:
352 description: IP address of the server in the storage_mgmt network
353 value: {get_attr: [StorageMgmtPort, ip_address]}
355 description: IP address of the server in the tenant network
356 value: {get_attr: [TenantPort, ip_address]}
357 management_ip_address:
358 description: IP address of the server in the management network
359 value: {get_attr: [ManagementPort, ip_address]}
361 description: identifier which changes if the node configuration may need re-applying
365 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
366 - {get_attr: [NodeTLSCAData, deploy_stdout]}
367 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
368 - {get_param: UpdateIdentifier}