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 CinderEnableNfsBackend:
47 description: Whether to enable or not the NFS backend for Cinder
49 CinderEnableIscsiBackend:
51 description: Whether to enable or not the Iscsi backend for Cinder
55 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
59 description: Should be used for arbitrary ips.
63 description: Set to True to enable debugging on all services.
67 description: Glance port.
71 description: Protocol to use when connecting to glance, set to https for SSL.
74 default: 'REBUILD_PRESERVE_EPHEMERAL'
75 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
79 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
82 - custom_constraint: nova.keypair
83 NeutronExternalNetworkBridge:
84 description: Name of bridge used for external network traffic.
87 NeutronBridgeMappings:
89 The OVS logical->physical bridge mappings to use. See the Neutron
90 documentation for details. Defaults to mapping br-ex - the external
91 bridge on hosts - to a physical name 'datacentre' which can be used
92 to create provider networks (and we use this for the default floating
93 network) - if changing this either use different post-install network
94 scripts or be sure to keep 'datacentre' as a mapping network name.
96 default: "datacentre:br-ex"
97 NeutronControlPlaneID:
100 description: Neutron ID for ctlplane network.
101 NeutronEnableTunnelling:
106 default: 'datacentre'
108 If set, flat networks to configure in neutron plugins. Defaults to
109 'datacentre' to permit external network creation.
112 description: The tenant network type for Neutron, either gre or vxlan.
116 description: The password for the neutron service account, used by neutron agents.
119 NeutronPublicInterface:
121 description: What interface to bridge onto br-ex for network nodes.
123 NeutronPublicInterfaceTag:
126 VLAN tag for creating a public VLAN. The tag will be used to
127 create an access port on the exterior bridge for each control plane node,
128 and that port will be given the IP address returned by neutron from the
129 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
130 overcloud.yaml to include the deployment of VLAN ports to the control
133 NeutronComputeAgentMode:
135 description: Agent mode for the neutron-l3-agent on the compute hosts
139 description: Agent mode for the neutron-l3-agent on the controller hosts
143 description: Whether to configure Neutron Distributed Virtual Routers
145 NeutronMetadataProxySharedSecret:
147 description: Shared secret to prevent spoofing
152 The tunnel types for the Neutron tenant network. To specify multiple
153 values, use a comma separated string, like so: 'gre,vxlan'
155 NeutronTunnelIdRanges:
157 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
158 of GRE tunnel IDs that are available for tenant network allocation
159 default: ["1:1000", ]
160 type: comma_delimited_list
163 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
164 of VXLAN VNI IDs that are available for tenant network allocation
165 default: ["1:1000", ]
166 type: comma_delimited_list
167 NeutronMechanismDrivers:
168 default: 'openvswitch'
170 The mechanism drivers for the Neutron tenant network. To specify multiple
171 values, use a comma separated string, like so: 'openvswitch,l2_population'
173 NeutronAllowL3AgentFailover:
175 description: Allow automatic l3-agent failover
179 description: Whether to enable l3-agent HA
181 NeutronDhcpAgentsPerNetwork:
184 description: The number of neutron dhcp agents to schedule per network
187 description: The password for the nova service account, used by nova-api.
195 description: Should MongoDb journaling be disabled
197 PublicVirtualFixedIPs:
200 Control the IP allocation for the PublicVirtualInterface port. E.g.
201 [{'ip_address':'1.2.3.4'}]
206 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
207 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
210 description: The username for RabbitMQ
214 description: The password for RabbitMQ
220 Rabbit client subscriber parameter to specify
221 an SSL connection to the RabbitMQ host.
225 description: Set rabbit subscriber port, change this if using SSL
227 SnmpdReadonlyUserName:
228 default: ro_snmp_user
229 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
231 SnmpdReadonlyUserPassword:
233 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
237 # Controller-specific params
240 description: The keystone auth secret.
243 CinderEnableRbdBackend:
245 description: Whether to enable or not the Rbd backend for Cinder
247 CinderLVMLoopDeviceSize:
249 description: The size of the loopback file used by the cinder LVM driver.
251 CinderNfsMountOptions:
254 Mount options for NFS mounts used by Cinder NFS backend. Effective
255 when CinderEnableNfsBackend is true.
260 NFS servers used by Cinder NFS backend. Effective when
261 CinderEnableNfsBackend is true.
262 type: comma_delimited_list
265 description: The password for the cinder service account, used by cinder-api.
270 description: The iSCSI helper to use with cinder.
275 controllerExtraConfig:
278 Controller specific configuration to inject into the cluster. Same
279 structure as ExtraConfig.
283 default: overcloud-control
285 - custom_constraint: glance.image
286 OvercloudControlFlavor:
287 description: Flavor for control nodes to request when deploying.
290 - custom_constraint: nova.flavor
291 ControlVirtualInterface:
293 description: Interface where virtual ip will be assigned.
297 description: Whether to enable fencing in Pacemaker or not.
301 description: Whether to use Galera instead of regular MariaDB.
303 ControllerEnableCephStorage:
305 description: Whether to deploy Ceph Storage (OSD) on the Controller
307 ControllerEnableSwiftStorage:
309 description: Whether to enable Swift Storage on the Controller
314 Additional configuration to inject into the cluster. The format required
315 may be implementation specific, e.g puppet hieradata. Any role specific
316 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
321 Pacemaker fencing configuration. The JSON should have
322 the following structure:
326 "agent": "AGENT_NAME",
327 "host_mac": "HOST_MAC_ADDRESS",
328 "params": {"PARAM_NAME": "PARAM_VALUE"}
336 "agent": "fence_xvm",
337 "host_mac": "52:54:00:aa:bb:cc",
339 "multicast_address": "225.0.0.12",
340 "port": "baremetal_0",
342 "manage_key_file": true,
343 "key_file": "/etc/fence_xvm.key",
344 "key_file_password": "abcdef"
351 description: The filepath of the file to use for logging messages from Glance.
354 GlanceNotifierStrategy:
355 description: Strategy to use for Glance notification queue
360 description: The password for the glance service account, used by the glance services.
365 description: The short name of the Glance backend to use. Should be one
366 of swift, rbd or file
369 - allowed_values: ['swift', 'file', 'rbd']
372 description: The password for the Heat service account, used by the Heat services.
375 HeatStackDomainAdminPassword:
376 description: Password for heat_domain_admin user.
380 KeystoneCACertificate:
382 description: Keystone self-signed certificate authority certificate.
384 KeystoneSigningCertificate:
386 description: Keystone certificate for verifying token validity.
390 description: Keystone key for signing tokens.
393 KeystoneSSLCertificate:
395 description: Keystone certificate for verifying token validity.
397 KeystoneSSLCertificateKey:
399 description: Keystone key for signing tokens.
402 MysqlInnodbBufferPoolSize:
404 Specifies the size of the buffer pool in megabytes. Setting to
405 zero should be interpreted as "no value" and will defer to the
410 description: Configures MySQL max_connections config setting
413 NeutronDnsmasqOptions:
414 default: 'dhcp-option-force=26,1400'
415 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
417 NeutronPublicInterfaceDefaultRoute:
419 description: A custom default route for the NeutronPublicInterface.
421 NeutronPublicInterfaceIP:
423 description: A custom IP address to put onto the NeutronPublicInterface.
425 NeutronPublicInterfaceRawDevice:
427 description: If set, the public interface is a vlan with this device as the raw device.
429 PublicVirtualInterface:
432 Specifies the interface where the public-facing virtual ip will be assigned.
433 This should be int_public when a VLAN is being used.
437 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
442 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
447 description: If set, the contents of an SSL certificate authority file.
451 description: A random string to be used as a salt when hashing to determine mappings in the ring.
456 description: The password for the swift service account, used by the swift proxy services.
461 description: Value of mount_check in Swift account/container/object -server.conf
466 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
469 description: Partition Power to use when building Swift rings
474 description: How many replicas to use in the swift rings.
476 # Compute-specific params
477 CeilometerComputeAgent:
478 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
482 - allowed_values: ['', Present]
486 HypervisorNeutronPhysicalBridge:
489 An OVS bridge to create on each hypervisor. This defaults to br-ex the
490 same as the control plane nodes, as we have a uniform configuration of
491 the openvswitch agent. Typically should not need to be changed.
493 HypervisorNeutronPublicInterface:
495 description: What interface to add to the HypervisorNeutronPhysicalBridge.
497 NeutronNetworkVLANRanges:
498 default: 'datacentre'
500 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
501 Neutron documentation for permitted values. Defaults to permitting any
502 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
503 type: comma_delimited_list
506 default: libvirt.LibvirtDriver
507 NovaComputeExtraConfig:
510 NovaCompute specific configuration to inject into the cluster. Same
511 structure as ExtraConfig.
513 NovaComputeLibvirtType:
516 NovaEnableRbdBackend:
518 description: Whether to enable or not the Rbd backend for Nova
522 default: overcloud-compute
524 - custom_constraint: glance.image
525 OvercloudComputeFlavor:
526 description: Use this flavor
529 - custom_constraint: nova.flavor
532 NeutronTenantNetwork: tenant
533 CeilometerApiNetwork: internal_api
534 MongoDbNetwork: internal_api
535 CinderApiNetwork: internal_api
536 CinderIscsiNetwork: storage
537 GlanceApiNetwork: storage
538 GlanceRegistryNetwork: internal_api
539 KeystoneAdminApiNetwork: internal_api
540 KeystonePublicApiNetwork: internal_api
541 NeutronApiNetwork: internal_api
542 HeatApiNetwork: internal_api
543 NovaApiNetwork: internal_api
544 NovaMetadataNetwork: internal_api
545 NovaVncProxyNetwork: internal_api
546 SwiftMgmtNetwork: storage_mgmt
547 SwiftProxyNetwork: storage
548 HorizonNetwork: internal_api
549 MemcachedNetwork: internal_api
550 RabbitMqNetwork: internal_api
551 RedisNetwork: internal_api
552 MysqlNetwork: internal_api
553 CephClusterNetwork: storage_mgmt
554 CephPublicNetwork: storage
555 ControllerHostnameResolveNetwork: internal_api
556 ComputeHostnameResolveNetwork: internal_api
557 BlockStorageHostnameResolveNetwork: internal_api
558 ObjectStorageHostnameResolveNetwork: internal_api
559 CephStorageHostnameResolveNetwork: storage
560 description: Mapping of service_name -> network name. Typically set
561 via parameter_defaults in the resource registry.
564 # Block storage specific parameters
569 default: overcloud-cinder-volume
571 OvercloudBlockStorageFlavor:
572 description: Flavor for block storage nodes to request when deploying.
575 - custom_constraint: nova.flavor
576 BlockStorageExtraConfig:
579 BlockStorage specific configuration to inject into the cluster. Same
580 structure as ExtraConfig.
583 # Object storage specific parameters
587 OvercloudSwiftStorageFlavor:
588 description: Flavor for Swift storage nodes to request when deploying.
591 - custom_constraint: nova.flavor
593 default: overcloud-swift-storage
595 ObjectStorageExtraConfig:
598 ObjectStorage specific configuration to inject into the cluster. Same
599 structure as ExtraConfig.
603 # Ceph storage specific parameters
608 default: overcloud-ceph-storage
610 OvercloudCephStorageFlavor:
612 description: Flavor for Ceph storage nodes to request when deploying.
615 - custom_constraint: nova.flavor
616 CephStorageExtraConfig:
619 CephStorage specific configuration to inject into the cluster. Same
620 structure as ExtraConfig.
623 # Hostname format for each role
624 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
625 # and %stackname% is replaced with OS::stack_name in the template below.
626 # If you want to use the heat generated names, pass '' (empty string).
627 ControllerHostnameFormat:
629 description: Format for Controller node hostnames
630 default: '%stackname%-controller-%index%'
631 ComputeHostnameFormat:
633 description: Format for Compute node hostnames
634 default: '%stackname%-novacompute-%index%'
635 BlockStorageHostnameFormat:
637 description: Format for BlockStorage node hostnames
638 default: '%stackname%-blockstorage-%index%'
639 ObjectStorageHostnameFormat:
641 description: Format for SwiftStorage node hostnames
642 default: '%stackname%-objectstorage-%index%'
643 CephStorageHostnameFormat:
645 description: Format for CephStorage node hostnames
646 default: '%stackname%-cephstorage-%index%'
648 # Identifiers to trigger tasks on nodes
653 Setting to a previously unused value during stack-update will trigger
654 package update on all nodes
656 # If you want to remove a specific node from a resource group, you can pass
657 # the node name or id as a <Group>RemovalPolicies parameter, for example:
658 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
659 ControllerRemovalPolicies:
663 List of resources to be removed from ControllerResourceGroup when
664 doing an update which requires removal of specific resources.
665 ComputeRemovalPolicies:
669 List of resources to be removed from ComputeResourceGroup when
670 doing an update which requires removal of specific resources.
671 BlockStorageRemovalPolicies:
675 List of resources to be removed from BlockStorageResourceGroup when
676 doing an update which requires removal of specific resources.
677 ObjectStorageRemovalPolicies:
681 List of resources to be removed from ObjectStorageResourceGroup when
682 doing an update which requires removal of specific resources.
683 CephStorageRemovalPolicies:
687 List of resources to be removed from CephStorageResourceGroup when
688 doing an update which requires removal of specific resources.
693 HeatAuthEncryptionKey:
694 type: OS::Heat::RandomString
697 type: OS::Heat::RandomString
702 type: OS::Heat::RandomString
707 type: OS::Heat::ResourceGroup
710 count: {get_param: ControllerCount}
711 removal_policies: {get_param: ControllerRemovalPolicies}
713 type: OS::TripleO::Controller
715 AdminPassword: {get_param: AdminPassword}
716 AdminToken: {get_param: AdminToken}
717 CeilometerBackend: {get_param: CeilometerBackend}
718 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
719 CeilometerPassword: {get_param: CeilometerPassword}
720 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
721 CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
722 CinderNfsServers: {get_param: CinderNfsServers}
723 CinderPassword: {get_param: CinderPassword}
724 CinderISCSIHelper: {get_param: CinderISCSIHelper}
725 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
726 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
727 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
728 CloudName: {get_param: CloudName}
729 ControlVirtualInterface: {get_param: ControlVirtualInterface}
730 ControllerExtraConfig: {get_param: controllerExtraConfig}
731 Debug: {get_param: Debug}
732 EnableFencing: {get_param: EnableFencing}
733 EnableGalera: {get_param: EnableGalera}
734 EnableCephStorage: {get_param: ControllerEnableCephStorage}
735 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
736 ExtraConfig: {get_param: ExtraConfig}
737 FencingConfig: {get_param: FencingConfig}
738 Flavor: {get_param: OvercloudControlFlavor}
739 GlancePort: {get_param: GlancePort}
740 GlanceProtocol: {get_param: GlanceProtocol}
741 GlancePassword: {get_param: GlancePassword}
742 GlanceBackend: {get_param: GlanceBackend}
743 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
744 GlanceLogFile: {get_param: GlanceLogFile}
745 HeatPassword: {get_param: HeatPassword}
746 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
747 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
748 HorizonSecret: {get_resource: HorizonSecret}
749 Image: {get_param: controllerImage}
750 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
751 KeyName: {get_param: KeyName}
752 KeystoneCACertificate: {get_param: KeystoneCACertificate}
753 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
754 KeystoneSigningKey: {get_param: KeystoneSigningKey}
755 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
756 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
757 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
758 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
759 MysqlMaxConnections: {get_param: MysqlMaxConnections}
760 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
761 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
762 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
763 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
764 NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
765 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
766 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
767 NeutronPublicInterface: {get_param: NeutronPublicInterface}
768 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
769 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
770 NeutronPassword: {get_param: NeutronPassword}
771 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
772 NeutronDVR: {get_param: NeutronDVR}
773 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
774 NeutronAgentMode: {get_param: NeutronAgentMode}
775 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
776 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
777 NeutronL3HA: {get_param: NeutronL3HA}
778 NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
779 NeutronNetworkType: {get_param: NeutronNetworkType}
780 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
781 NovaPassword: {get_param: NovaPassword}
782 NtpServer: {get_param: NtpServer}
783 MongoDbNoJournal: {get_param: MongoDbNoJournal}
784 PcsdPassword: {get_resource: PcsdPassword}
785 PublicVirtualInterface: {get_param: PublicVirtualInterface}
786 RabbitPassword: {get_param: RabbitPassword}
787 RabbitUserName: {get_param: RabbitUserName}
788 RabbitCookie: {get_attr: [RabbitCookie, value]}
789 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
790 RabbitClientPort: {get_param: RabbitClientPort}
791 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
792 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
793 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
794 SSLCertificate: {get_param: SSLCertificate}
795 SSLKey: {get_param: SSLKey}
796 SSLCACertificate: {get_param: SSLCACertificate}
797 SwiftHashSuffix: {get_param: SwiftHashSuffix}
798 SwiftMountCheck: {get_param: SwiftMountCheck}
799 SwiftMinPartHours: {get_param: SwiftMinPartHours}
800 SwiftPartPower: {get_param: SwiftPartPower}
801 SwiftPassword: {get_param: SwiftPassword}
802 SwiftReplicas: { get_param: SwiftReplicas}
803 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
804 PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
805 ServiceNetMap: {get_param: ServiceNetMap}
806 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
807 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
808 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
809 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
810 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
811 UpdateIdentifier: {get_param: UpdateIdentifier}
814 template: {get_param: ControllerHostnameFormat}
816 '%stackname%': {get_param: 'OS::stack_name'}
819 type: OS::Heat::ResourceGroup
822 count: {get_param: ComputeCount}
823 removal_policies: {get_param: ComputeRemovalPolicies}
825 type: OS::TripleO::Compute
827 AdminPassword: {get_param: AdminPassword}
828 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
829 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
830 CeilometerPassword: {get_param: CeilometerPassword}
831 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
832 Debug: {get_param: Debug}
833 ExtraConfig: {get_param: ExtraConfig}
834 Flavor: {get_param: OvercloudComputeFlavor}
835 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
836 GlancePort: {get_param: GlancePort}
837 GlanceProtocol: {get_param: GlanceProtocol}
838 Image: {get_param: NovaImage}
839 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
840 KeyName: {get_param: KeyName}
841 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
842 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
843 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
844 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
845 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
846 NeutronNetworkType: {get_param: NeutronNetworkType}
847 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
848 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
849 NeutronPassword: {get_param: NeutronPassword}
850 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
851 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
852 NeutronDVR: {get_param: NeutronDVR}
853 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
854 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
855 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
856 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
857 # L3 HA and Failover is not relevant for Computes, should be removed
858 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
859 NeutronL3HA: {get_param: NeutronL3HA}
860 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
861 NovaComputeDriver: {get_param: NovaComputeDriver}
862 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
863 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
864 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
865 NovaPublicIP: {get_attr: [PublicVirtualIP, ip_address]}
866 NovaPassword: {get_param: NovaPassword}
867 NtpServer: {get_param: NtpServer}
868 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
869 RabbitPassword: {get_param: RabbitPassword}
870 RabbitUserName: {get_param: RabbitUserName}
871 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
872 RabbitClientPort: {get_param: RabbitClientPort}
873 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
874 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
875 ServiceNetMap: {get_param: ServiceNetMap}
876 UpdateIdentifier: {get_param: UpdateIdentifier}
879 template: {get_param: ComputeHostnameFormat}
881 '%stackname%': {get_param: 'OS::stack_name'}
884 type: OS::Heat::ResourceGroup
887 count: {get_param: BlockStorageCount}
888 removal_policies: {get_param: BlockStorageRemovalPolicies}
890 type: OS::TripleO::BlockStorage
892 Debug: {get_param: Debug}
893 Image: {get_param: BlockStorageImage}
894 CinderISCSIHelper: {get_param: CinderISCSIHelper}
895 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
896 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
897 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
898 CinderPassword: {get_param: CinderPassword}
899 KeyName: {get_param: KeyName}
900 Flavor: {get_param: OvercloudBlockStorageFlavor}
901 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
902 GlancePort: {get_param: GlancePort}
903 GlanceProtocol: {get_param: GlanceProtocol}
904 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
905 RabbitPassword: {get_param: RabbitPassword}
906 RabbitUserName: {get_param: RabbitUserName}
907 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
908 RabbitClientPort: {get_param: RabbitClientPort}
909 NtpServer: {get_param: NtpServer}
910 UpdateIdentifier: {get_param: UpdateIdentifier}
913 template: {get_param: BlockStorageHostnameFormat}
915 '%stackname%': {get_param: 'OS::stack_name'}
916 ServiceNetMap: {get_param: ServiceNetMap}
917 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
918 ExtraConfig: {get_param: ExtraConfig}
919 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
922 type: OS::Heat::ResourceGroup
925 count: {get_param: ObjectStorageCount}
926 removal_policies: {get_param: ObjectStorageRemovalPolicies}
928 type: OS::TripleO::ObjectStorage
930 KeyName: {get_param: KeyName}
931 Flavor: {get_param: OvercloudSwiftStorageFlavor}
932 HashSuffix: {get_param: SwiftHashSuffix}
933 MountCheck: {get_param: SwiftMountCheck}
934 MinPartHours: {get_param: SwiftMinPartHours}
935 PartPower: {get_param: SwiftPartPower}
936 Image: {get_param: SwiftStorageImage}
937 Replicas: { get_param: SwiftReplicas}
938 NtpServer: {get_param: NtpServer}
939 UpdateIdentifier: {get_param: UpdateIdentifier}
940 ServiceNetMap: {get_param: ServiceNetMap}
943 template: {get_param: ObjectStorageHostnameFormat}
945 '%stackname%': {get_param: 'OS::stack_name'}
946 ExtraConfig: {get_param: ExtraConfig}
947 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
950 type: OS::Heat::ResourceGroup
953 count: {get_param: CephStorageCount}
954 removal_policies: {get_param: CephStorageRemovalPolicies}
956 type: OS::TripleO::CephStorage
958 Image: {get_param: CephStorageImage}
959 KeyName: {get_param: KeyName}
960 Flavor: {get_param: OvercloudCephStorageFlavor}
961 NtpServer: {get_param: NtpServer}
962 ServiceNetMap: {get_param: ServiceNetMap}
963 UpdateIdentifier: {get_param: UpdateIdentifier}
966 template: {get_param: CephStorageHostnameFormat}
968 '%stackname%': {get_param: 'OS::stack_name'}
969 ExtraConfig: {get_param: ExtraConfig}
970 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
973 type: OS::TripleO::Network::Ports::NetIpListMap
975 ExternalIpList: {get_attr: [Controller, external_ip_address]}
976 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
977 StorageIpList: {get_attr: [Controller, storage_ip_address]}
978 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
979 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
982 type: OS::TripleO::AllNodes::SoftwareConfig
984 compute_hosts: {get_attr: [Compute, hosts_entry]}
985 controller_hosts: {get_attr: [Controller, hosts_entry]}
986 controller_ips: {get_attr: [Controller, ip_address]}
987 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
988 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
989 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
990 controller_names: {get_attr: [Controller, hostname]}
991 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
992 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
993 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
994 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
995 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
996 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
997 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
998 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
999 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1000 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1001 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1002 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1003 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1004 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1005 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1006 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1007 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1010 type: OS::Heat::RandomString
1014 MysqlClusterUniquePart:
1015 type: OS::Heat::RandomString
1020 type: OS::Heat::RandomString
1023 salt: {get_param: RabbitCookieSalt}
1025 # creates the network architecture
1027 type: OS::TripleO::Network
1030 type: OS::Neutron::Port
1031 depends_on: Networks
1033 name: control_virtual_ip
1034 network_id: {get_param: NeutronControlPlaneID}
1035 fixed_ips: {get_param: ControlFixedIPs}
1036 replacement_policy: AUTO
1039 depends_on: Networks
1040 type: OS::TripleO::Controller::Ports::RedisVipPort
1042 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1043 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1044 PortName: redis_virtual_ip
1045 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1047 # The public VIP is on the External net, falls back to ctlplane
1049 depends_on: Networks
1050 type: OS::TripleO::Controller::Ports::ExternalPort
1052 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1053 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1054 PortName: public_virtual_ip
1055 FixedIPs: {get_param: PublicVirtualFixedIPs}
1057 InternalApiVirtualIP:
1058 depends_on: Networks
1059 type: OS::TripleO::Controller::Ports::InternalApiPort
1061 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1062 PortName: internal_api_virtual_ip
1065 depends_on: Networks
1066 type: OS::TripleO::Controller::Ports::StoragePort
1068 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1069 PortName: storage_virtual_ip
1071 StorageMgmtVirtualIP:
1072 depends_on: Networks
1073 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1075 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1076 PortName: storage_management_virtual_ip
1079 type: OS::TripleO::Network::Ports::NetIpMap
1081 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
1082 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1083 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1084 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1085 # No tenant VIP required
1088 type: OS::TripleO::VipConfig
1091 type: OS::Heat::StructuredDeployments
1093 config: {get_resource: VipConfig}
1094 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1096 # service VIP mappings
1097 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1098 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1099 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1100 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1101 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1102 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1103 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1104 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1105 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1106 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1107 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1108 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1109 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1110 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1111 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1112 # direct configuration of Virtual IPs for each network
1113 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1114 public_virtual_ip: {get_attr: [PublicVirtualIP, ip_address]}
1115 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1116 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1117 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1119 ControllerBootstrapNodeConfig:
1120 type: OS::TripleO::BootstrapNode::SoftwareConfig
1122 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1123 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1125 ControllerBootstrapNodeDeployment:
1126 type: OS::Heat::StructuredDeployments
1128 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1129 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1131 ControllerSwiftDeployment:
1132 type: OS::Heat::StructuredDeployments
1134 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1135 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1137 ObjectStorageSwiftDeployment:
1138 type: OS::Heat::StructuredDeployments
1140 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1141 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1143 SwiftDevicesAndProxyConfig:
1144 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1146 controller_swift_devices: {get_attr: [Controller, swift_device]}
1147 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1148 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1150 ComputeCephDeployment:
1151 type: OS::Heat::StructuredDeployments
1153 config: {get_attr: [CephClusterConfig, config_id]}
1154 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1156 ControllerCephDeployment:
1157 type: OS::Heat::StructuredDeployments
1159 config: {get_attr: [CephClusterConfig, config_id]}
1160 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1162 CephStorageCephDeployment:
1163 type: OS::Heat::StructuredDeployments
1165 config: {get_attr: [CephClusterConfig, config_id]}
1166 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1169 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1171 ceph_fsid: {get_param: CephClusterFSID}
1172 ceph_mon_key: {get_param: CephMonKey}
1173 ceph_admin_key: {get_param: CephAdminKey}
1174 ceph_mon_names: {get_attr: [Controller, hostname]}
1175 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1177 ControllerClusterConfig:
1178 type: OS::Heat::StructuredConfig
1180 group: os-apply-config
1183 nodes: {get_attr: [Controller, corosync_node]}
1187 nodes: {get_attr: [Controller, hostname]}
1189 nodes: {get_attr: [Controller, corosync_node]}
1191 nodes: {get_attr: [Controller, corosync_node]}
1193 ControllerClusterDeployment:
1194 type: OS::Heat::StructuredDeployments
1196 config: {get_resource: ControllerClusterConfig}
1197 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1199 ControllerAllNodesDeployment:
1200 type: OS::Heat::StructuredDeployments
1202 config: {get_attr: [allNodesConfig, config_id]}
1203 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1205 ComputeAllNodesDeployment:
1206 type: OS::Heat::StructuredDeployments
1208 config: {get_attr: [allNodesConfig, config_id]}
1209 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1211 BlockStorageAllNodesDeployment:
1212 type: OS::Heat::StructuredDeployments
1214 config: {get_attr: [allNodesConfig, config_id]}
1215 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1217 ObjectStorageAllNodesDeployment:
1218 type: OS::Heat::StructuredDeployments
1220 config: {get_attr: [allNodesConfig, config_id]}
1221 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1223 CephStorageAllNodesDeployment:
1224 type: OS::Heat::StructuredDeployments
1226 config: {get_attr: [allNodesConfig, config_id]}
1227 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1229 # Nested stack deployment runs after all other controller deployments
1230 ControllerNodesPostDeployment:
1231 type: OS::TripleO::ControllerPostDeployment
1232 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1234 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1235 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1237 ComputeNodesPostDeployment:
1238 type: OS::TripleO::ComputePostDeployment
1239 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1241 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1242 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1244 ObjectStorageNodesPostDeployment:
1245 type: OS::TripleO::ObjectStoragePostDeployment
1246 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1248 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1249 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1252 BlockStorageNodesPostDeployment:
1253 type: OS::TripleO::BlockStoragePostDeployment
1254 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1256 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1257 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1259 CephStorageNodesPostDeployment:
1260 type: OS::TripleO::CephStoragePostDeployment
1261 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1263 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1264 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1268 description: URL for the Overcloud Keystone service
1273 - {get_attr: [PublicVirtualIP, ip_address]}
1276 description: Controller VIP for public API endpoints
1277 value: {get_attr: [PublicVirtualIP, ip_address]}
1278 CeilometerInternalVip:
1279 description: VIP for Ceilometer API internal endpoint
1280 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1282 description: VIP for Cinder API internal endpoint
1283 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1285 description: VIP for Glance API internal endpoint
1286 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1288 description: VIP for Heat API internal endpoint
1289 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1290 KeystoneInternalVip:
1291 description: VIP for Keystone API internal endpoint
1292 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1294 description: VIP for Neutron API internal endpoint
1295 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1297 description: VIP for Nova API internal endpoint
1298 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1300 description: VIP for Swift Proxy internal endpoint
1301 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}