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 NeutronTunnelIdRanges:
153 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
154 of GRE tunnel IDs that are available for tenant network allocation
155 default: ["1:1000", ]
156 type: comma_delimited_list
159 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
160 of VXLAN VNI IDs that are available for tenant network allocation
161 default: ["1:1000", ]
162 type: comma_delimited_list
163 NeutronMechanismDrivers:
164 default: 'openvswitch'
166 The mechanism drivers for the Neutron tenant network. To specify multiple
167 values, use a comma separated string, like so: 'openvswitch,l2_population'
169 NeutronAllowL3AgentFailover:
171 description: Allow automatic l3-agent failover
175 description: Whether to enable l3-agent HA
177 NeutronDhcpAgentsPerNetwork:
180 description: The number of neutron dhcp agents to schedule per network
183 description: The password for the nova service account, used by nova-api.
189 PublicVirtualFixedIPs:
192 Control the IP allocation for the PublicVirtualInterface port. E.g.
193 [{'ip_address':'1.2.3.4'}]
195 PublicVirtualNetwork:
199 Neutron network to allocate public virtual IP port on.
203 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
204 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
207 description: The username for RabbitMQ
211 description: The password for RabbitMQ
217 Rabbit client subscriber parameter to specify
218 an SSL connection to the RabbitMQ host.
222 description: Set rabbit subscriber port, change this if using SSL
224 SnmpdReadonlyUserName:
225 default: ro_snmp_user
226 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
228 SnmpdReadonlyUserPassword:
230 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
234 # Controller-specific params
237 description: The keystone auth secret.
240 CinderEnableRbdBackend:
242 description: Whether to enable or not the Rbd backend for Cinder
244 CinderLVMLoopDeviceSize:
246 description: The size of the loopback file used by the cinder LVM driver.
250 description: The password for the cinder service account, used by cinder-api.
255 description: The iSCSI helper to use with cinder.
260 controllerExtraConfig:
263 Controller specific configuration to inject into the cluster. Same
264 structure as ExtraConfig.
268 default: overcloud-control
270 - custom_constraint: glance.image
271 OvercloudControlFlavor:
272 description: Flavor for control nodes to request when deploying.
275 - custom_constraint: nova.flavor
276 ControlVirtualInterface:
278 description: Interface where virtual ip will be assigned.
282 description: Whether to enable fencing in Pacemaker or not.
286 description: Whether to use Galera instead of regular MariaDB.
288 ControllerEnableCephStorage:
290 description: Whether to deploy Ceph Storage (OSD) on the Controller
292 ControllerEnableSwiftStorage:
294 description: Whether to enable Swift Storage on the Controller
299 Additional configuration to inject into the cluster. The JSON should have
300 the following structure:
303 [{"section": "SECTIONNAME",
305 [{"option": "OPTIONNAME",
316 [{"section": "default",
318 [{"option": "force_config_drive",
325 [{"option": "driver",
326 "value": "nova.cells.rpc_driver.CellsRPCDriver"
337 Pacemaker fencing configuration. The JSON should have
338 the following structure:
342 "agent": "AGENT_NAME",
343 "host_mac": "HOST_MAC_ADDRESS",
344 "params": {"PARAM_NAME": "PARAM_VALUE"}
352 "agent": "fence_xvm",
353 "host_mac": "52:54:00:aa:bb:cc",
355 "multicast_address": "225.0.0.12",
356 "port": "baremetal_0",
358 "manage_key_file": true,
359 "key_file": "/etc/fence_xvm.key",
360 "key_file_password": "abcdef"
367 description: The filepath of the file to use for logging messages from Glance.
370 GlanceNotifierStrategy:
371 description: Strategy to use for Glance notification queue
376 description: The password for the glance service account, used by the glance services.
381 description: The short name of the Glance backend to use. Should be one
382 of swift, rbd or file
385 - allowed_values: ['swift', 'file', 'rbd']
388 description: The password for the Heat service account, used by the Heat services.
391 HeatStackDomainAdminPassword:
392 description: Password for heat_domain_admin user.
396 KeystoneCACertificate:
398 description: Keystone self-signed certificate authority certificate.
400 KeystoneSigningCertificate:
402 description: Keystone certificate for verifying token validity.
406 description: Keystone key for signing tokens.
409 KeystoneSSLCertificate:
411 description: Keystone certificate for verifying token validity.
413 KeystoneSSLCertificateKey:
415 description: Keystone key for signing tokens.
418 MysqlInnodbBufferPoolSize:
420 Specifies the size of the buffer pool in megabytes. Setting to
421 zero should be interpreted as "no value" and will defer to the
425 NeutronDnsmasqOptions:
426 default: 'dhcp-option-force=26,1400'
427 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
429 NeutronPublicInterfaceDefaultRoute:
431 description: A custom default route for the NeutronPublicInterface.
433 NeutronPublicInterfaceIP:
435 description: A custom IP address to put onto the NeutronPublicInterface.
437 NeutronPublicInterfaceRawDevice:
439 description: If set, the public interface is a vlan with this device as the raw device.
441 PublicVirtualInterface:
444 Specifies the interface where the public-facing virtual ip will be assigned.
445 This should be int_public when a VLAN is being used.
449 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
454 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
459 description: If set, the contents of an SSL certificate authority file.
463 description: A random string to be used as a salt when hashing to determine mappings in the ring.
468 description: The password for the swift service account, used by the swift proxy services.
473 description: Value of mount_check in Swift account/container/object -server.conf
478 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
481 description: Partition Power to use when building Swift rings
486 description: How many replicas to use in the swift rings.
488 # Compute-specific params
489 CeilometerComputeAgent:
490 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
494 - allowed_values: ['', Present]
498 HypervisorNeutronPhysicalBridge:
501 An OVS bridge to create on each hypervisor. This defaults to br-ex the
502 same as the control plane nodes, as we have a uniform configuration of
503 the openvswitch agent. Typically should not need to be changed.
505 HypervisorNeutronPublicInterface:
507 description: What interface to add to the HypervisorNeutronPhysicalBridge.
509 NeutronNetworkVLANRanges:
510 default: 'datacentre'
512 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
513 Neutron documentation for permitted values. Defaults to permitting any
514 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
515 type: comma_delimited_list
518 default: libvirt.LibvirtDriver
519 NovaComputeExtraConfig:
522 NovaCompute specific configuration to inject into the cluster. Same
523 structure as ExtraConfig.
525 NovaComputeLibvirtType:
528 NovaEnableRbdBackend:
530 description: Whether to enable or not the Rbd backend for Nova
534 default: overcloud-compute
536 - custom_constraint: glance.image
537 OvercloudComputeFlavor:
538 description: Use this flavor
541 - custom_constraint: nova.flavor
544 NeutronTenantNetwork: tenant
545 CeilometerApiNetwork: internal_api
546 MongoDbNetwork: internal_api
547 CinderApiNetwork: internal_api
548 CinderIscsiNetwork: storage
549 GlanceApiNetwork: storage
550 GlanceRegistryNetwork: internal_api
551 KeystoneAdminApiNetwork: internal_api
552 KeystonePublicApiNetwork: internal_api
553 NeutronApiNetwork: internal_api
554 HeatApiNetwork: internal_api
555 NovaApiNetwork: internal_api
556 NovaMetadataNetwork: internal_api
557 NovaVncProxyNetwork: internal_api
558 SwiftMgmtNetwork: storage_mgmt
559 SwiftProxyNetwork: storage
560 HorizonNetwork: internal_api
561 MemcachedNetwork: internal_api
562 RabbitMqNetwork: internal_api
563 RedisNetwork: internal_api
564 MysqlNetwork: internal_api
565 CephClusterNetwork: storage_mgmt
566 CephPublicNetwork: storage
567 ControllerHostnameResolveNetwork: internal_api
568 ComputeHostnameResolveNetwork: internal_api
569 BlockStorageHostnameResolveNetwork: internal_api
570 ObjectStorageHostnameResolveNetwork: internal_api
571 CephStorageHostnameResolveNetwork: storage
572 description: Mapping of service_name -> network name. Typically set
573 via parameter_defaults in the resource registry.
576 # Block storage specific parameters
581 default: overcloud-cinder-volume
583 OvercloudBlockStorageFlavor:
584 description: Flavor for block storage nodes to request when deploying.
587 - custom_constraint: nova.flavor
589 # Object storage specific parameters
593 OvercloudSwiftStorageFlavor:
594 description: Flavor for Swift storage nodes to request when deploying.
597 - custom_constraint: nova.flavor
599 default: overcloud-swift-storage
602 # Ceph storage specific parameters
607 default: overcloud-ceph-storage
609 OvercloudCephStorageFlavor:
611 description: Flavor for Ceph storage nodes to request when deploying.
614 - custom_constraint: nova.flavor
616 # Hostname format for each role
617 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
618 # and %stackname% is replaced with OS::stack_name in the template below.
619 # If you want to use the heat generated names, pass '' (empty string).
620 ControllerHostnameFormat:
622 description: Format for Controller node hostnames
623 default: '%stackname%-controller-%index%'
624 ComputeHostnameFormat:
626 description: Format for Compute node hostnames
627 default: '%stackname%-novacompute-%index%'
628 BlockStorageHostnameFormat:
630 description: Format for BlockStorage node hostnames
631 default: '%stackname%-blockstorage-%index%'
632 ObjectStorageHostnameFormat:
634 description: Format for SwiftStorage node hostnames
635 default: '%stackname%-objectstorage-%index%'
636 CephStorageHostnameFormat:
638 description: Format for CephStorage node hostnames
639 default: '%stackname%-cephstorage-%index%'
641 # Identifiers to trigger tasks on nodes
646 Setting to a previously unused value during stack-update will trigger
647 package update on all nodes
649 # If you want to remove a specific node from a resource group, you can pass
650 # the node name or id as a <Group>RemovalPolicies parameter, for example:
651 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
652 ControllerRemovalPolicies:
656 List of resources to be removed from ControllerResourceGroup when
657 doing an update which requires removal of specific resources.
658 ComputeRemovalPolicies:
662 List of resources to be removed from ComputeResourceGroup when
663 doing an update which requires removal of specific resources.
664 BlockStorageRemovalPolicies:
668 List of resources to be removed from BlockStorageResourceGroup when
669 doing an update which requires removal of specific resources.
670 ObjectStorageRemovalPolicies:
674 List of resources to be removed from ObjectStorageResourceGroup when
675 doing an update which requires removal of specific resources.
676 CephStorageRemovalPolicies:
680 List of resources to be removed from CephStorageResourceGroup when
681 doing an update which requires removal of specific resources.
686 HeatAuthEncryptionKey:
687 type: OS::Heat::RandomString
690 type: OS::Heat::RandomString
695 type: OS::Heat::RandomString
700 type: OS::Heat::ResourceGroup
703 count: {get_param: ControllerCount}
704 removal_policies: {get_param: ControllerRemovalPolicies}
706 type: OS::TripleO::Controller
708 AdminPassword: {get_param: AdminPassword}
709 AdminToken: {get_param: AdminToken}
710 CeilometerBackend: {get_param: CeilometerBackend}
711 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
712 CeilometerPassword: {get_param: CeilometerPassword}
713 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
714 CinderPassword: {get_param: CinderPassword}
715 CinderISCSIHelper: {get_param: CinderISCSIHelper}
716 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
717 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
718 CloudName: {get_param: CloudName}
719 ControlVirtualInterface: {get_param: ControlVirtualInterface}
720 ControllerExtraConfig: {get_param: controllerExtraConfig}
721 Debug: {get_param: Debug}
722 EnableFencing: {get_param: EnableFencing}
723 EnableGalera: {get_param: EnableGalera}
724 EnableCephStorage: {get_param: ControllerEnableCephStorage}
725 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
726 ExtraConfig: {get_param: ExtraConfig}
727 FencingConfig: {get_param: FencingConfig}
728 Flavor: {get_param: OvercloudControlFlavor}
729 GlancePort: {get_param: GlancePort}
730 GlanceProtocol: {get_param: GlanceProtocol}
731 GlancePassword: {get_param: GlancePassword}
732 GlanceBackend: {get_param: GlanceBackend}
733 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
734 GlanceLogFile: {get_param: GlanceLogFile}
735 HeatPassword: {get_param: HeatPassword}
736 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
737 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
738 HorizonSecret: {get_resource: HorizonSecret}
739 Image: {get_param: controllerImage}
740 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
741 KeyName: {get_param: KeyName}
742 KeystoneCACertificate: {get_param: KeystoneCACertificate}
743 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
744 KeystoneSigningKey: {get_param: KeystoneSigningKey}
745 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
746 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
747 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
748 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
749 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
750 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
751 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
752 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
753 NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
754 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
755 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
756 NeutronPublicInterface: {get_param: NeutronPublicInterface}
757 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
758 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
759 NeutronPassword: {get_param: NeutronPassword}
760 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
761 NeutronDVR: {get_param: NeutronDVR}
762 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
763 NeutronAgentMode: {get_param: NeutronAgentMode}
764 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
765 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
766 NeutronL3HA: {get_param: NeutronL3HA}
767 NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
768 NeutronNetworkType: {get_param: NeutronNetworkType}
769 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
770 NovaPassword: {get_param: NovaPassword}
771 NtpServer: {get_param: NtpServer}
772 PcsdPassword: {get_resource: PcsdPassword}
773 PublicVirtualInterface: {get_param: PublicVirtualInterface}
774 RabbitPassword: {get_param: RabbitPassword}
775 RabbitUserName: {get_param: RabbitUserName}
776 RabbitCookie: {get_attr: [RabbitCookie, value]}
777 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
778 RabbitClientPort: {get_param: RabbitClientPort}
779 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
780 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
781 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
782 SSLCertificate: {get_param: SSLCertificate}
783 SSLKey: {get_param: SSLKey}
784 SSLCACertificate: {get_param: SSLCACertificate}
785 SwiftHashSuffix: {get_param: SwiftHashSuffix}
786 SwiftMountCheck: {get_param: SwiftMountCheck}
787 SwiftMinPartHours: {get_param: SwiftMinPartHours}
788 SwiftPartPower: {get_param: SwiftPartPower}
789 SwiftPassword: {get_param: SwiftPassword}
790 SwiftReplicas: { get_param: SwiftReplicas}
791 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
792 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
793 ServiceNetMap: {get_param: ServiceNetMap}
794 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
795 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
796 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
797 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
798 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
799 UpdateIdentifier: {get_param: UpdateIdentifier}
802 template: {get_param: ControllerHostnameFormat}
804 '%stackname%': {get_param: 'OS::stack_name'}
807 type: OS::Heat::ResourceGroup
810 count: {get_param: ComputeCount}
811 removal_policies: {get_param: ComputeRemovalPolicies}
813 type: OS::TripleO::Compute
815 AdminPassword: {get_param: AdminPassword}
816 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
817 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
818 CeilometerPassword: {get_param: CeilometerPassword}
819 Debug: {get_param: Debug}
820 ExtraConfig: {get_param: ExtraConfig}
821 Flavor: {get_param: OvercloudComputeFlavor}
822 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
823 GlancePort: {get_param: GlancePort}
824 GlanceProtocol: {get_param: GlanceProtocol}
825 Image: {get_param: NovaImage}
826 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
827 KeyName: {get_param: KeyName}
828 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
829 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
830 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
831 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
832 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
833 NeutronNetworkType: {get_param: NeutronNetworkType}
834 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
835 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
836 NeutronPassword: {get_param: NeutronPassword}
837 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
838 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
839 NeutronDVR: {get_param: NeutronDVR}
840 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
841 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
842 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
843 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
844 # L3 HA and Failover is not relevant for Computes, should be removed
845 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
846 NeutronL3HA: {get_param: NeutronL3HA}
847 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
848 NovaComputeDriver: {get_param: NovaComputeDriver}
849 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
850 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
851 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
852 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
853 NovaPassword: {get_param: NovaPassword}
854 NtpServer: {get_param: NtpServer}
855 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
856 RabbitPassword: {get_param: RabbitPassword}
857 RabbitUserName: {get_param: RabbitUserName}
858 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
859 RabbitClientPort: {get_param: RabbitClientPort}
860 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
861 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
862 ServiceNetMap: {get_param: ServiceNetMap}
863 UpdateIdentifier: {get_param: UpdateIdentifier}
866 template: {get_param: ComputeHostnameFormat}
868 '%stackname%': {get_param: 'OS::stack_name'}
871 type: OS::Heat::ResourceGroup
874 count: {get_param: BlockStorageCount}
875 removal_policies: {get_param: BlockStorageRemovalPolicies}
877 type: OS::TripleO::BlockStorage
879 Debug: {get_param: Debug}
880 Image: {get_param: BlockStorageImage}
881 CinderISCSIHelper: {get_param: CinderISCSIHelper}
882 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
883 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
884 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
885 CinderPassword: {get_param: CinderPassword}
886 KeyName: {get_param: KeyName}
887 Flavor: {get_param: OvercloudBlockStorageFlavor}
888 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
889 GlancePort: {get_param: GlancePort}
890 GlanceProtocol: {get_param: GlanceProtocol}
891 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
892 RabbitPassword: {get_param: RabbitPassword}
893 RabbitUserName: {get_param: RabbitUserName}
894 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
895 RabbitClientPort: {get_param: RabbitClientPort}
896 NtpServer: {get_param: NtpServer}
897 UpdateIdentifier: {get_param: UpdateIdentifier}
900 template: {get_param: BlockStorageHostnameFormat}
902 '%stackname%': {get_param: 'OS::stack_name'}
903 ServiceNetMap: {get_param: ServiceNetMap}
904 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
907 type: OS::Heat::ResourceGroup
910 count: {get_param: ObjectStorageCount}
911 removal_policies: {get_param: ObjectStorageRemovalPolicies}
913 type: OS::TripleO::ObjectStorage
915 KeyName: {get_param: KeyName}
916 Flavor: {get_param: OvercloudSwiftStorageFlavor}
917 HashSuffix: {get_param: SwiftHashSuffix}
918 MountCheck: {get_param: SwiftMountCheck}
919 MinPartHours: {get_param: SwiftMinPartHours}
920 PartPower: {get_param: SwiftPartPower}
921 Image: {get_param: SwiftStorageImage}
922 Replicas: { get_param: SwiftReplicas}
923 NtpServer: {get_param: NtpServer}
924 UpdateIdentifier: {get_param: UpdateIdentifier}
925 ServiceNetMap: {get_param: ServiceNetMap}
928 template: {get_param: ObjectStorageHostnameFormat}
930 '%stackname%': {get_param: 'OS::stack_name'}
933 type: OS::Heat::ResourceGroup
936 count: {get_param: CephStorageCount}
937 removal_policies: {get_param: CephStorageRemovalPolicies}
939 type: OS::TripleO::CephStorage
941 Image: {get_param: CephStorageImage}
942 KeyName: {get_param: KeyName}
943 Flavor: {get_param: OvercloudCephStorageFlavor}
944 NtpServer: {get_param: NtpServer}
945 ServiceNetMap: {get_param: ServiceNetMap}
946 UpdateIdentifier: {get_param: UpdateIdentifier}
949 template: {get_param: CephStorageHostnameFormat}
951 '%stackname%': {get_param: 'OS::stack_name'}
954 type: OS::TripleO::Network::Ports::NetIpListMap
956 ExternalIpList: {get_attr: [Controller, external_ip_address]}
957 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
958 StorageIpList: {get_attr: [Controller, storage_ip_address]}
959 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
960 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
963 type: OS::TripleO::AllNodes::SoftwareConfig
965 compute_hosts: {get_attr: [Compute, hosts_entry]}
966 controller_hosts: {get_attr: [Controller, hosts_entry]}
967 controller_ips: {get_attr: [Controller, ip_address]}
968 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
969 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
970 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
971 controller_names: {get_attr: [Controller, hostname]}
972 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
973 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
974 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
975 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
976 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
977 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
978 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
979 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
980 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
981 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
982 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
983 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
984 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
985 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
986 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
987 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
988 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
991 type: OS::Heat::RandomString
995 MysqlClusterUniquePart:
996 type: OS::Heat::RandomString
1001 type: OS::Heat::RandomString
1004 salt: {get_param: RabbitCookieSalt}
1006 # creates the network architecture
1008 type: OS::TripleO::Network
1011 type: OS::Neutron::Port
1012 depends_on: Networks
1014 name: control_virtual_ip
1015 network_id: {get_param: NeutronControlPlaneID}
1016 fixed_ips: {get_param: ControlFixedIPs}
1017 replacement_policy: AUTO
1020 depends_on: Networks
1021 type: OS::TripleO::Controller::Ports::RedisVipPort
1023 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1024 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1025 PortName: redis_virtual_ip
1026 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1030 type: OS::Neutron::Port
1031 depends_on: Networks
1033 name: public_virtual_ip
1034 network: {get_param: PublicVirtualNetwork}
1035 fixed_ips: {get_param: PublicVirtualFixedIPs}
1036 replacement_policy: AUTO
1038 InternalApiVirtualIP:
1039 depends_on: Networks
1040 type: OS::TripleO::Controller::Ports::InternalApiPort
1042 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1043 PortName: internal_api_virtual_ip
1046 depends_on: Networks
1047 type: OS::TripleO::Controller::Ports::StoragePort
1049 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1050 PortName: storage_virtual_ip
1052 StorageMgmtVirtualIP:
1053 depends_on: Networks
1054 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1056 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1057 PortName: storage_management_virtual_ip
1060 type: OS::TripleO::Network::Ports::NetIpMap
1062 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1063 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1064 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1065 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1066 # No tenant VIP required
1069 type: OS::TripleO::VipConfig
1072 type: OS::Heat::StructuredDeployments
1074 config: {get_resource: VipConfig}
1075 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1077 # service VIP mappings
1078 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1079 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1080 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1081 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1082 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1083 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1084 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1085 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1086 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1087 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1088 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1089 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1090 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1091 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1092 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1093 # direct configuration of Virtual IPs for each network
1094 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1095 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1096 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1097 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1098 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1100 ControllerBootstrapNodeConfig:
1101 type: OS::TripleO::BootstrapNode::SoftwareConfig
1103 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1104 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1106 ControllerBootstrapNodeDeployment:
1107 type: OS::Heat::StructuredDeployments
1109 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1110 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1112 ControllerSwiftDeployment:
1113 type: OS::Heat::StructuredDeployments
1115 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1116 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1118 ObjectStorageSwiftDeployment:
1119 type: OS::Heat::StructuredDeployments
1121 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1122 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1124 SwiftDevicesAndProxyConfig:
1125 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1127 controller_swift_devices: {get_attr: [Controller, swift_device]}
1128 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1129 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1131 ComputeCephDeployment:
1132 type: OS::Heat::StructuredDeployments
1134 config: {get_attr: [CephClusterConfig, config_id]}
1135 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1137 ControllerCephDeployment:
1138 type: OS::Heat::StructuredDeployments
1140 config: {get_attr: [CephClusterConfig, config_id]}
1141 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1143 CephStorageCephDeployment:
1144 type: OS::Heat::StructuredDeployments
1146 config: {get_attr: [CephClusterConfig, config_id]}
1147 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1150 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1152 ceph_fsid: {get_param: CephClusterFSID}
1153 ceph_mon_key: {get_param: CephMonKey}
1154 ceph_admin_key: {get_param: CephAdminKey}
1155 ceph_mon_names: {get_attr: [Controller, hostname]}
1156 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1158 ControllerClusterConfig:
1159 type: OS::Heat::StructuredConfig
1161 group: os-apply-config
1164 nodes: {get_attr: [Controller, corosync_node]}
1168 nodes: {get_attr: [Controller, hostname]}
1170 nodes: {get_attr: [Controller, corosync_node]}
1172 nodes: {get_attr: [Controller, corosync_node]}
1174 ControllerClusterDeployment:
1175 type: OS::Heat::StructuredDeployments
1177 config: {get_resource: ControllerClusterConfig}
1178 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1180 ControllerAllNodesDeployment:
1181 type: OS::Heat::StructuredDeployments
1183 config: {get_attr: [allNodesConfig, config_id]}
1184 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1186 ComputeAllNodesDeployment:
1187 type: OS::Heat::StructuredDeployments
1189 config: {get_attr: [allNodesConfig, config_id]}
1190 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1192 BlockStorageAllNodesDeployment:
1193 type: OS::Heat::StructuredDeployments
1195 config: {get_attr: [allNodesConfig, config_id]}
1196 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1198 ObjectStorageAllNodesDeployment:
1199 type: OS::Heat::StructuredDeployments
1201 config: {get_attr: [allNodesConfig, config_id]}
1202 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1204 CephStorageAllNodesDeployment:
1205 type: OS::Heat::StructuredDeployments
1207 config: {get_attr: [allNodesConfig, config_id]}
1208 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1210 # Nested stack deployment runs after all other controller deployments
1211 ControllerNodesPostDeployment:
1212 type: OS::TripleO::ControllerPostDeployment
1213 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1215 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1216 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1218 ComputeNodesPostDeployment:
1219 type: OS::TripleO::ComputePostDeployment
1220 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1222 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1223 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1225 ObjectStorageNodesPostDeployment:
1226 type: OS::TripleO::ObjectStoragePostDeployment
1227 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1229 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1230 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1233 BlockStorageNodesPostDeployment:
1234 type: OS::TripleO::BlockStoragePostDeployment
1235 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1237 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1238 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1240 CephStorageNodesPostDeployment:
1241 type: OS::TripleO::CephStoragePostDeployment
1242 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1244 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1245 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1249 description: URL for the Overcloud Keystone service
1254 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}