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
66 The DNS domain used for the hosts. This should match the dhcp_domain
67 configured in the Undercloud neutron. Defaults to localdomain.
71 Extra properties or metadata passed to Nova for the created nodes in
72 the overcloud. It's accessible via the Nova metadata API.
78 type: OS::Nova::Server
80 image: {get_param: Image}
81 image_update_policy: {get_param: ImageUpdatePolicy}
82 flavor: {get_param: Flavor}
83 key_name: {get_param: KeyName}
86 user_data_format: SOFTWARE_CONFIG
87 user_data: {get_resource: UserData}
88 name: {get_param: Hostname}
89 metadata: {get_param: ServerMetadata}
91 # Combine the NodeAdminUserData and NodeUserData mime archives
93 type: OS::Heat::MultipartMime
96 - config: {get_resource: NodeAdminUserData}
98 - config: {get_resource: NodeUserData}
101 # Creates the "heat-admin" user if configured via the environment
102 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
104 type: OS::TripleO::NodeAdminUserData
106 # For optional operator additional userdata
107 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
109 type: OS::TripleO::NodeUserData
112 type: OS::TripleO::CephStorage::Ports::StoragePort
114 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
117 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
119 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
122 type: OS::TripleO::CephStorage::Net::SoftwareConfig
124 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
125 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
126 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
129 type: OS::TripleO::Network::Ports::NetIpMap
131 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
132 StorageIp: {get_attr: [StoragePort, ip_address]}
133 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
136 type: OS::TripleO::Network::Ports::NetIpSubnetMap
138 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
139 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
140 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
143 type: OS::TripleO::SoftwareDeployment
145 config: {get_resource: NetworkConfig}
146 server: {get_resource: CephStorage}
147 actions: {get_param: NetworkDeploymentActions}
149 CephStorageDeployment:
150 type: OS::Heat::StructuredDeployment
151 depends_on: NetworkDeployment
153 config: {get_resource: CephStorageConfig}
154 server: {get_resource: CephStorage}
156 ntp_servers: {get_param: NtpServer}
157 enable_package_install: {get_param: EnablePackageInstall}
158 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
159 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
160 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
163 type: OS::Heat::StructuredConfig
165 group: os-apply-config
170 - heat_config_%{::deploy_config_name}
173 - ceph_cluster # provided by CephClusterConfig
179 raw_data: {get_file: hieradata/common.yaml}
181 mapped_data: {get_param: CephStorageExtraConfig}
183 mapped_data: {get_param: ExtraConfig}
185 raw_data: {get_file: hieradata/ceph.yaml}
187 ntp::servers: {get_input: ntp_servers}
188 tripleo::packages::enable_install: {get_input: enable_package_install}
189 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
190 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
191 ceph::profile::params::public_network: {get_input: ceph_public_network}
193 # Resource for site-specific injection of root certificate
195 depends_on: CephStorageDeployment
196 type: OS::TripleO::NodeTLSCAData
198 server: {get_resource: CephStorage}
200 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
201 CephStorageExtraConfigPre:
202 depends_on: CephStorageDeployment
203 type: OS::TripleO::CephStorageExtraConfigPre
205 server: {get_resource: CephStorage}
207 # Hook for site-specific additional pre-deployment config,
208 # applying to all nodes, e.g node registration/unregistration
210 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
211 type: OS::TripleO::NodeExtraConfig
213 server: {get_resource: CephStorage}
216 type: OS::TripleO::Tasks::PackageUpdate
219 type: OS::Heat::SoftwareDeployment
221 config: {get_resource: UpdateConfig}
222 server: {get_resource: CephStorage}
225 get_param: UpdateIdentifier
231 template: "IP HOST.DOMAIN HOST"
233 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
234 DOMAIN: {get_param: CloudDomain}
235 HOST: {get_attr: [CephStorage, name]}
236 nova_server_resource:
237 description: Heat resource handle for the ceph storage server
239 {get_resource: CephStorage}
241 description: IP address of the server in the storage network
242 value: {get_attr: [StoragePort, ip_address]}
243 storage_mgmt_ip_address:
244 description: IP address of the server in the storage_mgmt network
245 value: {get_attr: [StorageMgmtPort, ip_address]}
247 description: identifier which changes if the node configuration may need re-applying
251 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
252 - {get_attr: [NodeTLSCAData, deploy_stdout]}
253 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
254 - {get_param: UpdateIdentifier}