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 EC2 KeyPair 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.
131 type: OS::Nova::Server
135 flavor: {get_param: Flavor}
136 key_name: {get_param: KeyName}
139 user_data_format: SOFTWARE_CONFIG
140 user_data: {get_resource: UserData}
141 name: {get_param: Hostname}
142 metadata: {get_param: ServerMetadata}
144 # Combine the NodeAdminUserData and NodeUserData mime archives
146 type: OS::Heat::MultipartMime
149 - config: {get_resource: NodeAdminUserData}
151 - config: {get_resource: NodeUserData}
154 # Creates the "heat-admin" user if configured via the environment
155 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
157 type: OS::TripleO::NodeAdminUserData
159 # For optional operator additional userdata
160 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
162 type: OS::TripleO::NodeUserData
165 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
167 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
170 type: OS::TripleO::BlockStorage::Ports::StoragePort
172 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
175 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
177 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
180 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
182 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
183 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
184 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
185 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
188 type: OS::TripleO::Network::Ports::NetIpMap
190 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
191 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
192 StorageIp: {get_attr: [StoragePort, ip_address]}
193 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
196 type: OS::TripleO::SoftwareDeployment
198 name: NetworkDeployment
199 config: {get_resource: NetworkConfig}
200 server: {get_resource: BlockStorage}
201 actions: {get_param: NetworkDeploymentActions}
203 BlockStorageDeployment:
204 type: OS::Heat::StructuredDeployment
205 depends_on: NetworkDeployment
207 name: BlockStorageDeployment
208 server: {get_resource: BlockStorage}
209 config: {get_resource: BlockStorageConfig}
211 debug: {get_param: Debug}
212 cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
213 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
214 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
215 cinder_lvm_loop_device_size:
219 size: {get_param: CinderLVMLoopDeviceSize}
220 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
221 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
222 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
223 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
224 rabbit_username: {get_param: RabbitUserName}
225 rabbit_password: {get_param: RabbitPassword}
226 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
227 rabbit_client_port: {get_param: RabbitClientPort}
228 ntp_servers: {get_param: NtpServer}
229 enable_package_install: {get_param: EnablePackageInstall}
230 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
232 # Map heat metadata into hiera datafiles
234 type: OS::Heat::StructuredConfig
236 group: os-apply-config
241 - heat_config_%{::deploy_config_name}
245 - all_nodes # provided by allNodesConfig
250 raw_data: {get_file: hieradata/common.yaml}
252 mapped_data: {get_param: BlockStorageExtraConfig}
254 mapped_data: {get_param: ExtraConfig}
256 raw_data: {get_file: hieradata/volume.yaml}
259 cinder::debug: {get_input: debug}
260 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
261 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
262 cinder::database_connection: {get_input: cinder_dsn}
263 cinder::rabbit_userid: {get_input: rabbit_username}
264 cinder::rabbit_password: {get_input: rabbit_password}
265 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
266 cinder::rabbit_port: {get_input: rabbit_client_port}
267 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
268 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
269 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
270 ntp::servers: {get_input: ntp_servers}
271 tripleo::packages::enable_install: {get_input: enable_package_install}
272 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
273 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
274 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
276 # Resource for site-specific injection of root certificate
278 depends_on: BlockStorageDeployment
279 type: OS::TripleO::NodeTLSCAData
281 server: {get_resource: BlockStorage}
283 # Hook for site-specific additional pre-deployment config,
284 # applying to all nodes, e.g node registration/unregistration
286 depends_on: NodeTLSCAData
287 type: OS::TripleO::NodeExtraConfig
289 server: {get_resource: BlockStorage}
292 type: OS::TripleO::Tasks::PackageUpdate
295 type: OS::Heat::SoftwareDeployment
297 name: UpdateDeployment
298 config: {get_resource: UpdateConfig}
299 server: {get_resource: BlockStorage}
302 get_param: UpdateIdentifier
308 template: "IP HOST.DOMAIN HOST"
310 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
311 DOMAIN: {get_param: CloudDomain}
312 HOST: {get_attr: [BlockStorage, name]}
313 nova_server_resource:
314 description: Heat resource handle for the block storage server
316 {get_resource: BlockStorage}
317 internal_api_ip_address:
318 description: IP address of the server in the internal_api network
319 value: {get_attr: [InternalApiPort, ip_address]}
321 description: IP address of the server in the storage network
322 value: {get_attr: [StoragePort, ip_address]}
323 storage_mgmt_ip_address:
324 description: IP address of the server in the storage_mgmt network
325 value: {get_attr: [StorageMgmtPort, ip_address]}
327 description: identifier which changes if the node configuration may need re-applying
331 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
332 - {get_attr: [NodeTLSCAData, deploy_stdout]}
333 - {get_param: UpdateIdentifier}