1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-cinder-volume
7 CinderEnableIscsiBackend:
9 description: Whether to enable or not the Iscsi backend for Cinder
13 description: The iSCSI helper to use with cinder.
15 CinderLVMLoopDeviceSize:
17 description: The size of the loopback file used by the cinder LVM driver.
21 description: The password for the cinder service and db account, used by cinder-api.
26 description: Set to True to enable debugging on all services.
28 VirtualIP: # deprecated. Use per service VIPs instead.
34 Additional hiera configuration to inject into the cluster. Note
35 that BlockStorageExtraConfig takes precedence over ExtraConfig.
37 BlockStorageExtraConfig:
40 Role specific additional hiera configuration to inject into the cluster.
43 description: Flavor for block storage nodes to request when deploying.
46 - custom_constraint: nova.flavor
49 description: Name of an existing Nova key pair to enable SSH access to the instances
61 Rabbit client subscriber parameter to specify
62 an SSL connection to the RabbitMQ host.
66 description: Set rabbit subscriber port, change this if using SSL
68 SnmpdReadonlyUserName:
70 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
72 SnmpdReadonlyUserPassword:
74 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
79 description: Comma-separated list of ntp servers
80 type: comma_delimited_list
83 description: Set to true to enable package installation via Puppet
89 Setting to a previously unused value during stack-update will trigger
90 package update on all nodes
93 default: '' # Defaults to Heat created hostname
96 description: Mapping of service_name -> network name. Typically set
97 via parameter_defaults in the resource registry.
101 description: Mapping of service endpoint -> protocol. Typically set
102 via parameter_defaults in the resource registry.
110 NetworkDeploymentActions:
111 type: comma_delimited_list
113 Heat action when to apply network configuration changes
119 The DNS domain used for the hosts. This should match the dhcp_domain
120 configured in the Undercloud neutron. Defaults to localdomain.
124 Extra properties or metadata passed to Nova for the created nodes in
125 the overcloud. It's accessible via the Nova metadata API.
129 description: Optional scheduler hints to pass to nova
135 type: OS::Nova::Server
139 flavor: {get_param: Flavor}
140 key_name: {get_param: KeyName}
143 user_data_format: SOFTWARE_CONFIG
144 user_data: {get_resource: UserData}
145 name: {get_param: Hostname}
146 metadata: {get_param: ServerMetadata}
147 scheduler_hints: {get_param: SchedulerHints}
149 # Combine the NodeAdminUserData and NodeUserData mime archives
151 type: OS::Heat::MultipartMime
154 - config: {get_resource: NodeAdminUserData}
156 - config: {get_resource: NodeUserData}
159 # Creates the "heat-admin" user if configured via the environment
160 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
162 type: OS::TripleO::NodeAdminUserData
164 # For optional operator additional userdata
165 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
167 type: OS::TripleO::NodeUserData
170 type: OS::TripleO::BlockStorage::Ports::ExternalPort
172 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
175 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
177 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
180 type: OS::TripleO::BlockStorage::Ports::StoragePort
182 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
185 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
187 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
190 type: OS::TripleO::BlockStorage::Ports::TenantPort
192 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 type: OS::TripleO::BlockStorage::Ports::ManagementPort
197 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
200 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
202 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
203 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
204 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
205 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
206 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
207 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
208 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
211 type: OS::TripleO::Network::Ports::NetIpMap
213 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
214 ExternalIp: {get_attr: [ExternalPort, ip_address]}
215 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
216 StorageIp: {get_attr: [StoragePort, ip_address]}
217 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
218 TenantIp: {get_attr: [TenantPort, ip_address]}
219 ManagementIp: {get_attr: [ManagementPort, ip_address]}
222 type: OS::TripleO::SoftwareDeployment
224 config: {get_resource: NetworkConfig}
225 server: {get_resource: BlockStorage}
226 actions: {get_param: NetworkDeploymentActions}
228 BlockStorageDeployment:
229 type: OS::Heat::StructuredDeployment
230 depends_on: NetworkDeployment
232 server: {get_resource: BlockStorage}
233 config: {get_resource: BlockStorageConfig}
235 debug: {get_param: Debug}
236 cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
237 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
238 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
239 cinder_lvm_loop_device_size:
243 size: {get_param: CinderLVMLoopDeviceSize}
244 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
245 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
246 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
247 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
248 rabbit_username: {get_param: RabbitUserName}
249 rabbit_password: {get_param: RabbitPassword}
250 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
251 rabbit_client_port: {get_param: RabbitClientPort}
252 ntp_servers: {get_param: NtpServer}
253 enable_package_install: {get_param: EnablePackageInstall}
254 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
256 # Map heat metadata into hiera datafiles
258 type: OS::Heat::StructuredConfig
260 group: os-apply-config
265 - heat_config_%{::deploy_config_name}
269 - all_nodes # provided by allNodesConfig
274 raw_data: {get_file: hieradata/common.yaml}
276 mapped_data: {get_param: BlockStorageExtraConfig}
278 mapped_data: {get_param: ExtraConfig}
280 raw_data: {get_file: hieradata/volume.yaml}
283 cinder::debug: {get_input: debug}
284 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
285 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
286 cinder::database_connection: {get_input: cinder_dsn}
287 cinder::rabbit_userid: {get_input: rabbit_username}
288 cinder::rabbit_password: {get_input: rabbit_password}
289 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
290 cinder::rabbit_port: {get_input: rabbit_client_port}
291 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
292 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
293 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
294 ntp::servers: {get_input: ntp_servers}
295 tripleo::packages::enable_install: {get_input: enable_package_install}
296 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
297 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
298 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
300 # Resource for site-specific injection of root certificate
302 depends_on: BlockStorageDeployment
303 type: OS::TripleO::NodeTLSCAData
305 server: {get_resource: BlockStorage}
307 # Hook for site-specific additional pre-deployment config,
308 # applying to all nodes, e.g node registration/unregistration
310 depends_on: NodeTLSCAData
311 type: OS::TripleO::NodeExtraConfig
313 server: {get_resource: BlockStorage}
316 type: OS::TripleO::Tasks::PackageUpdate
319 type: OS::Heat::SoftwareDeployment
321 config: {get_resource: UpdateConfig}
322 server: {get_resource: BlockStorage}
325 get_param: UpdateIdentifier
331 template: "IP HOST.DOMAIN HOST"
333 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
334 DOMAIN: {get_param: CloudDomain}
335 HOST: {get_attr: [BlockStorage, name]}
336 nova_server_resource:
337 description: Heat resource handle for the block storage server
339 {get_resource: BlockStorage}
341 description: IP address of the server in the external network
342 value: {get_attr: [ExternalPort, ip_address]}
343 internal_api_ip_address:
344 description: IP address of the server in the internal_api network
345 value: {get_attr: [InternalApiPort, ip_address]}
347 description: IP address of the server in the storage network
348 value: {get_attr: [StoragePort, ip_address]}
349 storage_mgmt_ip_address:
350 description: IP address of the server in the storage_mgmt network
351 value: {get_attr: [StorageMgmtPort, ip_address]}
353 description: IP address of the server in the tenant network
354 value: {get_attr: [TenantPort, ip_address]}
355 management_ip_address:
356 description: IP address of the server in the management network
357 value: {get_attr: [ManagementPort, ip_address]}
359 description: identifier which changes if the node configuration may need re-applying
363 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
364 - {get_attr: [NodeTLSCAData, deploy_stdout]}
365 - {get_param: UpdateIdentifier}