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 EC2 KeyPair 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.
85 type: OS::Nova::Server
87 image: {get_param: Image}
88 image_update_policy: {get_param: ImageUpdatePolicy}
89 flavor: {get_param: Flavor}
90 key_name: {get_param: KeyName}
93 user_data_format: SOFTWARE_CONFIG
94 user_data: {get_resource: UserData}
95 name: {get_param: Hostname}
96 software_config_transport: {get_param: SoftwareConfigTransport}
97 metadata: {get_param: ServerMetadata}
99 # Combine the NodeAdminUserData and NodeUserData mime archives
101 type: OS::Heat::MultipartMime
104 - config: {get_resource: NodeAdminUserData}
106 - config: {get_resource: NodeUserData}
109 # Creates the "heat-admin" user if configured via the environment
110 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
112 type: OS::TripleO::NodeAdminUserData
114 # For optional operator additional userdata
115 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
117 type: OS::TripleO::NodeUserData
120 type: OS::TripleO::CephStorage::Ports::StoragePort
122 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
125 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
127 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
130 type: OS::TripleO::CephStorage::Net::SoftwareConfig
132 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
133 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
134 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
137 type: OS::TripleO::Network::Ports::NetIpMap
139 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
140 StorageIp: {get_attr: [StoragePort, ip_address]}
141 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
144 type: OS::TripleO::Network::Ports::NetIpSubnetMap
146 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
147 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
148 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
151 type: OS::TripleO::SoftwareDeployment
153 config: {get_resource: NetworkConfig}
154 server: {get_resource: CephStorage}
155 actions: {get_param: NetworkDeploymentActions}
157 CephStorageDeployment:
158 type: OS::Heat::StructuredDeployment
159 depends_on: NetworkDeployment
161 config: {get_resource: CephStorageConfig}
162 server: {get_resource: CephStorage}
164 ntp_servers: {get_param: NtpServer}
165 enable_package_install: {get_param: EnablePackageInstall}
166 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
167 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
168 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
171 type: OS::Heat::StructuredConfig
173 group: os-apply-config
178 - heat_config_%{::deploy_config_name}
181 - ceph_cluster # provided by CephClusterConfig
187 raw_data: {get_file: hieradata/common.yaml}
189 mapped_data: {get_param: CephStorageExtraConfig}
191 mapped_data: {get_param: ExtraConfig}
193 raw_data: {get_file: hieradata/ceph.yaml}
195 ntp::servers: {get_input: ntp_servers}
196 tripleo::packages::enable_install: {get_input: enable_package_install}
197 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
198 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
199 ceph::profile::params::public_network: {get_input: ceph_public_network}
201 # Resource for site-specific injection of root certificate
203 depends_on: CephStorageDeployment
204 type: OS::TripleO::NodeTLSCAData
206 server: {get_resource: CephStorage}
208 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
209 CephStorageExtraConfigPre:
210 depends_on: CephStorageDeployment
211 type: OS::TripleO::CephStorageExtraConfigPre
213 server: {get_resource: CephStorage}
215 # Hook for site-specific additional pre-deployment config,
216 # applying to all nodes, e.g node registration/unregistration
218 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
219 type: OS::TripleO::NodeExtraConfig
221 server: {get_resource: CephStorage}
224 type: OS::TripleO::Tasks::PackageUpdate
227 type: OS::Heat::SoftwareDeployment
229 config: {get_resource: UpdateConfig}
230 server: {get_resource: CephStorage}
233 get_param: UpdateIdentifier
239 template: "IP HOST.DOMAIN HOST"
241 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
242 DOMAIN: {get_param: CloudDomain}
243 HOST: {get_attr: [CephStorage, name]}
244 nova_server_resource:
245 description: Heat resource handle for the ceph storage server
247 {get_resource: CephStorage}
249 description: IP address of the server in the storage network
250 value: {get_attr: [StoragePort, ip_address]}
251 storage_mgmt_ip_address:
252 description: IP address of the server in the storage_mgmt network
253 value: {get_attr: [StorageMgmtPort, ip_address]}
255 description: identifier which changes if the node configuration may need re-applying
259 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
260 - {get_attr: [NodeTLSCAData, deploy_stdout]}
261 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
262 - {get_param: UpdateIdentifier}