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.
191 description: Should MongoDb journaling be disabled
193 PublicVirtualFixedIPs:
196 Control the IP allocation for the PublicVirtualInterface port. E.g.
197 [{'ip_address':'1.2.3.4'}]
202 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
203 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
206 description: The username for RabbitMQ
210 description: The password for RabbitMQ
216 Rabbit client subscriber parameter to specify
217 an SSL connection to the RabbitMQ host.
221 description: Set rabbit subscriber port, change this if using SSL
223 SnmpdReadonlyUserName:
224 default: ro_snmp_user
225 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
227 SnmpdReadonlyUserPassword:
229 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
233 # Controller-specific params
236 description: The keystone auth secret.
239 CinderEnableRbdBackend:
241 description: Whether to enable or not the Rbd backend for Cinder
243 CinderLVMLoopDeviceSize:
245 description: The size of the loopback file used by the cinder LVM driver.
249 description: The password for the cinder service account, used by cinder-api.
254 description: The iSCSI helper to use with cinder.
259 controllerExtraConfig:
262 Controller specific configuration to inject into the cluster. Same
263 structure as ExtraConfig.
267 default: overcloud-control
269 - custom_constraint: glance.image
270 OvercloudControlFlavor:
271 description: Flavor for control nodes to request when deploying.
274 - custom_constraint: nova.flavor
275 ControlVirtualInterface:
277 description: Interface where virtual ip will be assigned.
281 description: Whether to enable fencing in Pacemaker or not.
285 description: Whether to use Galera instead of regular MariaDB.
287 ControllerEnableCephStorage:
289 description: Whether to deploy Ceph Storage (OSD) on the Controller
291 ControllerEnableSwiftStorage:
293 description: Whether to enable Swift Storage on the Controller
298 Additional configuration to inject into the cluster. The format required
299 may be implementation specific, e.g puppet hieradata. Any role specific
300 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
305 Pacemaker fencing configuration. The JSON should have
306 the following structure:
310 "agent": "AGENT_NAME",
311 "host_mac": "HOST_MAC_ADDRESS",
312 "params": {"PARAM_NAME": "PARAM_VALUE"}
320 "agent": "fence_xvm",
321 "host_mac": "52:54:00:aa:bb:cc",
323 "multicast_address": "225.0.0.12",
324 "port": "baremetal_0",
326 "manage_key_file": true,
327 "key_file": "/etc/fence_xvm.key",
328 "key_file_password": "abcdef"
335 description: The filepath of the file to use for logging messages from Glance.
338 GlanceNotifierStrategy:
339 description: Strategy to use for Glance notification queue
344 description: The password for the glance service account, used by the glance services.
349 description: The short name of the Glance backend to use. Should be one
350 of swift, rbd or file
353 - allowed_values: ['swift', 'file', 'rbd']
356 description: The password for the Heat service account, used by the Heat services.
359 HeatStackDomainAdminPassword:
360 description: Password for heat_domain_admin user.
364 KeystoneCACertificate:
366 description: Keystone self-signed certificate authority certificate.
368 KeystoneSigningCertificate:
370 description: Keystone certificate for verifying token validity.
374 description: Keystone key for signing tokens.
377 KeystoneSSLCertificate:
379 description: Keystone certificate for verifying token validity.
381 KeystoneSSLCertificateKey:
383 description: Keystone key for signing tokens.
386 MysqlInnodbBufferPoolSize:
388 Specifies the size of the buffer pool in megabytes. Setting to
389 zero should be interpreted as "no value" and will defer to the
394 description: Configures MySQL max_connections config setting
397 NeutronDnsmasqOptions:
398 default: 'dhcp-option-force=26,1400'
399 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
401 NeutronPublicInterfaceDefaultRoute:
403 description: A custom default route for the NeutronPublicInterface.
405 NeutronPublicInterfaceIP:
407 description: A custom IP address to put onto the NeutronPublicInterface.
409 NeutronPublicInterfaceRawDevice:
411 description: If set, the public interface is a vlan with this device as the raw device.
413 PublicVirtualInterface:
416 Specifies the interface where the public-facing virtual ip will be assigned.
417 This should be int_public when a VLAN is being used.
421 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
426 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
431 description: If set, the contents of an SSL certificate authority file.
435 description: A random string to be used as a salt when hashing to determine mappings in the ring.
440 description: The password for the swift service account, used by the swift proxy services.
445 description: Value of mount_check in Swift account/container/object -server.conf
450 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
453 description: Partition Power to use when building Swift rings
458 description: How many replicas to use in the swift rings.
460 # Compute-specific params
461 CeilometerComputeAgent:
462 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
466 - allowed_values: ['', Present]
470 HypervisorNeutronPhysicalBridge:
473 An OVS bridge to create on each hypervisor. This defaults to br-ex the
474 same as the control plane nodes, as we have a uniform configuration of
475 the openvswitch agent. Typically should not need to be changed.
477 HypervisorNeutronPublicInterface:
479 description: What interface to add to the HypervisorNeutronPhysicalBridge.
481 NeutronNetworkVLANRanges:
482 default: 'datacentre'
484 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
485 Neutron documentation for permitted values. Defaults to permitting any
486 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
487 type: comma_delimited_list
490 default: libvirt.LibvirtDriver
491 NovaComputeExtraConfig:
494 NovaCompute specific configuration to inject into the cluster. Same
495 structure as ExtraConfig.
497 NovaComputeLibvirtType:
500 NovaEnableRbdBackend:
502 description: Whether to enable or not the Rbd backend for Nova
506 default: overcloud-compute
508 - custom_constraint: glance.image
509 OvercloudComputeFlavor:
510 description: Use this flavor
513 - custom_constraint: nova.flavor
516 NeutronTenantNetwork: tenant
517 CeilometerApiNetwork: internal_api
518 MongoDbNetwork: internal_api
519 CinderApiNetwork: internal_api
520 CinderIscsiNetwork: storage
521 GlanceApiNetwork: storage
522 GlanceRegistryNetwork: internal_api
523 KeystoneAdminApiNetwork: internal_api
524 KeystonePublicApiNetwork: internal_api
525 NeutronApiNetwork: internal_api
526 HeatApiNetwork: internal_api
527 NovaApiNetwork: internal_api
528 NovaMetadataNetwork: internal_api
529 NovaVncProxyNetwork: internal_api
530 SwiftMgmtNetwork: storage_mgmt
531 SwiftProxyNetwork: storage
532 HorizonNetwork: internal_api
533 MemcachedNetwork: internal_api
534 RabbitMqNetwork: internal_api
535 RedisNetwork: internal_api
536 MysqlNetwork: internal_api
537 CephClusterNetwork: storage_mgmt
538 CephPublicNetwork: storage
539 ControllerHostnameResolveNetwork: internal_api
540 ComputeHostnameResolveNetwork: internal_api
541 BlockStorageHostnameResolveNetwork: internal_api
542 ObjectStorageHostnameResolveNetwork: internal_api
543 CephStorageHostnameResolveNetwork: storage
544 description: Mapping of service_name -> network name. Typically set
545 via parameter_defaults in the resource registry.
548 # Block storage specific parameters
553 default: overcloud-cinder-volume
555 OvercloudBlockStorageFlavor:
556 description: Flavor for block storage nodes to request when deploying.
559 - custom_constraint: nova.flavor
560 BlockStorageExtraConfig:
563 BlockStorage specific configuration to inject into the cluster. Same
564 structure as ExtraConfig.
567 # Object storage specific parameters
571 OvercloudSwiftStorageFlavor:
572 description: Flavor for Swift storage nodes to request when deploying.
575 - custom_constraint: nova.flavor
577 default: overcloud-swift-storage
579 ObjectStorageExtraConfig:
582 ObjectStorage specific configuration to inject into the cluster. Same
583 structure as ExtraConfig.
587 # Ceph storage specific parameters
592 default: overcloud-ceph-storage
594 OvercloudCephStorageFlavor:
596 description: Flavor for Ceph storage nodes to request when deploying.
599 - custom_constraint: nova.flavor
600 CephStorageExtraConfig:
603 CephStorage specific configuration to inject into the cluster. Same
604 structure as ExtraConfig.
607 # Hostname format for each role
608 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
609 # and %stackname% is replaced with OS::stack_name in the template below.
610 # If you want to use the heat generated names, pass '' (empty string).
611 ControllerHostnameFormat:
613 description: Format for Controller node hostnames
614 default: '%stackname%-controller-%index%'
615 ComputeHostnameFormat:
617 description: Format for Compute node hostnames
618 default: '%stackname%-novacompute-%index%'
619 BlockStorageHostnameFormat:
621 description: Format for BlockStorage node hostnames
622 default: '%stackname%-blockstorage-%index%'
623 ObjectStorageHostnameFormat:
625 description: Format for SwiftStorage node hostnames
626 default: '%stackname%-objectstorage-%index%'
627 CephStorageHostnameFormat:
629 description: Format for CephStorage node hostnames
630 default: '%stackname%-cephstorage-%index%'
632 # Identifiers to trigger tasks on nodes
637 Setting to a previously unused value during stack-update will trigger
638 package update on all nodes
640 # If you want to remove a specific node from a resource group, you can pass
641 # the node name or id as a <Group>RemovalPolicies parameter, for example:
642 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
643 ControllerRemovalPolicies:
647 List of resources to be removed from ControllerResourceGroup when
648 doing an update which requires removal of specific resources.
649 ComputeRemovalPolicies:
653 List of resources to be removed from ComputeResourceGroup when
654 doing an update which requires removal of specific resources.
655 BlockStorageRemovalPolicies:
659 List of resources to be removed from BlockStorageResourceGroup when
660 doing an update which requires removal of specific resources.
661 ObjectStorageRemovalPolicies:
665 List of resources to be removed from ObjectStorageResourceGroup when
666 doing an update which requires removal of specific resources.
667 CephStorageRemovalPolicies:
671 List of resources to be removed from CephStorageResourceGroup when
672 doing an update which requires removal of specific resources.
677 HeatAuthEncryptionKey:
678 type: OS::Heat::RandomString
681 type: OS::Heat::RandomString
686 type: OS::Heat::RandomString
691 type: OS::Heat::ResourceGroup
694 count: {get_param: ControllerCount}
695 removal_policies: {get_param: ControllerRemovalPolicies}
697 type: OS::TripleO::Controller
699 AdminPassword: {get_param: AdminPassword}
700 AdminToken: {get_param: AdminToken}
701 CeilometerBackend: {get_param: CeilometerBackend}
702 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
703 CeilometerPassword: {get_param: CeilometerPassword}
704 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
705 CinderPassword: {get_param: CinderPassword}
706 CinderISCSIHelper: {get_param: CinderISCSIHelper}
707 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
708 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
709 CloudName: {get_param: CloudName}
710 ControlVirtualInterface: {get_param: ControlVirtualInterface}
711 ControllerExtraConfig: {get_param: controllerExtraConfig}
712 Debug: {get_param: Debug}
713 EnableFencing: {get_param: EnableFencing}
714 EnableGalera: {get_param: EnableGalera}
715 EnableCephStorage: {get_param: ControllerEnableCephStorage}
716 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
717 ExtraConfig: {get_param: ExtraConfig}
718 FencingConfig: {get_param: FencingConfig}
719 Flavor: {get_param: OvercloudControlFlavor}
720 GlancePort: {get_param: GlancePort}
721 GlanceProtocol: {get_param: GlanceProtocol}
722 GlancePassword: {get_param: GlancePassword}
723 GlanceBackend: {get_param: GlanceBackend}
724 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
725 GlanceLogFile: {get_param: GlanceLogFile}
726 HeatPassword: {get_param: HeatPassword}
727 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
728 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
729 HorizonSecret: {get_resource: HorizonSecret}
730 Image: {get_param: controllerImage}
731 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
732 KeyName: {get_param: KeyName}
733 KeystoneCACertificate: {get_param: KeystoneCACertificate}
734 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
735 KeystoneSigningKey: {get_param: KeystoneSigningKey}
736 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
737 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
738 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
739 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
740 MysqlMaxConnections: {get_param: MysqlMaxConnections}
741 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
742 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
743 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
744 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
745 NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
746 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
747 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
748 NeutronPublicInterface: {get_param: NeutronPublicInterface}
749 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
750 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
751 NeutronPassword: {get_param: NeutronPassword}
752 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
753 NeutronDVR: {get_param: NeutronDVR}
754 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
755 NeutronAgentMode: {get_param: NeutronAgentMode}
756 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
757 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
758 NeutronL3HA: {get_param: NeutronL3HA}
759 NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
760 NeutronNetworkType: {get_param: NeutronNetworkType}
761 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
762 NovaPassword: {get_param: NovaPassword}
763 NtpServer: {get_param: NtpServer}
764 MongoDbNoJournal: {get_param: MongoDbNoJournal}
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, ip_address]}
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, 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]}]}
898 ExtraConfig: {get_param: ExtraConfig}
899 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
902 type: OS::Heat::ResourceGroup
905 count: {get_param: ObjectStorageCount}
906 removal_policies: {get_param: ObjectStorageRemovalPolicies}
908 type: OS::TripleO::ObjectStorage
910 KeyName: {get_param: KeyName}
911 Flavor: {get_param: OvercloudSwiftStorageFlavor}
912 HashSuffix: {get_param: SwiftHashSuffix}
913 MountCheck: {get_param: SwiftMountCheck}
914 MinPartHours: {get_param: SwiftMinPartHours}
915 PartPower: {get_param: SwiftPartPower}
916 Image: {get_param: SwiftStorageImage}
917 Replicas: { get_param: SwiftReplicas}
918 NtpServer: {get_param: NtpServer}
919 UpdateIdentifier: {get_param: UpdateIdentifier}
920 ServiceNetMap: {get_param: ServiceNetMap}
923 template: {get_param: ObjectStorageHostnameFormat}
925 '%stackname%': {get_param: 'OS::stack_name'}
926 ExtraConfig: {get_param: ExtraConfig}
927 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
930 type: OS::Heat::ResourceGroup
933 count: {get_param: CephStorageCount}
934 removal_policies: {get_param: CephStorageRemovalPolicies}
936 type: OS::TripleO::CephStorage
938 Image: {get_param: CephStorageImage}
939 KeyName: {get_param: KeyName}
940 Flavor: {get_param: OvercloudCephStorageFlavor}
941 NtpServer: {get_param: NtpServer}
942 ServiceNetMap: {get_param: ServiceNetMap}
943 UpdateIdentifier: {get_param: UpdateIdentifier}
946 template: {get_param: CephStorageHostnameFormat}
948 '%stackname%': {get_param: 'OS::stack_name'}
949 ExtraConfig: {get_param: ExtraConfig}
950 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
953 type: OS::TripleO::Network::Ports::NetIpListMap
955 ExternalIpList: {get_attr: [Controller, external_ip_address]}
956 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
957 StorageIpList: {get_attr: [Controller, storage_ip_address]}
958 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
959 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
962 type: OS::TripleO::AllNodes::SoftwareConfig
964 compute_hosts: {get_attr: [Compute, hosts_entry]}
965 controller_hosts: {get_attr: [Controller, hosts_entry]}
966 controller_ips: {get_attr: [Controller, ip_address]}
967 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
968 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
969 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
970 controller_names: {get_attr: [Controller, hostname]}
971 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
972 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
973 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
974 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
975 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
976 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
977 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
978 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
979 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
980 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
981 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
982 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
983 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
984 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
985 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
986 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
987 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
990 type: OS::Heat::RandomString
994 MysqlClusterUniquePart:
995 type: OS::Heat::RandomString
1000 type: OS::Heat::RandomString
1003 salt: {get_param: RabbitCookieSalt}
1005 # creates the network architecture
1007 type: OS::TripleO::Network
1010 type: OS::Neutron::Port
1011 depends_on: Networks
1013 name: control_virtual_ip
1014 network_id: {get_param: NeutronControlPlaneID}
1015 fixed_ips: {get_param: ControlFixedIPs}
1016 replacement_policy: AUTO
1019 depends_on: Networks
1020 type: OS::TripleO::Controller::Ports::RedisVipPort
1022 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1023 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1024 PortName: redis_virtual_ip
1025 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1027 # The public VIP is on the External net, falls back to ctlplane
1029 depends_on: Networks
1030 type: OS::TripleO::Controller::Ports::ExternalPort
1032 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1033 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1034 PortName: public_virtual_ip
1035 FixedIPs: {get_param: PublicVirtualFixedIPs}
1037 InternalApiVirtualIP:
1038 depends_on: Networks
1039 type: OS::TripleO::Controller::Ports::InternalApiPort
1041 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1042 PortName: internal_api_virtual_ip
1045 depends_on: Networks
1046 type: OS::TripleO::Controller::Ports::StoragePort
1048 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1049 PortName: storage_virtual_ip
1051 StorageMgmtVirtualIP:
1052 depends_on: Networks
1053 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1055 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1056 PortName: storage_management_virtual_ip
1059 type: OS::TripleO::Network::Ports::NetIpMap
1061 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
1062 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1063 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1064 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1065 # No tenant VIP required
1068 type: OS::TripleO::VipConfig
1071 type: OS::Heat::StructuredDeployments
1073 config: {get_resource: VipConfig}
1074 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1076 # service VIP mappings
1077 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1078 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1079 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1080 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1081 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1082 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1083 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1084 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1085 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1086 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1087 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1088 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1089 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1090 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1091 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1092 # direct configuration of Virtual IPs for each network
1093 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1094 public_virtual_ip: {get_attr: [PublicVirtualIP, ip_address]}
1095 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1096 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1097 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1099 ControllerBootstrapNodeConfig:
1100 type: OS::TripleO::BootstrapNode::SoftwareConfig
1102 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1103 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1105 ControllerBootstrapNodeDeployment:
1106 type: OS::Heat::StructuredDeployments
1108 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1109 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1111 ControllerSwiftDeployment:
1112 type: OS::Heat::StructuredDeployments
1114 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1115 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1117 ObjectStorageSwiftDeployment:
1118 type: OS::Heat::StructuredDeployments
1120 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1121 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1123 SwiftDevicesAndProxyConfig:
1124 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1126 controller_swift_devices: {get_attr: [Controller, swift_device]}
1127 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1128 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1130 ComputeCephDeployment:
1131 type: OS::Heat::StructuredDeployments
1133 config: {get_attr: [CephClusterConfig, config_id]}
1134 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1136 ControllerCephDeployment:
1137 type: OS::Heat::StructuredDeployments
1139 config: {get_attr: [CephClusterConfig, config_id]}
1140 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1142 CephStorageCephDeployment:
1143 type: OS::Heat::StructuredDeployments
1145 config: {get_attr: [CephClusterConfig, config_id]}
1146 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1149 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1151 ceph_fsid: {get_param: CephClusterFSID}
1152 ceph_mon_key: {get_param: CephMonKey}
1153 ceph_admin_key: {get_param: CephAdminKey}
1154 ceph_mon_names: {get_attr: [Controller, hostname]}
1155 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1157 ControllerClusterConfig:
1158 type: OS::Heat::StructuredConfig
1160 group: os-apply-config
1163 nodes: {get_attr: [Controller, corosync_node]}
1167 nodes: {get_attr: [Controller, hostname]}
1169 nodes: {get_attr: [Controller, corosync_node]}
1171 nodes: {get_attr: [Controller, corosync_node]}
1173 ControllerClusterDeployment:
1174 type: OS::Heat::StructuredDeployments
1176 config: {get_resource: ControllerClusterConfig}
1177 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1179 ControllerAllNodesDeployment:
1180 type: OS::Heat::StructuredDeployments
1182 config: {get_attr: [allNodesConfig, config_id]}
1183 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1185 ComputeAllNodesDeployment:
1186 type: OS::Heat::StructuredDeployments
1188 config: {get_attr: [allNodesConfig, config_id]}
1189 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1191 BlockStorageAllNodesDeployment:
1192 type: OS::Heat::StructuredDeployments
1194 config: {get_attr: [allNodesConfig, config_id]}
1195 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1197 ObjectStorageAllNodesDeployment:
1198 type: OS::Heat::StructuredDeployments
1200 config: {get_attr: [allNodesConfig, config_id]}
1201 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1203 CephStorageAllNodesDeployment:
1204 type: OS::Heat::StructuredDeployments
1206 config: {get_attr: [allNodesConfig, config_id]}
1207 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1209 # Nested stack deployment runs after all other controller deployments
1210 ControllerNodesPostDeployment:
1211 type: OS::TripleO::ControllerPostDeployment
1212 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1214 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1215 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1217 ComputeNodesPostDeployment:
1218 type: OS::TripleO::ComputePostDeployment
1219 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1221 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1222 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1224 ObjectStorageNodesPostDeployment:
1225 type: OS::TripleO::ObjectStoragePostDeployment
1226 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1228 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1229 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1232 BlockStorageNodesPostDeployment:
1233 type: OS::TripleO::BlockStoragePostDeployment
1234 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1236 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1237 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1239 CephStorageNodesPostDeployment:
1240 type: OS::TripleO::CephStoragePostDeployment
1241 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1243 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1244 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1248 description: URL for the Overcloud Keystone service
1253 - {get_attr: [PublicVirtualIP, ip_address]}
1256 description: Controller VIP for public API endpoints
1257 value: {get_attr: [PublicVirtualIP, ip_address]}
1258 CeilometerInternalVip:
1259 description: VIP for Ceilometer API internal endpoint
1260 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1262 description: VIP for Cinder API internal endpoint
1263 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1265 description: VIP for Glance API internal endpoint
1266 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1268 description: VIP for Heat API internal endpoint
1269 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1270 KeystoneInternalVip:
1271 description: VIP for Keystone API internal endpoint
1272 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1274 description: VIP for Neutron API internal endpoint
1275 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1277 description: VIP for Nova API internal endpoint
1278 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1280 description: VIP for Swift Proxy internal endpoint
1281 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}