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 Additional hiera configuration to inject into the cluster. Note
54 that CephStorageExtraConfig takes precedence over ExtraConfig.
56 CephStorageExtraConfig:
59 Role specific additional hiera configuration to inject into the cluster.
61 NetworkDeploymentActions:
62 type: comma_delimited_list
64 Heat action when to apply network configuration changes
66 SoftwareConfigTransport:
67 default: POLL_SERVER_CFN
69 How the server should receive the metadata required for software configuration.
72 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
77 The DNS domain used for the hosts. This should match the dhcp_domain
78 configured in the Undercloud neutron. Defaults to localdomain.
82 Extra properties or metadata passed to Nova for the created nodes in
83 the overcloud. It's accessible via the Nova metadata API.
87 description: Optional scheduler hints to pass to nova
92 type: OS::Nova::Server
94 image: {get_param: Image}
95 image_update_policy: {get_param: ImageUpdatePolicy}
96 flavor: {get_param: Flavor}
97 key_name: {get_param: KeyName}
100 user_data_format: SOFTWARE_CONFIG
101 user_data: {get_resource: UserData}
102 name: {get_param: Hostname}
103 software_config_transport: {get_param: SoftwareConfigTransport}
104 metadata: {get_param: ServerMetadata}
105 scheduler_hints: {get_param: SchedulerHints}
107 # Combine the NodeAdminUserData and NodeUserData mime archives
109 type: OS::Heat::MultipartMime
112 - config: {get_resource: NodeAdminUserData}
114 - config: {get_resource: NodeUserData}
117 # Creates the "heat-admin" user if configured via the environment
118 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
120 type: OS::TripleO::NodeAdminUserData
122 # For optional operator additional userdata
123 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
125 type: OS::TripleO::NodeUserData
128 type: OS::TripleO::CephStorage::Ports::ExternalPort
130 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
133 type: OS::TripleO::CephStorage::Ports::InternalApiPort
135 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
138 type: OS::TripleO::CephStorage::Ports::StoragePort
140 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
143 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
145 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
148 type: OS::TripleO::CephStorage::Ports::TenantPort
150 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
153 type: OS::TripleO::CephStorage::Ports::ManagementPort
155 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
158 type: OS::TripleO::CephStorage::Net::SoftwareConfig
160 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
161 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
162 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
163 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
164 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
165 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
166 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
169 type: OS::TripleO::Network::Ports::NetIpMap
171 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
172 ExternalIp: {get_attr: [ExternalPort, ip_address]}
173 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
174 StorageIp: {get_attr: [StoragePort, ip_address]}
175 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
176 TenantIp: {get_attr: [TenantPort, ip_address]}
177 ManagementIp: {get_attr: [ManagementPort, ip_address]}
180 type: OS::TripleO::Network::Ports::NetIpSubnetMap
182 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
183 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
184 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
185 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
186 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
187 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
188 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
191 type: OS::TripleO::SoftwareDeployment
193 name: NetworkDeployment
194 config: {get_resource: NetworkConfig}
195 server: {get_resource: CephStorage}
196 actions: {get_param: NetworkDeploymentActions}
198 CephStorageDeployment:
199 type: OS::Heat::StructuredDeployment
200 depends_on: NetworkDeployment
202 name: CephStorageDeployment
203 config: {get_resource: CephStorageConfig}
204 server: {get_resource: CephStorage}
206 ntp_servers: {get_param: NtpServer}
207 timezone: {get_param: TimeZone}
208 enable_package_install: {get_param: EnablePackageInstall}
209 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
210 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
211 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
214 type: OS::Heat::StructuredConfig
216 group: os-apply-config
221 - heat_config_%{::deploy_config_name}
224 - ceph_cluster # provided by CephClusterConfig
230 raw_data: {get_file: hieradata/common.yaml}
232 mapped_data: {get_param: CephStorageExtraConfig}
234 mapped_data: {get_param: ExtraConfig}
236 raw_data: {get_file: hieradata/ceph.yaml}
238 ntp::servers: {get_input: ntp_servers}
239 timezone::timezone: {get_input: timezone}
240 tripleo::packages::enable_install: {get_input: enable_package_install}
241 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
242 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
243 ceph::profile::params::public_network: {get_input: ceph_public_network}
245 # Resource for site-specific injection of root certificate
247 depends_on: CephStorageDeployment
248 type: OS::TripleO::NodeTLSCAData
250 server: {get_resource: CephStorage}
252 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
253 CephStorageExtraConfigPre:
254 depends_on: CephStorageDeployment
255 type: OS::TripleO::CephStorageExtraConfigPre
257 server: {get_resource: CephStorage}
259 # Hook for site-specific additional pre-deployment config,
260 # applying to all nodes, e.g node registration/unregistration
262 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
263 type: OS::TripleO::NodeExtraConfig
265 server: {get_resource: CephStorage}
268 type: OS::TripleO::Tasks::PackageUpdate
271 type: OS::Heat::SoftwareDeployment
273 config: {get_resource: UpdateConfig}
274 server: {get_resource: CephStorage}
277 get_param: UpdateIdentifier
283 template: "IP HOST.DOMAIN HOST"
285 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
286 DOMAIN: {get_param: CloudDomain}
287 HOST: {get_attr: [CephStorage, name]}
288 nova_server_resource:
289 description: Heat resource handle for the ceph storage server
291 {get_resource: CephStorage}
293 description: IP address of the server in the external network
294 value: {get_attr: [ExternalPort, ip_address]}
295 internal_api_ip_address:
296 description: IP address of the server in the internal_api network
297 value: {get_attr: [InternalApiPort, ip_address]}
299 description: IP address of the server in the storage network
300 value: {get_attr: [StoragePort, ip_address]}
301 storage_mgmt_ip_address:
302 description: IP address of the server in the storage_mgmt network
303 value: {get_attr: [StorageMgmtPort, ip_address]}
305 description: IP address of the server in the tenant network
306 value: {get_attr: [TenantPort, ip_address]}
307 management_ip_address:
308 description: IP address of the server in the management network
309 value: {get_attr: [ManagementPort, ip_address]}
311 description: identifier which changes if the node configuration may need re-applying
315 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
316 - {get_attr: [NodeTLSCAData, deploy_stdout]}
317 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
318 - {get_param: UpdateIdentifier}