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::StoragePort
126 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
129 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
131 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
134 type: OS::TripleO::CephStorage::Ports::ManagementPort
136 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
139 type: OS::TripleO::CephStorage::Net::SoftwareConfig
141 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
142 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
143 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
144 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
147 type: OS::TripleO::Network::Ports::NetIpMap
149 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
150 StorageIp: {get_attr: [StoragePort, ip_address]}
151 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
152 ManagementIp: {get_attr: [ManagementPort, ip_address]}
155 type: OS::TripleO::Network::Ports::NetIpSubnetMap
157 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
158 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
159 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
160 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
163 type: OS::TripleO::SoftwareDeployment
165 config: {get_resource: NetworkConfig}
166 server: {get_resource: CephStorage}
167 actions: {get_param: NetworkDeploymentActions}
169 CephStorageDeployment:
170 type: OS::Heat::StructuredDeployment
171 depends_on: NetworkDeployment
173 config: {get_resource: CephStorageConfig}
174 server: {get_resource: CephStorage}
176 ntp_servers: {get_param: NtpServer}
177 enable_package_install: {get_param: EnablePackageInstall}
178 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
179 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
180 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
183 type: OS::Heat::StructuredConfig
185 group: os-apply-config
190 - heat_config_%{::deploy_config_name}
193 - ceph_cluster # provided by CephClusterConfig
199 raw_data: {get_file: hieradata/common.yaml}
201 mapped_data: {get_param: CephStorageExtraConfig}
203 mapped_data: {get_param: ExtraConfig}
205 raw_data: {get_file: hieradata/ceph.yaml}
207 ntp::servers: {get_input: ntp_servers}
208 tripleo::packages::enable_install: {get_input: enable_package_install}
209 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
210 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
211 ceph::profile::params::public_network: {get_input: ceph_public_network}
213 # Resource for site-specific injection of root certificate
215 depends_on: CephStorageDeployment
216 type: OS::TripleO::NodeTLSCAData
218 server: {get_resource: CephStorage}
220 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
221 CephStorageExtraConfigPre:
222 depends_on: CephStorageDeployment
223 type: OS::TripleO::CephStorageExtraConfigPre
225 server: {get_resource: CephStorage}
227 # Hook for site-specific additional pre-deployment config,
228 # applying to all nodes, e.g node registration/unregistration
230 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
231 type: OS::TripleO::NodeExtraConfig
233 server: {get_resource: CephStorage}
236 type: OS::TripleO::Tasks::PackageUpdate
239 type: OS::Heat::SoftwareDeployment
241 config: {get_resource: UpdateConfig}
242 server: {get_resource: CephStorage}
245 get_param: UpdateIdentifier
251 template: "IP HOST.DOMAIN HOST"
253 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
254 DOMAIN: {get_param: CloudDomain}
255 HOST: {get_attr: [CephStorage, name]}
256 nova_server_resource:
257 description: Heat resource handle for the ceph storage server
259 {get_resource: CephStorage}
261 description: IP address of the server in the storage network
262 value: {get_attr: [StoragePort, ip_address]}
263 storage_mgmt_ip_address:
264 description: IP address of the server in the storage_mgmt network
265 value: {get_attr: [StorageMgmtPort, ip_address]}
266 management_ip_address:
267 description: IP address of the server in the management network
268 value: {get_attr: [ManagementPort, ip_address]}
270 description: identifier which changes if the node configuration may need re-applying
274 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
275 - {get_attr: [NodeTLSCAData, deploy_stdout]}
276 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
277 - {get_param: UpdateIdentifier}