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.
41 Setting to a previously unused value during stack-update will trigger
42 package update on all nodes
45 default: '' # Defaults to Heat created hostname
49 Additional hiera configuration to inject into the cluster. Note
50 that CephStorageExtraConfig takes precedence over ExtraConfig.
52 CephStorageExtraConfig:
55 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]
73 The DNS domain used for the hosts. This should match the dhcp_domain
74 configured in the Undercloud neutron. Defaults to localdomain.
78 Extra properties or metadata passed to Nova for the created nodes in
79 the overcloud. It's accessible via the Nova metadata API.
83 description: Optional scheduler hints to pass to nova
88 type: OS::Nova::Server
90 image: {get_param: Image}
91 image_update_policy: {get_param: ImageUpdatePolicy}
92 flavor: {get_param: Flavor}
93 key_name: {get_param: KeyName}
96 user_data_format: SOFTWARE_CONFIG
97 user_data: {get_resource: UserData}
98 name: {get_param: Hostname}
99 software_config_transport: {get_param: SoftwareConfigTransport}
100 metadata: {get_param: ServerMetadata}
101 scheduler_hints: {get_param: SchedulerHints}
103 # Combine the NodeAdminUserData and NodeUserData mime archives
105 type: OS::Heat::MultipartMime
108 - config: {get_resource: NodeAdminUserData}
110 - config: {get_resource: NodeUserData}
113 # Creates the "heat-admin" user if configured via the environment
114 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
116 type: OS::TripleO::NodeAdminUserData
118 # For optional operator additional userdata
119 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
121 type: OS::TripleO::NodeUserData
124 type: OS::TripleO::CephStorage::Ports::ExternalPort
126 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
129 type: OS::TripleO::CephStorage::Ports::InternalApiPort
131 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
134 type: OS::TripleO::CephStorage::Ports::StoragePort
136 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
139 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
141 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
144 type: OS::TripleO::CephStorage::Ports::TenantPort
146 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
149 type: OS::TripleO::CephStorage::Ports::ManagementPort
151 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
154 type: OS::TripleO::CephStorage::Net::SoftwareConfig
156 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
157 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
158 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
159 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
160 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
161 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
162 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
165 type: OS::TripleO::Network::Ports::NetIpMap
167 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
168 ExternalIp: {get_attr: [ExternalPort, ip_address]}
169 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
170 StorageIp: {get_attr: [StoragePort, ip_address]}
171 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
172 TenantIp: {get_attr: [TenantPort, ip_address]}
173 ManagementIp: {get_attr: [ManagementPort, ip_address]}
176 type: OS::TripleO::Network::Ports::NetIpSubnetMap
178 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
179 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
180 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
181 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
182 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
183 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
184 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
187 type: OS::TripleO::SoftwareDeployment
189 config: {get_resource: NetworkConfig}
190 server: {get_resource: CephStorage}
191 actions: {get_param: NetworkDeploymentActions}
193 CephStorageDeployment:
194 type: OS::Heat::StructuredDeployment
195 depends_on: NetworkDeployment
197 config: {get_resource: CephStorageConfig}
198 server: {get_resource: CephStorage}
200 ntp_servers: {get_param: NtpServer}
201 enable_package_install: {get_param: EnablePackageInstall}
202 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
203 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
204 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
207 type: OS::Heat::StructuredConfig
209 group: os-apply-config
214 - heat_config_%{::deploy_config_name}
217 - ceph_cluster # provided by CephClusterConfig
223 raw_data: {get_file: hieradata/common.yaml}
225 mapped_data: {get_param: CephStorageExtraConfig}
227 mapped_data: {get_param: ExtraConfig}
229 raw_data: {get_file: hieradata/ceph.yaml}
231 ntp::servers: {get_input: ntp_servers}
232 tripleo::packages::enable_install: {get_input: enable_package_install}
233 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
234 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
235 ceph::profile::params::public_network: {get_input: ceph_public_network}
237 # Resource for site-specific injection of root certificate
239 depends_on: CephStorageDeployment
240 type: OS::TripleO::NodeTLSCAData
242 server: {get_resource: CephStorage}
244 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
245 CephStorageExtraConfigPre:
246 depends_on: CephStorageDeployment
247 type: OS::TripleO::CephStorageExtraConfigPre
249 server: {get_resource: CephStorage}
251 # Hook for site-specific additional pre-deployment config,
252 # applying to all nodes, e.g node registration/unregistration
254 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
255 type: OS::TripleO::NodeExtraConfig
257 server: {get_resource: CephStorage}
260 type: OS::TripleO::Tasks::PackageUpdate
263 type: OS::Heat::SoftwareDeployment
265 config: {get_resource: UpdateConfig}
266 server: {get_resource: CephStorage}
269 get_param: UpdateIdentifier
275 template: "IP HOST.DOMAIN HOST"
277 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
278 DOMAIN: {get_param: CloudDomain}
279 HOST: {get_attr: [CephStorage, name]}
280 nova_server_resource:
281 description: Heat resource handle for the ceph storage server
283 {get_resource: CephStorage}
285 description: IP address of the server in the external network
286 value: {get_attr: [ExternalPort, ip_address]}
287 internal_api_ip_address:
288 description: IP address of the server in the internal_api network
289 value: {get_attr: [InternalApiPort, ip_address]}
291 description: IP address of the server in the storage network
292 value: {get_attr: [StoragePort, ip_address]}
293 storage_mgmt_ip_address:
294 description: IP address of the server in the storage_mgmt network
295 value: {get_attr: [StorageMgmtPort, ip_address]}
297 description: IP address of the server in the tenant network
298 value: {get_attr: [TenantPort, ip_address]}
299 management_ip_address:
300 description: IP address of the server in the management network
301 value: {get_attr: [ManagementPort, ip_address]}
303 description: identifier which changes if the node configuration may need re-applying
307 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
308 - {get_attr: [NodeTLSCAData, deploy_stdout]}
309 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
310 - {get_param: UpdateIdentifier}