1 heat_template_version: 2015-04-30
4 Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
5 server,Dedicated RabbitMQ Server,Group of Nova Computes
8 # TODO(shadower): we should probably use the parameter groups to put
12 # Common parameters (not specific to a role)
15 description: The password for the keystone admin account, used for monitoring, querying neutron etc.
20 description: The ceilometer backend type.
22 CeilometerMeteringSecret:
24 description: Secret shared by the ceilometer services.
29 description: The password for the ceilometer service account.
32 # This has to be an UUID so for now we generate it outside the template
36 description: The Ceph cluster FSID. Must be a UUID.
39 description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
43 description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
45 CinderEnableIscsiBackend:
47 description: Whether to enable or not the Iscsi backend for Cinder
51 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
55 description: Should be used for arbitrary ips.
59 description: Set to True to enable debugging on all services.
63 description: Glance port.
67 description: Protocol to use when connecting to glance, set to https for SSL.
70 default: 'REBUILD_PRESERVE_EPHEMERAL'
71 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
75 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
78 - custom_constraint: nova.keypair
79 NeutronExternalNetworkBridge:
80 description: Name of bridge used for external network traffic.
83 NeutronBridgeMappings:
85 The OVS logical->physical bridge mappings to use. See the Neutron
86 documentation for details. Defaults to mapping br-ex - the external
87 bridge on hosts - to a physical name 'datacentre' which can be used
88 to create provider networks (and we use this for the default floating
89 network) - if changing this either use different post-install network
90 scripts or be sure to keep 'datacentre' as a mapping network name.
92 default: "datacentre:br-ex"
93 NeutronControlPlaneID:
96 description: Neutron ID for ctlplane network.
97 NeutronEnableTunnelling:
102 default: 'datacentre'
104 If set, flat networks to configure in neutron plugins. Defaults to
105 'datacentre' to permit external network creation.
108 description: The tenant network type for Neutron, either gre or vxlan.
112 description: The password for the neutron service account, used by neutron agents.
115 NeutronPublicInterface:
117 description: What interface to bridge onto br-ex for network nodes.
119 NeutronPublicInterfaceTag:
122 VLAN tag for creating a public VLAN. The tag will be used to
123 create an access port on the exterior bridge for each control plane node,
124 and that port will be given the IP address returned by neutron from the
125 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
126 overcloud.yaml to include the deployment of VLAN ports to the control
129 NeutronComputeAgentMode:
131 description: Agent mode for the neutron-l3-agent on the compute hosts
135 description: Agent mode for the neutron-l3-agent on the controller hosts
139 description: Whether to configure Neutron Distributed Virtual Routers
141 NeutronMetadataProxySharedSecret:
143 description: Shared secret to prevent spoofing
148 The tunnel types for the Neutron tenant network. To specify multiple
149 values, use a comma separated string, like so: 'gre,vxlan'
151 NeutronMechanismDrivers:
152 default: 'openvswitch'
154 The mechanism drivers for the Neutron tenant network. To specify multiple
155 values, use a comma separated string, like so: 'openvswitch,l2_population'
157 NeutronAllowL3AgentFailover:
159 description: Allow automatic l3-agent failover
163 description: Whether to enable l3-agent HA
165 NeutronDhcpAgentsPerNetwork:
168 description: The number of neutron dhcp agents to schedule per network
171 description: The password for the nova service account, used by nova-api.
177 PublicVirtualFixedIPs:
180 Control the IP allocation for the PublicVirtualInterface port. E.g.
181 [{'ip_address':'1.2.3.4'}]
183 PublicVirtualNetwork:
187 Neutron network to allocate public virtual IP port on.
191 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
192 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
195 description: The username for RabbitMQ
199 description: The password for RabbitMQ
205 Rabbit client subscriber parameter to specify
206 an SSL connection to the RabbitMQ host.
210 description: Set rabbit subscriber port, change this if using SSL
212 SnmpdReadonlyUserName:
213 default: ro_snmp_user
214 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
216 SnmpdReadonlyUserPassword:
218 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
222 # Controller-specific params
225 description: The keystone auth secret.
228 CinderEnableRbdBackend:
230 description: Whether to enable or not the Rbd backend for Cinder
232 CinderLVMLoopDeviceSize:
234 description: The size of the loopback file used by the cinder LVM driver.
238 description: The password for the cinder service account, used by cinder-api.
243 description: The iSCSI helper to use with cinder.
248 controllerExtraConfig:
251 Controller specific configuration to inject into the cluster. Same
252 structure as ExtraConfig.
256 default: overcloud-control
258 - custom_constraint: glance.image
259 OvercloudControlFlavor:
260 description: Flavor for control nodes to request when deploying.
263 - custom_constraint: nova.flavor
264 ControlVirtualInterface:
266 description: Interface where virtual ip will be assigned.
270 description: Whether to enable fencing in Pacemaker or not.
274 description: Whether to use Galera instead of regular MariaDB.
276 ControllerEnableCephStorage:
278 description: Whether to deploy Ceph Storage (OSD) on the Controller
280 ControllerEnableSwiftStorage:
282 description: Whether to enable Swift Storage on the Controller
287 Additional configuration to inject into the cluster. The JSON should have
288 the following structure:
291 [{"section": "SECTIONNAME",
293 [{"option": "OPTIONNAME",
304 [{"section": "default",
306 [{"option": "force_config_drive",
313 [{"option": "driver",
314 "value": "nova.cells.rpc_driver.CellsRPCDriver"
325 Pacemaker fencing configuration. The JSON should have
326 the following structure:
330 "agent": "AGENT_NAME",
331 "host_mac": "HOST_MAC_ADDRESS",
332 "params": {"PARAM_NAME": "PARAM_VALUE"}
340 "agent": "fence_xvm",
341 "host_mac": "52:54:00:aa:bb:cc",
343 "multicast_address": "225.0.0.12",
344 "port": "baremetal_0",
346 "manage_key_file": true,
347 "key_file": "/etc/fence_xvm.key",
348 "key_file_password": "abcdef"
355 description: The filepath of the file to use for logging messages from Glance.
358 GlanceNotifierStrategy:
359 description: Strategy to use for Glance notification queue
364 description: The password for the glance service account, used by the glance services.
369 description: The short name of the Glance backend to use. Should be one
370 of swift, rbd or file
373 - allowed_values: ['swift', 'file', 'rbd']
376 description: The password for the Heat service account, used by the Heat services.
379 HeatStackDomainAdminPassword:
380 description: Password for heat_domain_admin user.
384 KeystoneCACertificate:
386 description: Keystone self-signed certificate authority certificate.
388 KeystoneSigningCertificate:
390 description: Keystone certificate for verifying token validity.
394 description: Keystone key for signing tokens.
397 KeystoneSSLCertificate:
399 description: Keystone certificate for verifying token validity.
401 KeystoneSSLCertificateKey:
403 description: Keystone key for signing tokens.
406 MysqlInnodbBufferPoolSize:
408 Specifies the size of the buffer pool in megabytes. Setting to
409 zero should be interpreted as "no value" and will defer to the
414 description: Configures MySQL max_connections config setting
417 NeutronDnsmasqOptions:
418 default: 'dhcp-option-force=26,1400'
419 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
421 NeutronPublicInterfaceDefaultRoute:
423 description: A custom default route for the NeutronPublicInterface.
425 NeutronPublicInterfaceIP:
427 description: A custom IP address to put onto the NeutronPublicInterface.
429 NeutronPublicInterfaceRawDevice:
431 description: If set, the public interface is a vlan with this device as the raw device.
433 PublicVirtualInterface:
436 Specifies the interface where the public-facing virtual ip will be assigned.
437 This should be int_public when a VLAN is being used.
441 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
446 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
451 description: If set, the contents of an SSL certificate authority file.
455 description: A random string to be used as a salt when hashing to determine mappings in the ring.
460 description: The password for the swift service account, used by the swift proxy services.
465 description: Value of mount_check in Swift account/container/object -server.conf
470 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
473 description: Partition Power to use when building Swift rings
478 description: How many replicas to use in the swift rings.
480 # Compute-specific params
481 CeilometerComputeAgent:
482 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
486 - allowed_values: ['', Present]
490 HypervisorNeutronPhysicalBridge:
493 An OVS bridge to create on each hypervisor. This defaults to br-ex the
494 same as the control plane nodes, as we have a uniform configuration of
495 the openvswitch agent. Typically should not need to be changed.
497 HypervisorNeutronPublicInterface:
499 description: What interface to add to the HypervisorNeutronPhysicalBridge.
501 NeutronNetworkVLANRanges:
502 default: 'datacentre'
504 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
505 Neutron documentation for permitted values. Defaults to permitting any
506 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
507 type: comma_delimited_list
510 default: libvirt.LibvirtDriver
511 NovaComputeExtraConfig:
514 NovaCompute specific configuration to inject into the cluster. Same
515 structure as ExtraConfig.
517 NovaComputeLibvirtType:
520 NovaEnableRbdBackend:
522 description: Whether to enable or not the Rbd backend for Nova
526 default: overcloud-compute
528 - custom_constraint: glance.image
529 OvercloudComputeFlavor:
530 description: Use this flavor
533 - custom_constraint: nova.flavor
536 NeutronTenantNetwork: tenant
537 CeilometerApiNetwork: internal_api
538 MongoDbNetwork: internal_api
539 CinderApiNetwork: internal_api
540 CinderIscsiNetwork: storage
541 GlanceApiNetwork: storage
542 GlanceRegistryNetwork: internal_api
543 KeystoneAdminApiNetwork: internal_api
544 KeystonePublicApiNetwork: internal_api
545 NeutronApiNetwork: internal_api
546 HeatApiNetwork: internal_api
547 NovaApiNetwork: internal_api
548 NovaMetadataNetwork: internal_api
549 NovaVncProxyNetwork: internal_api
550 SwiftMgmtNetwork: storage_mgmt
551 SwiftProxyNetwork: storage
552 HorizonNetwork: internal_api
553 MemcachedNetwork: internal_api
554 RabbitMqNetwork: internal_api
555 RedisNetwork: internal_api
556 MysqlNetwork: internal_api
557 CephClusterNetwork: storage_mgmt
558 CephPublicNetwork: storage
559 ControllerHostnameResolveNetwork: internal_api
560 ComputeHostnameResolveNetwork: internal_api
561 BlockStorageHostnameResolveNetwork: internal_api
562 ObjectStorageHostnameResolveNetwork: internal_api
563 CephStorageHostnameResolveNetwork: storage
564 description: Mapping of service_name -> network name. Typically set
565 via parameter_defaults in the resource registry.
568 # Block storage specific parameters
573 default: overcloud-cinder-volume
575 OvercloudBlockStorageFlavor:
576 description: Flavor for block storage nodes to request when deploying.
579 - custom_constraint: nova.flavor
581 # Object storage specific parameters
585 OvercloudSwiftStorageFlavor:
586 description: Flavor for Swift storage nodes to request when deploying.
589 - custom_constraint: nova.flavor
591 default: overcloud-swift-storage
594 # Ceph storage specific parameters
599 default: overcloud-ceph-storage
601 OvercloudCephStorageFlavor:
603 description: Flavor for Ceph storage nodes to request when deploying.
606 - custom_constraint: nova.flavor
608 # Hostname format for each role
609 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
610 # and %stackname% is replaced with OS::stack_name in the template below.
611 # If you want to use the heat generated names, pass '' (empty string).
612 ControllerHostnameFormat:
614 description: Format for Controller node hostnames
615 default: '%stackname%-controller-%index%'
616 ComputeHostnameFormat:
618 description: Format for Compute node hostnames
619 default: '%stackname%-novacompute-%index%'
620 BlockStorageHostnameFormat:
622 description: Format for BlockStorage node hostnames
623 default: '%stackname%-blockstorage-%index%'
624 ObjectStorageHostnameFormat:
626 description: Format for SwiftStorage node hostnames
627 default: '%stackname%-objectstorage-%index%'
628 CephStorageHostnameFormat:
630 description: Format for CephStorage node hostnames
631 default: '%stackname%-cephstorage-%index%'
633 # Identifiers to trigger tasks on nodes
638 Setting to a previously unused value during stack-update will trigger
639 package update on all nodes
641 # If you want to remove a specific node from a resource group, you can pass
642 # the node name or id as a <Group>RemovalPolicies parameter, for example:
643 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
644 ControllerRemovalPolicies:
648 List of resources to be removed from ControllerResourceGroup when
649 doing an update which requires removal of specific resources.
650 ComputeRemovalPolicies:
654 List of resources to be removed from ComputeResourceGroup when
655 doing an update which requires removal of specific resources.
656 BlockStorageRemovalPolicies:
660 List of resources to be removed from BlockStorageResourceGroup when
661 doing an update which requires removal of specific resources.
662 ObjectStorageRemovalPolicies:
666 List of resources to be removed from ObjectStorageResourceGroup when
667 doing an update which requires removal of specific resources.
668 CephStorageRemovalPolicies:
672 List of resources to be removed from CephStorageResourceGroup when
673 doing an update which requires removal of specific resources.
678 HeatAuthEncryptionKey:
679 type: OS::Heat::RandomString
682 type: OS::Heat::RandomString
687 type: OS::Heat::RandomString
692 type: OS::Heat::ResourceGroup
695 count: {get_param: ControllerCount}
696 removal_policies: {get_param: ControllerRemovalPolicies}
698 type: OS::TripleO::Controller
700 AdminPassword: {get_param: AdminPassword}
701 AdminToken: {get_param: AdminToken}
702 CeilometerBackend: {get_param: CeilometerBackend}
703 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
704 CeilometerPassword: {get_param: CeilometerPassword}
705 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
706 CinderPassword: {get_param: CinderPassword}
707 CinderISCSIHelper: {get_param: CinderISCSIHelper}
708 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
709 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
710 CloudName: {get_param: CloudName}
711 ControlVirtualInterface: {get_param: ControlVirtualInterface}
712 ControllerExtraConfig: {get_param: controllerExtraConfig}
713 Debug: {get_param: Debug}
714 EnableFencing: {get_param: EnableFencing}
715 EnableGalera: {get_param: EnableGalera}
716 EnableCephStorage: {get_param: ControllerEnableCephStorage}
717 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
718 ExtraConfig: {get_param: ExtraConfig}
719 FencingConfig: {get_param: FencingConfig}
720 Flavor: {get_param: OvercloudControlFlavor}
721 GlancePort: {get_param: GlancePort}
722 GlanceProtocol: {get_param: GlanceProtocol}
723 GlancePassword: {get_param: GlancePassword}
724 GlanceBackend: {get_param: GlanceBackend}
725 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
726 GlanceLogFile: {get_param: GlanceLogFile}
727 HeatPassword: {get_param: HeatPassword}
728 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
729 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
730 HorizonSecret: {get_resource: HorizonSecret}
731 Image: {get_param: controllerImage}
732 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
733 KeyName: {get_param: KeyName}
734 KeystoneCACertificate: {get_param: KeystoneCACertificate}
735 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
736 KeystoneSigningKey: {get_param: KeystoneSigningKey}
737 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
738 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
739 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
740 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
741 MysqlMaxConnections: {get_param: MysqlMaxConnections}
742 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
743 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
744 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
745 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
746 NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
747 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
748 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
749 NeutronPublicInterface: {get_param: NeutronPublicInterface}
750 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
751 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
752 NeutronPassword: {get_param: NeutronPassword}
753 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
754 NeutronDVR: {get_param: NeutronDVR}
755 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
756 NeutronAgentMode: {get_param: NeutronAgentMode}
757 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
758 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
759 NeutronL3HA: {get_param: NeutronL3HA}
760 NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
761 NeutronNetworkType: {get_param: NeutronNetworkType}
762 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
763 NovaPassword: {get_param: NovaPassword}
764 NtpServer: {get_param: NtpServer}
765 PcsdPassword: {get_resource: PcsdPassword}
766 PublicVirtualInterface: {get_param: PublicVirtualInterface}
767 RabbitPassword: {get_param: RabbitPassword}
768 RabbitUserName: {get_param: RabbitUserName}
769 RabbitCookie: {get_attr: [RabbitCookie, value]}
770 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
771 RabbitClientPort: {get_param: RabbitClientPort}
772 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
773 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
774 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
775 SSLCertificate: {get_param: SSLCertificate}
776 SSLKey: {get_param: SSLKey}
777 SSLCACertificate: {get_param: SSLCACertificate}
778 SwiftHashSuffix: {get_param: SwiftHashSuffix}
779 SwiftMountCheck: {get_param: SwiftMountCheck}
780 SwiftMinPartHours: {get_param: SwiftMinPartHours}
781 SwiftPartPower: {get_param: SwiftPartPower}
782 SwiftPassword: {get_param: SwiftPassword}
783 SwiftReplicas: { get_param: SwiftReplicas}
784 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
785 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
786 ServiceNetMap: {get_param: ServiceNetMap}
787 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
788 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
789 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
790 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
791 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
792 UpdateIdentifier: {get_param: UpdateIdentifier}
795 template: {get_param: ControllerHostnameFormat}
797 '%stackname%': {get_param: 'OS::stack_name'}
800 type: OS::Heat::ResourceGroup
803 count: {get_param: ComputeCount}
804 removal_policies: {get_param: ComputeRemovalPolicies}
806 type: OS::TripleO::Compute
808 AdminPassword: {get_param: AdminPassword}
809 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
810 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
811 CeilometerPassword: {get_param: CeilometerPassword}
812 Debug: {get_param: Debug}
813 ExtraConfig: {get_param: ExtraConfig}
814 Flavor: {get_param: OvercloudComputeFlavor}
815 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
816 GlancePort: {get_param: GlancePort}
817 GlanceProtocol: {get_param: GlanceProtocol}
818 Image: {get_param: NovaImage}
819 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
820 KeyName: {get_param: KeyName}
821 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
822 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
823 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
824 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
825 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
826 NeutronNetworkType: {get_param: NeutronNetworkType}
827 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
828 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
829 NeutronPassword: {get_param: NeutronPassword}
830 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
831 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
832 NeutronDVR: {get_param: NeutronDVR}
833 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
834 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
835 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
836 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
837 # L3 HA and Failover is not relevant for Computes, should be removed
838 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
839 NeutronL3HA: {get_param: NeutronL3HA}
840 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
841 NovaComputeDriver: {get_param: NovaComputeDriver}
842 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
843 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
844 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
845 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
846 NovaPassword: {get_param: NovaPassword}
847 NtpServer: {get_param: NtpServer}
848 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
849 RabbitPassword: {get_param: RabbitPassword}
850 RabbitUserName: {get_param: RabbitUserName}
851 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
852 RabbitClientPort: {get_param: RabbitClientPort}
853 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
854 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
855 ServiceNetMap: {get_param: ServiceNetMap}
856 UpdateIdentifier: {get_param: UpdateIdentifier}
859 template: {get_param: ComputeHostnameFormat}
861 '%stackname%': {get_param: 'OS::stack_name'}
864 type: OS::Heat::ResourceGroup
867 count: {get_param: BlockStorageCount}
868 removal_policies: {get_param: BlockStorageRemovalPolicies}
870 type: OS::TripleO::BlockStorage
872 Debug: {get_param: Debug}
873 Image: {get_param: BlockStorageImage}
874 CinderISCSIHelper: {get_param: CinderISCSIHelper}
875 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
876 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
877 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
878 CinderPassword: {get_param: CinderPassword}
879 KeyName: {get_param: KeyName}
880 Flavor: {get_param: OvercloudBlockStorageFlavor}
881 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
882 GlancePort: {get_param: GlancePort}
883 GlanceProtocol: {get_param: GlanceProtocol}
884 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
885 RabbitPassword: {get_param: RabbitPassword}
886 RabbitUserName: {get_param: RabbitUserName}
887 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
888 RabbitClientPort: {get_param: RabbitClientPort}
889 NtpServer: {get_param: NtpServer}
890 UpdateIdentifier: {get_param: UpdateIdentifier}
893 template: {get_param: BlockStorageHostnameFormat}
895 '%stackname%': {get_param: 'OS::stack_name'}
896 ServiceNetMap: {get_param: ServiceNetMap}
897 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
900 type: OS::Heat::ResourceGroup
903 count: {get_param: ObjectStorageCount}
904 removal_policies: {get_param: ObjectStorageRemovalPolicies}
906 type: OS::TripleO::ObjectStorage
908 KeyName: {get_param: KeyName}
909 Flavor: {get_param: OvercloudSwiftStorageFlavor}
910 HashSuffix: {get_param: SwiftHashSuffix}
911 MountCheck: {get_param: SwiftMountCheck}
912 MinPartHours: {get_param: SwiftMinPartHours}
913 PartPower: {get_param: SwiftPartPower}
914 Image: {get_param: SwiftStorageImage}
915 Replicas: { get_param: SwiftReplicas}
916 NtpServer: {get_param: NtpServer}
917 UpdateIdentifier: {get_param: UpdateIdentifier}
918 ServiceNetMap: {get_param: ServiceNetMap}
921 template: {get_param: ObjectStorageHostnameFormat}
923 '%stackname%': {get_param: 'OS::stack_name'}
926 type: OS::Heat::ResourceGroup
929 count: {get_param: CephStorageCount}
930 removal_policies: {get_param: CephStorageRemovalPolicies}
932 type: OS::TripleO::CephStorage
934 Image: {get_param: CephStorageImage}
935 KeyName: {get_param: KeyName}
936 Flavor: {get_param: OvercloudCephStorageFlavor}
937 NtpServer: {get_param: NtpServer}
938 ServiceNetMap: {get_param: ServiceNetMap}
939 UpdateIdentifier: {get_param: UpdateIdentifier}
942 template: {get_param: CephStorageHostnameFormat}
944 '%stackname%': {get_param: 'OS::stack_name'}
947 type: OS::TripleO::Network::Ports::NetIpListMap
949 ExternalIpList: {get_attr: [Controller, external_ip_address]}
950 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
951 StorageIpList: {get_attr: [Controller, storage_ip_address]}
952 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
953 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
956 type: OS::TripleO::AllNodes::SoftwareConfig
958 compute_hosts: {get_attr: [Compute, hosts_entry]}
959 controller_hosts: {get_attr: [Controller, hosts_entry]}
960 controller_ips: {get_attr: [Controller, ip_address]}
961 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
962 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
963 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
964 controller_names: {get_attr: [Controller, hostname]}
965 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
966 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
967 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
968 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
969 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
970 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
971 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
972 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
973 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
974 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
975 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
976 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
977 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
978 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
979 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
980 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
981 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
984 type: OS::Heat::RandomString
988 MysqlClusterUniquePart:
989 type: OS::Heat::RandomString
994 type: OS::Heat::RandomString
997 salt: {get_param: RabbitCookieSalt}
999 # creates the network architecture
1001 type: OS::TripleO::Network
1004 type: OS::Neutron::Port
1005 depends_on: Networks
1007 name: control_virtual_ip
1008 network_id: {get_param: NeutronControlPlaneID}
1009 fixed_ips: {get_param: ControlFixedIPs}
1010 replacement_policy: AUTO
1013 depends_on: Networks
1014 type: OS::TripleO::Controller::Ports::RedisVipPort
1016 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1017 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1018 PortName: redis_virtual_ip
1019 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1023 type: OS::Neutron::Port
1024 depends_on: Networks
1026 name: public_virtual_ip
1027 network: {get_param: PublicVirtualNetwork}
1028 fixed_ips: {get_param: PublicVirtualFixedIPs}
1029 replacement_policy: AUTO
1031 InternalApiVirtualIP:
1032 depends_on: Networks
1033 type: OS::TripleO::Controller::Ports::InternalApiPort
1035 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1036 PortName: internal_api_virtual_ip
1039 depends_on: Networks
1040 type: OS::TripleO::Controller::Ports::StoragePort
1042 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1043 PortName: storage_virtual_ip
1045 StorageMgmtVirtualIP:
1046 depends_on: Networks
1047 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1049 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1050 PortName: storage_management_virtual_ip
1053 type: OS::TripleO::Network::Ports::NetIpMap
1055 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1056 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1057 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1058 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1059 # No tenant VIP required
1062 type: OS::TripleO::VipConfig
1065 type: OS::Heat::StructuredDeployments
1067 config: {get_resource: VipConfig}
1068 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1070 # service VIP mappings
1071 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1072 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1073 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1074 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1075 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1076 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1077 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1078 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1079 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1080 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1081 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1082 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1083 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1084 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1085 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1086 # direct configuration of Virtual IPs for each network
1087 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1088 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1089 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1090 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1091 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1093 ControllerBootstrapNodeConfig:
1094 type: OS::TripleO::BootstrapNode::SoftwareConfig
1096 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1097 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1099 ControllerBootstrapNodeDeployment:
1100 type: OS::Heat::StructuredDeployments
1102 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1103 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1105 ControllerSwiftDeployment:
1106 type: OS::Heat::StructuredDeployments
1108 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1109 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1111 ObjectStorageSwiftDeployment:
1112 type: OS::Heat::StructuredDeployments
1114 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1115 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1117 SwiftDevicesAndProxyConfig:
1118 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1120 controller_swift_devices: {get_attr: [Controller, swift_device]}
1121 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1122 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1124 ComputeCephDeployment:
1125 type: OS::Heat::StructuredDeployments
1127 config: {get_attr: [CephClusterConfig, config_id]}
1128 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1130 ControllerCephDeployment:
1131 type: OS::Heat::StructuredDeployments
1133 config: {get_attr: [CephClusterConfig, config_id]}
1134 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1136 CephStorageCephDeployment:
1137 type: OS::Heat::StructuredDeployments
1139 config: {get_attr: [CephClusterConfig, config_id]}
1140 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1143 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1145 ceph_fsid: {get_param: CephClusterFSID}
1146 ceph_mon_key: {get_param: CephMonKey}
1147 ceph_admin_key: {get_param: CephAdminKey}
1148 ceph_mon_names: {get_attr: [Controller, hostname]}
1149 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1151 ControllerClusterConfig:
1152 type: OS::Heat::StructuredConfig
1154 group: os-apply-config
1157 nodes: {get_attr: [Controller, corosync_node]}
1161 nodes: {get_attr: [Controller, hostname]}
1163 nodes: {get_attr: [Controller, corosync_node]}
1165 nodes: {get_attr: [Controller, corosync_node]}
1167 ControllerClusterDeployment:
1168 type: OS::Heat::StructuredDeployments
1170 config: {get_resource: ControllerClusterConfig}
1171 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1173 ControllerAllNodesDeployment:
1174 type: OS::Heat::StructuredDeployments
1176 config: {get_attr: [allNodesConfig, config_id]}
1177 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1179 ComputeAllNodesDeployment:
1180 type: OS::Heat::StructuredDeployments
1182 config: {get_attr: [allNodesConfig, config_id]}
1183 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1185 BlockStorageAllNodesDeployment:
1186 type: OS::Heat::StructuredDeployments
1188 config: {get_attr: [allNodesConfig, config_id]}
1189 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1191 ObjectStorageAllNodesDeployment:
1192 type: OS::Heat::StructuredDeployments
1194 config: {get_attr: [allNodesConfig, config_id]}
1195 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1197 CephStorageAllNodesDeployment:
1198 type: OS::Heat::StructuredDeployments
1200 config: {get_attr: [allNodesConfig, config_id]}
1201 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1203 # Nested stack deployment runs after all other controller deployments
1204 ControllerNodesPostDeployment:
1205 type: OS::TripleO::ControllerPostDeployment
1206 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1208 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1209 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1211 ComputeNodesPostDeployment:
1212 type: OS::TripleO::ComputePostDeployment
1213 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1215 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1216 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1218 ObjectStorageNodesPostDeployment:
1219 type: OS::TripleO::ObjectStoragePostDeployment
1220 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1222 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1223 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1226 BlockStorageNodesPostDeployment:
1227 type: OS::TripleO::BlockStoragePostDeployment
1228 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1230 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1231 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1233 CephStorageNodesPostDeployment:
1234 type: OS::TripleO::CephStoragePostDeployment
1235 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1237 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1238 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1242 description: URL for the Overcloud Keystone service
1247 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1250 description: Controller VIP for public API endpoints
1251 value: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1252 CeilometerInternalVip:
1253 description: VIP for Ceilometer API internal endpoint
1254 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1256 description: VIP for Cinder API internal endpoint
1257 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1259 description: VIP for Glance API internal endpoint
1260 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1262 description: VIP for Heat API internal endpoint
1263 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1264 KeystoneInternalVip:
1265 description: VIP for Keystone API internal endpoint
1266 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1268 description: VIP for Neutron API internal endpoint
1269 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1271 description: VIP for Nova API internal endpoint
1272 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1274 description: VIP for Swift Proxy internal endpoint
1275 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}