1 heat_template_version: 2016-10-14
4 OpenStack controller node configured by Puppet.
8 description: The password for the aodh services.
11 controllerExtraConfig:
14 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
16 ControllerExtraConfig:
19 Controller specific hiera configuration data to inject into the cluster.
24 A network mapped list of IPs to assign to Controllers in the following form:
26 "internal_api": ["a.b.c.d", "e.f.g.h"],
32 description: Enable IPv6 in Corosync
36 description: Set to True to enable debugging on all services.
40 description: Whether to enable fencing in Pacemaker or not.
44 description: Whether to deploy a LoadBalancer on the Controller
49 Additional hieradata to inject into the cluster, note that
50 ControllerExtraConfig takes precedence over ExtraConfig.
55 Pacemaker fencing configuration. The JSON should have
56 the following structure:
60 "agent": "AGENT_NAME",
61 "host_mac": "HOST_MAC_ADDRESS",
62 "params": {"PARAM_NAME": "PARAM_VALUE"}
71 "host_mac": "52:54:00:aa:bb:cc",
73 "multicast_address": "225.0.0.12",
74 "port": "baremetal_0",
76 "manage_key_file": true,
77 "key_file": "/etc/fence_xvm.key",
78 "key_file_password": "abcdef"
84 OvercloudControlFlavor:
85 description: Flavor for control nodes to request when deploying.
89 - custom_constraint: nova.flavor
90 HeatAuthEncryptionKey:
91 description: Auth encryption key for heat-engine
95 description: Secret key for Django
100 default: overcloud-full
102 - custom_constraint: glance.image
104 default: 'REBUILD_PRESERVE_EPHEMERAL'
105 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
107 InstanceNameTemplate:
108 default: 'instance-%08x'
109 description: Template string to be used to generate instance names
113 description: Name of an existing Nova key pair to enable SSH access to the instances
116 - custom_constraint: nova.keypair
119 description: Whether to manage IPtables rules.
123 description: Enable IPv6 features in Memcached.
127 description: Whether IPtables rules should be purged before setting up the new ones.
129 NeutronMetadataProxySharedSecret:
130 description: Shared secret to prevent spoofing
134 description: The password for the neutron service and db account, used by neutron agents.
137 NeutronPublicInterface:
139 description: What interface to bridge onto br-ex for network nodes.
144 Whether to create cron job for purging soft deleted rows in Nova database.
148 description: Enable IPv6 features in Nova
151 description: The password for the nova service and db account, used by nova-api.
156 description: The password for the 'pcsd' user.
159 description: The password for Redis
164 default: '' # Has to be here because of the ignored empty value bug
167 default: '' # Has to be here because of the ignored empty value bug
168 description: An IP address which is wrapped in brackets in case of IPv6
170 description: A random string to be used as a salt when hashing to determine mappings
176 description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
178 UpgradeLevelNovaCompute:
180 description: Nova Compute upgrade level
184 description: Mapping of service_name -> network name. Typically set
185 via parameter_defaults in the resource registry.
189 description: Mapping of service endpoint -> protocol. Typically set
190 via parameter_defaults in the resource registry.
196 Setting to a previously unused value during stack-update will trigger
197 package update on all nodes
200 default: '' # Defaults to Heat created hostname
204 description: Optional mapping to override hostnames
205 NetworkDeploymentActions:
206 type: comma_delimited_list
208 Heat action when to apply network configuration changes
213 SoftwareConfigTransport:
214 default: POLL_SERVER_CFN
216 How the server should receive the metadata required for software configuration.
219 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
223 The DNS domain used for the hosts. This should match the dhcp_domain
224 configured in the Undercloud neutron. Defaults to localdomain.
228 Extra properties or metadata passed to Nova for the created nodes in
229 the overcloud. It's accessible via the Nova metadata API.
231 ControllerSchedulerHints:
233 description: Optional scheduler hints to pass to nova
235 ServiceConfigSettings:
239 type: comma_delimited_list
243 description: Command which will be run whenever configuration data changes
244 default: os-refresh-config --timeout 14400
248 description: Do not use deprecated params, they will be removed.
250 - controllerExtraConfig
255 type: OS::TripleO::Server
258 command: {get_param: ConfigCommand}
260 image: {get_param: controllerImage}
261 image_update_policy: {get_param: ImageUpdatePolicy}
262 flavor: {get_param: OvercloudControlFlavor}
263 key_name: {get_param: KeyName}
266 user_data_format: SOFTWARE_CONFIG
267 user_data: {get_resource: UserData}
270 template: {get_param: Hostname}
271 params: {get_param: HostnameMap}
272 software_config_transport: {get_param: SoftwareConfigTransport}
273 metadata: {get_param: ServerMetadata}
274 scheduler_hints: {get_param: ControllerSchedulerHints}
276 # Combine the NodeAdminUserData and NodeUserData mime archives
278 type: OS::Heat::MultipartMime
281 - config: {get_resource: NodeAdminUserData}
283 - config: {get_resource: NodeUserData}
286 # Creates the "heat-admin" user if configured via the environment
287 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
289 type: OS::TripleO::NodeAdminUserData
291 # For optional operator additional userdata
292 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
294 type: OS::TripleO::NodeUserData
297 type: OS::TripleO::Controller::Ports::ExternalPort
299 IPPool: {get_param: ControllerIPs}
300 NodeIndex: {get_param: NodeIndex}
301 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
304 type: OS::TripleO::Controller::Ports::InternalApiPort
306 IPPool: {get_param: ControllerIPs}
307 NodeIndex: {get_param: NodeIndex}
308 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
311 type: OS::TripleO::Controller::Ports::StoragePort
313 IPPool: {get_param: ControllerIPs}
314 NodeIndex: {get_param: NodeIndex}
315 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
318 type: OS::TripleO::Controller::Ports::StorageMgmtPort
320 IPPool: {get_param: ControllerIPs}
321 NodeIndex: {get_param: NodeIndex}
322 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
325 type: OS::TripleO::Controller::Ports::TenantPort
327 IPPool: {get_param: ControllerIPs}
328 NodeIndex: {get_param: NodeIndex}
329 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
332 type: OS::TripleO::Controller::Ports::ManagementPort
334 IPPool: {get_param: ControllerIPs}
335 NodeIndex: {get_param: NodeIndex}
336 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
339 type: OS::TripleO::Network::Ports::NetIpMap
341 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
342 ExternalIp: {get_attr: [ExternalPort, ip_address]}
343 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
344 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
345 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
346 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
347 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
348 StorageIp: {get_attr: [StoragePort, ip_address]}
349 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
350 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
351 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
352 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
353 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
354 TenantIp: {get_attr: [TenantPort, ip_address]}
355 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
356 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
357 ManagementIp: {get_attr: [ManagementPort, ip_address]}
358 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
359 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
362 type: OS::TripleO::Controller::Net::SoftwareConfig
364 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
365 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
366 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
367 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
368 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
369 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
370 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
373 type: OS::TripleO::SoftwareDeployment
375 name: NetworkDeployment
376 config: {get_resource: NetworkConfig}
377 server: {get_resource: Controller}
378 actions: {get_param: NetworkDeploymentActions}
381 interface_name: {get_param: NeutronPublicInterface}
383 # Resource for site-specific injection of root certificate
385 depends_on: NetworkDeployment
386 type: OS::TripleO::NodeTLSCAData
388 server: {get_resource: Controller}
390 # Resource for site-specific passing of private keys/certificates
392 depends_on: NodeTLSCAData
393 type: OS::TripleO::NodeTLSData
395 server: {get_resource: Controller}
396 NodeIndex: {get_param: NodeIndex}
399 ControllerDeployment:
400 type: OS::TripleO::SoftwareDeployment
401 depends_on: NetworkDeployment
403 name: ControllerDeployment
404 config: {get_resource: ControllerConfig}
405 server: {get_resource: Controller}
407 bootstack_nodeid: {get_attr: [Controller, name]}
408 heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
409 horizon_secret: {get_param: HorizonSecret}
410 debug: {get_param: Debug}
411 keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
412 keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
413 keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
414 enable_fencing: {get_param: EnableFencing}
415 enable_load_balancer: {get_param: EnableLoadBalancer}
416 manage_firewall: {get_param: ManageFirewall}
417 purge_firewall_rules: {get_param: PurgeFirewallRules}
418 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
419 aodh_internal_url: { get_param: [ EndpointMap, AodhInternal, uri ] }
420 aodh_public_url: { get_param: [ EndpointMap, AodhPublic, uri ] }
421 aodh_admin_url: { get_param: [ EndpointMap, AodhAdmin, uri ] }
422 ceilometer_coordination_url:
426 - {get_param: RedisPassword}
428 - {get_param: RedisVirtualIPUri}
430 nova_enable_db_purge: {get_param: NovaEnableDBPurge}
431 nova_ipv6: {get_param: NovaIPv6}
432 corosync_ipv6: {get_param: CorosyncIPv6}
433 memcached_ipv6: {get_param: MemcachedIPv6}
434 nova_password: {get_param: NovaPassword}
435 upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
436 instance_name_template: {get_param: InstanceNameTemplate}
437 fencing_config: {get_param: FencingConfig}
438 pcsd_password: {get_param: PcsdPassword}
439 swift_hash_suffix: {get_param: SwiftHashSuffix}
440 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
441 swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
442 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
443 glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
444 glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
445 glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
446 heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
447 keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
448 keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
449 manila_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
450 mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongodbNetwork]}]}
451 neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
452 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
453 ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
454 aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
455 gnocchi_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
456 nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
457 nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
458 horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
461 template: "['SUBNET']"
468 template: "NETWORK_subnet"
470 NETWORK: {get_param: [ServiceNetMap, HorizonNetwork]}
471 redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
472 redis_vip: {get_param: RedisVirtualIP}
473 sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
474 memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
475 ironic_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
477 # Map heat metadata into hiera datafiles
479 type: OS::Heat::StructuredConfig
481 group: os-apply-config
486 - heat_config_%{::deploy_config_name}
487 - controller_extraconfig
492 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
493 - bootstrap_node # provided by BootstrapNodeConfig
494 - all_nodes # provided by allNodesConfig
495 - vip_data # provided by vip-config
497 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
498 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
499 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
500 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
501 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
502 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
503 - midonet_data #Optionally provided by AllNodesExtraConfig
504 merge_behavior: deeper
508 service_names: {get_param: ServiceNames}
512 - {get_param: ServiceConfigSettings}
513 - values: {get_attr: [NetIpMap, net_ip_map]}
514 controller_extraconfig:
517 - {get_param: controllerExtraConfig}
518 - {get_param: ControllerExtraConfig}
520 mapped_data: {get_param: ExtraConfig}
522 mapped_data: # data supplied directly to this deployment configuration, etc
523 bootstack_nodeid: {get_input: bootstack_nodeid}
526 enable_fencing: {get_input: enable_fencing}
527 enable_load_balancer: {get_input: enable_load_balancer}
528 hacluster_pwd: {get_input: pcsd_password}
529 corosync_ipv6: {get_input: corosync_ipv6}
530 tripleo::fencing::config: {get_input: fencing_config}
533 # FIXME: need to move proxy_local_net_ip into swift-proxy.yaml
534 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
535 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
536 swift::swift_hash_path_suffix: {get_input: swift_hash_suffix}
539 glance::api::bind_host: {get_input: glance_api_network}
540 glance::registry::bind_host: {get_input: glance_registry_network}
543 heat::api::bind_host: {get_input: heat_api_network}
544 heat::api_cloudwatch::bind_host: {get_input: heat_api_network}
545 heat::api_cfn::bind_host: {get_input: heat_api_network}
546 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
549 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
550 keystone::public_bind_host: {get_input: keystone_public_api_network}
551 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
552 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
555 manila::api::bind_host: {get_input: manila_api_network}
558 mongodb::server::bind_ip: {get_input: mongo_db_network}
561 neutron::bind_host: {get_input: neutron_api_network}
562 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
563 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
566 aodh::api::host: {get_input: aodh_api_network}
567 aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
570 ceilometer::api::host: {get_input: ceilometer_api_network}
571 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
572 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
575 gnocchi::wsgi::apache::bind_host: {get_input: gnocchi_api_network}
576 gnocchi::api::host: {get_input: gnocchi_api_network}
577 gnocchi::api::keystone_auth_uri: {get_input: keystone_auth_uri}
578 gnocchi::api::keystone_identity_uri: {get_input: keystone_identity_uri}
579 gnocchi::storage::swift::swift_authurl: {get_input: keystone_auth_uri}
582 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
583 nova::use_ipv6: {get_input: nova_ipv6}
584 nova::api::api_bind_address: {get_input: nova_api_network}
585 nova::api::metadata_listen: {get_input: nova_metadata_network}
586 nova::glance_api_servers: {get_input: glance_api_servers}
587 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
588 nova::api::instance_name_template: {get_input: instance_name_template}
589 nova::vncproxy::host: {get_input: nova_api_network}
590 nova_enable_db_purge: {get_input: nova_enable_db_purge}
593 apache::mod::remoteip::proxy_ips: {get_input: horizon_subnet}
594 apache::ip: {get_input: horizon_network}
595 horizon::django_debug: {get_input: debug}
596 horizon::secret_key: {get_input: horizon_secret}
597 horizon::bind_address: {get_input: horizon_network}
598 horizon::keystone_url: {get_input: keystone_auth_uri}
601 sahara::host: {get_input: sahara_api_network}
604 redis::bind: {get_input: redis_network}
605 redis_vip: {get_input: redis_vip}
607 tripleo::firewall::manage_firewall: {get_input: manage_firewall}
608 tripleo::firewall::purge_firewall_rules: {get_input: purge_firewall_rules}
610 memcached_ipv6: {get_input: memcached_ipv6}
611 memcached::listen_ip: {get_input: memcached_network}
612 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
613 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
615 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
616 ControllerExtraConfigPre:
617 depends_on: ControllerDeployment
618 type: OS::TripleO::ControllerExtraConfigPre
620 server: {get_resource: Controller}
622 # Hook for site-specific additional pre-deployment config,
623 # applying to all nodes, e.g node registration/unregistration
625 depends_on: [ControllerExtraConfigPre, NodeTLSData]
626 type: OS::TripleO::NodeExtraConfig
628 server: {get_resource: Controller}
631 type: OS::TripleO::Tasks::PackageUpdate
634 type: OS::Heat::SoftwareDeployment
636 name: UpdateDeployment
637 config: {get_resource: UpdateConfig}
638 server: {get_resource: Controller}
641 get_param: UpdateIdentifier
645 description: IP address of the server in the ctlplane network
646 value: {get_attr: [Controller, networks, ctlplane, 0]}
648 description: IP address of the server in the external network
649 value: {get_attr: [ExternalPort, ip_address]}
650 internal_api_ip_address:
651 description: IP address of the server in the internal_api network
652 value: {get_attr: [InternalApiPort, ip_address]}
654 description: IP address of the server in the storage network
655 value: {get_attr: [StoragePort, ip_address]}
656 storage_mgmt_ip_address:
657 description: IP address of the server in the storage_mgmt network
658 value: {get_attr: [StorageMgmtPort, ip_address]}
660 description: IP address of the server in the tenant network
661 value: {get_attr: [TenantPort, ip_address]}
662 management_ip_address:
663 description: IP address of the server in the management network
664 value: {get_attr: [ManagementPort, ip_address]}
666 description: Hostname of the server
667 value: {get_attr: [Controller, name]}
670 Server's IP address and hostname in the /etc/hosts format
674 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
675 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
676 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
677 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
678 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
679 TENANTIP TENANTHOST.DOMAIN TENANTHOST
680 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
682 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
683 DOMAIN: {get_param: CloudDomain}
684 PRIMARYHOST: {get_attr: [Controller, name]}
685 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
689 - - {get_attr: [Controller, name]}
691 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
695 - - {get_attr: [Controller, name]}
697 STORAGEIP: {get_attr: [StoragePort, ip_address]}
701 - - {get_attr: [Controller, name]}
703 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
707 - - {get_attr: [Controller, name]}
709 TENANTIP: {get_attr: [TenantPort, ip_address]}
713 - - {get_attr: [Controller, name]}
715 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
719 - - {get_attr: [Controller, name]}
721 nova_server_resource:
722 description: Heat resource handle for the Nova compute server
724 {get_resource: Controller}
726 description: Swift device formatted for swift-ring-builder
732 - ['r1z1-IP:%PORT%/d1']
734 template: 'r1z1-IP:%PORT%/DEVICE'
736 DEVICE: {get_param: SwiftRawDisks}
743 template: "NETWORK_uri"
745 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
746 swift_proxy_memcache:
747 description: Swift proxy-memcache value
757 template: "NETWORK_uri"
759 NETWORK: {get_param: [ServiceNetMap, MemcachedNetwork]}
761 description: MD5 checksum of the TLS Key Modulus
762 value: {get_attr: [NodeTLSData, key_modulus_md5]}
763 tls_cert_modulus_md5:
764 description: MD5 checksum of the TLS Certificate Modulus
765 value: {get_attr: [NodeTLSData, cert_modulus_md5]}