1 heat_template_version: 2016-10-14
2 description: 'OpenStack ceph storage node configured by Puppet'
4 OvercloudCephStorageFlavor:
5 description: Flavor for the Ceph Storage node.
9 - custom_constraint: nova.flavor
12 default: overcloud-full
14 - custom_constraint: glance.image
16 default: 'REBUILD_PRESERVE_EPHEMERAL'
17 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
20 description: Name of an existing Nova key pair to enable SSH access to the instances
24 - custom_constraint: nova.keypair
27 description: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
34 Setting to a previously unused value during stack-update will trigger
35 package update on all nodes
38 default: '' # Defaults to Heat created hostname
42 description: Optional mapping to override hostnames
46 Additional hiera configuration to inject into the cluster. Note
47 that CephStorageExtraConfig takes precedence over ExtraConfig.
49 CephStorageExtraConfig:
52 Role specific additional hiera configuration to inject into the cluster.
57 NetworkDeploymentActions:
58 type: comma_delimited_list
60 Heat action when to apply network configuration changes
62 SoftwareConfigTransport:
63 default: POLL_SERVER_CFN
65 How the server should receive the metadata required for software configuration.
68 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
72 The DNS domain used for the hosts. This should match the dhcp_domain
73 configured in the Undercloud neutron. Defaults to localdomain.
77 Extra properties or metadata passed to Nova for the created nodes in
78 the overcloud. It's accessible via the Nova metadata API.
80 CephStorageSchedulerHints:
82 description: Optional scheduler hints to pass to nova
87 ServiceConfigSettings:
91 type: comma_delimited_list
93 MonitoringSubscriptions:
94 type: comma_delimited_list
98 description: Command which will be run whenever configuration data changes
99 default: os-refresh-config --timeout 14400
103 type: OS::TripleO::Server
106 command: {get_param: ConfigCommand}
108 image: {get_param: CephStorageImage}
109 image_update_policy: {get_param: ImageUpdatePolicy}
110 flavor: {get_param: OvercloudCephStorageFlavor}
111 key_name: {get_param: KeyName}
114 user_data_format: SOFTWARE_CONFIG
115 user_data: {get_resource: UserData}
118 template: {get_param: Hostname}
119 params: {get_param: HostnameMap}
120 software_config_transport: {get_param: SoftwareConfigTransport}
121 metadata: {get_param: ServerMetadata}
122 scheduler_hints: {get_param: CephStorageSchedulerHints}
124 # Combine the NodeAdminUserData and NodeUserData mime archives
126 type: OS::Heat::MultipartMime
129 - config: {get_resource: NodeAdminUserData}
131 - config: {get_resource: NodeUserData}
134 # Creates the "heat-admin" user if configured via the environment
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeAdminUserData
139 # For optional operator additional userdata
140 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
142 type: OS::TripleO::NodeUserData
145 type: OS::TripleO::CephStorage::Ports::ExternalPort
147 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
148 IPPool: {get_param: CephStorageIPs}
149 NodeIndex: {get_param: NodeIndex}
152 type: OS::TripleO::CephStorage::Ports::InternalApiPort
154 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
155 IPPool: {get_param: CephStorageIPs}
156 NodeIndex: {get_param: NodeIndex}
159 type: OS::TripleO::CephStorage::Ports::StoragePort
161 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
162 IPPool: {get_param: CephStorageIPs}
163 NodeIndex: {get_param: NodeIndex}
166 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
168 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
169 IPPool: {get_param: CephStorageIPs}
170 NodeIndex: {get_param: NodeIndex}
173 type: OS::TripleO::CephStorage::Ports::TenantPort
175 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
176 IPPool: {get_param: CephStorageIPs}
177 NodeIndex: {get_param: NodeIndex}
180 type: OS::TripleO::CephStorage::Ports::ManagementPort
182 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: CephStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::CephStorage::Net::SoftwareConfig
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::Network::Ports::NetIpMap
200 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
201 ExternalIp: {get_attr: [ExternalPort, ip_address]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
204 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
205 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
206 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
207 StorageIp: {get_attr: [StoragePort, ip_address]}
208 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
209 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
210 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
213 TenantIp: {get_attr: [TenantPort, ip_address]}
214 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
215 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
216 ManagementIp: {get_attr: [ManagementPort, ip_address]}
217 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
218 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
221 type: OS::TripleO::SoftwareDeployment
223 name: NetworkDeployment
224 config: {get_resource: NetworkConfig}
225 server: {get_resource: CephStorage}
226 actions: {get_param: NetworkDeploymentActions}
228 CephStorageDeployment:
229 type: OS::Heat::StructuredDeployment
230 depends_on: NetworkDeployment
232 name: CephStorageDeployment
233 config: {get_resource: CephStorageConfig}
234 server: {get_resource: CephStorage}
236 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
239 type: OS::Heat::StructuredConfig
241 group: os-apply-config
246 - heat_config_%{::deploy_config_name}
251 - bootstrap_node # provided by allNodesConfig
252 - all_nodes # provided by allNodesConfig
253 - vip_data # provided by allNodesConfig
255 merge_behavior: deeper
259 service_names: {get_param: ServiceNames}
260 sensu::subscriptions: {get_param: MonitoringSubscriptions}
264 - {get_param: ServiceConfigSettings}
265 - values: {get_attr: [NetIpMap, net_ip_map]}
267 mapped_data: {get_param: CephStorageExtraConfig}
269 mapped_data: {get_param: ExtraConfig}
272 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
274 # Resource for site-specific injection of root certificate
276 depends_on: CephStorageDeployment
277 type: OS::TripleO::NodeTLSCAData
279 server: {get_resource: CephStorage}
281 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
282 CephStorageExtraConfigPre:
283 depends_on: CephStorageDeployment
284 type: OS::TripleO::CephStorageExtraConfigPre
286 server: {get_resource: CephStorage}
288 # Hook for site-specific additional pre-deployment config,
289 # applying to all nodes, e.g node registration/unregistration
291 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
292 type: OS::TripleO::NodeExtraConfig
294 server: {get_resource: CephStorage}
297 type: OS::TripleO::Tasks::PackageUpdate
300 type: OS::Heat::SoftwareDeployment
302 config: {get_resource: UpdateConfig}
303 server: {get_resource: CephStorage}
306 get_param: UpdateIdentifier
310 description: IP address of the server in the ctlplane network
311 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
313 description: Hostname of the server
314 value: {get_attr: [CephStorage, name]}
319 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
320 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
321 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
322 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
323 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
324 TENANTIP TENANTHOST.DOMAIN TENANTHOST
325 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
327 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
328 DOMAIN: {get_param: CloudDomain}
329 PRIMARYHOST: {get_attr: [CephStorage, name]}
330 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
334 - - {get_attr: [CephStorage, name]}
336 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
340 - - {get_attr: [CephStorage, name]}
342 STORAGEIP: {get_attr: [StoragePort, ip_address]}
346 - - {get_attr: [CephStorage, name]}
348 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
352 - - {get_attr: [CephStorage, name]}
354 TENANTIP: {get_attr: [TenantPort, ip_address]}
358 - - {get_attr: [CephStorage, name]}
360 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
364 - - {get_attr: [CephStorage, name]}
366 nova_server_resource:
367 description: Heat resource handle for the ceph storage server
369 {get_resource: CephStorage}
371 description: IP address of the server in the external network
372 value: {get_attr: [ExternalPort, ip_address]}
373 internal_api_ip_address:
374 description: IP address of the server in the internal_api network
375 value: {get_attr: [InternalApiPort, ip_address]}
377 description: IP address of the server in the storage network
378 value: {get_attr: [StoragePort, ip_address]}
379 storage_mgmt_ip_address:
380 description: IP address of the server in the storage_mgmt network
381 value: {get_attr: [StorageMgmtPort, ip_address]}
383 description: IP address of the server in the tenant network
384 value: {get_attr: [TenantPort, ip_address]}
385 management_ip_address:
386 description: IP address of the server in the management network
387 value: {get_attr: [ManagementPort, ip_address]}