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.
61 DefaultSignalTransport:
63 description: Transport to use for software-config signals.
66 - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
69 description: Glance port.
73 description: Protocol to use when connecting to glance, set to https for SSL.
76 default: 'REBUILD_PRESERVE_EPHEMERAL'
77 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
81 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
84 - custom_constraint: nova.keypair
85 NeutronBridgeMappings:
87 The OVS logical->physical bridge mappings to use. See the Neutron
88 documentation for details. Defaults to mapping br-ex - the external
89 bridge on hosts - to a physical name 'datacentre' which can be used
90 to create provider networks (and we use this for the default floating
91 network) - if changing this either use different post-install network
92 scripts or be sure to keep 'datacentre' as a mapping network name.
94 default: "datacentre:br-ex"
95 NeutronControlPlaneID:
98 description: Neutron ID for ctlplane network.
99 NeutronEnableTunnelling:
104 default: 'datacentre'
106 If set, flat networks to configure in neutron plugins. Defaults to
107 'datacentre' to permit external network creation.
110 description: The tenant network type for Neutron, either gre or vxlan.
114 description: The password for the neutron service account, used by neutron agents.
117 NeutronPublicInterface:
119 description: What interface to bridge onto br-ex for network nodes.
121 NeutronPublicInterfaceTag:
124 VLAN tag for creating a public VLAN. The tag will be used to
125 create an access port on the exterior bridge for each control plane node,
126 and that port will be given the IP address returned by neutron from the
127 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
128 overcloud.yaml to include the deployment of VLAN ports to the control
131 NeutronComputeAgentMode:
133 description: Agent mode for the neutron-l3-agent on the compute hosts
137 description: Agent mode for the neutron-l3-agent on the controller hosts
141 description: Whether to configure Neutron Distributed Virtual Routers
143 NeutronMetadataProxySharedSecret:
145 description: Shared secret to prevent spoofing
150 The tunnel types for the Neutron tenant network. To specify multiple
151 values, use a comma separated string, like so: 'gre,vxlan'
153 NeutronMechanismDrivers:
154 default: 'openvswitch'
156 The mechanism drivers for the Neutron tenant network. To specify multiple
157 values, use a comma separated string, like so: 'openvswitch,l2_population'
159 NeutronAllowL3AgentFailover:
161 description: Allow automatic l3-agent failover
165 description: Whether to enable l3-agent HA
169 description: The password for the nova service account, used by nova-api.
175 PublicVirtualFixedIPs:
178 Control the IP allocation for the PublicVirtualInterface port. E.g.
179 [{'ip_address':'1.2.3.4'}]
181 PublicVirtualNetwork:
185 Neutron network to allocate public virtual IP port on.
189 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
190 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
193 description: The username for RabbitMQ
197 description: The password for RabbitMQ
203 Rabbit client subscriber parameter to specify
204 an SSL connection to the RabbitMQ host.
208 description: Set rabbit subscriber port, change this if using SSL
210 SnmpdReadonlyUserName:
211 default: ro_snmp_user
212 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
214 SnmpdReadonlyUserPassword:
216 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
220 # Controller-specific params
223 description: The keystone auth secret.
226 CinderEnableRbdBackend:
228 description: Whether to enable or not the Rbd backend for Cinder
230 CinderLVMLoopDeviceSize:
232 description: The size of the loopback file used by the cinder LVM driver.
236 description: The password for the cinder service account, used by cinder-api.
241 description: The iSCSI helper to use with cinder.
246 controllerExtraConfig:
249 Controller specific configuration to inject into the cluster. Same
250 structure as ExtraConfig.
254 default: overcloud-control
256 - custom_constraint: glance.image
257 OvercloudControlFlavor:
258 description: Flavor for control nodes to request when deploying.
261 - custom_constraint: nova.flavor
262 ControlVirtualInterface:
264 description: Interface where virtual ip will be assigned.
268 description: Whether to use Galera instead of regular MariaDB.
272 description: If enabled services will be monitored by Pacemaker; it
273 will manage VIPs as well, in place of Keepalived.
275 ControllerEnableCephStorage:
277 description: Whether to deploy Ceph Storage (OSD) on the Controller
279 ControllerEnableSwiftStorage:
281 description: Whether to enable Swift Storage on the Controller
286 Additional configuration to inject into the cluster. The JSON should have
287 the following structure:
290 [{"section": "SECTIONNAME",
292 [{"option": "OPTIONNAME",
303 [{"section": "default",
305 [{"option": "force_config_drive",
312 [{"option": "driver",
313 "value": "nova.cells.rpc_driver.CellsRPCDriver"
322 description: The filepath of the file to use for logging messages from Glance.
325 GlanceNotifierStrategy:
326 description: Strategy to use for Glance notification queue
331 description: The password for the glance service account, used by the glance services.
336 description: The short name of the Glance backend to use. Should be one
337 of swift, rbd or file
340 - allowed_values: ['swift', 'file', 'rbd']
343 description: The password for the Heat service account, used by the Heat services.
346 HeatStackDomainAdminPassword:
347 description: Password for heat_domain_admin user.
351 KeystoneCACertificate:
353 description: Keystone self-signed certificate authority certificate.
355 KeystoneSigningCertificate:
357 description: Keystone certificate for verifying token validity.
361 description: Keystone key for signing tokens.
364 KeystoneSSLCertificate:
366 description: Keystone certificate for verifying token validity.
368 KeystoneSSLCertificateKey:
370 description: Keystone key for signing tokens.
373 MysqlInnodbBufferPoolSize:
375 Specifies the size of the buffer pool in megabytes. Setting to
376 zero should be interpreted as "no value" and will defer to the
380 NeutronDnsmasqOptions:
381 default: 'dhcp-option-force=26,1400'
382 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
384 NeutronPublicInterfaceDefaultRoute:
386 description: A custom default route for the NeutronPublicInterface.
388 NeutronPublicInterfaceIP:
390 description: A custom IP address to put onto the NeutronPublicInterface.
392 NeutronPublicInterfaceRawDevice:
394 description: If set, the public interface is a vlan with this device as the raw device.
396 PublicVirtualInterface:
399 Specifies the interface where the public-facing virtual ip will be assigned.
400 This should be int_public when a VLAN is being used.
404 default: '' # Has to be here because of the ignored empty value bug
407 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
412 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
417 description: If set, the contents of an SSL certificate authority file.
421 description: A random string to be used as a salt when hashing to determine mappings in the ring.
426 description: The password for the swift service account, used by the swift proxy services.
431 description: Value of mount_check in Swift account/container/object -server.conf
436 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
439 description: Partition Power to use when building Swift rings
444 description: How many replicas to use in the swift rings.
446 # Compute-specific params
447 CeilometerComputeAgent:
448 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
452 - allowed_values: ['', Present]
456 HypervisorNeutronPhysicalBridge:
459 An OVS bridge to create on each hypervisor. This defaults to br-ex the
460 same as the control plane nodes, as we have a uniform configuration of
461 the openvswitch agent. Typically should not need to be changed.
463 HypervisorNeutronPublicInterface:
465 description: What interface to add to the HypervisorNeutronPhysicalBridge.
467 NeutronNetworkVLANRanges:
468 default: 'datacentre'
470 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
471 Neutron documentation for permitted values. Defaults to permitting any
472 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
473 type: comma_delimited_list
476 default: libvirt.LibvirtDriver
477 NovaComputeExtraConfig:
480 NovaCompute specific configuration to inject into the cluster. Same
481 structure as ExtraConfig.
483 NovaComputeLibvirtType:
486 NovaEnableRbdBackend:
488 description: Whether to enable or not the Rbd backend for Nova
492 default: overcloud-compute
494 - custom_constraint: glance.image
495 OvercloudComputeFlavor:
496 description: Use this flavor
499 - custom_constraint: nova.flavor
502 NeutronLocalIp: tenant
503 CeilometerApiNetwork: internal_api
504 MongoDbNetwork: internal_api
505 CinderApiNetwork: internal_api
506 CinderIscsiNetwork: storage
507 GlanceApiNetwork: storage
508 GlanceRegistryNetwork: internal_api
509 KeystoneAdminApiNetwork: internal_api
510 KeystonePublicApiNetwork: internal_api
511 NeutronApiNetwork: internal_api
512 HeatApiNetwork: internal_api
513 NovaApiNetwork: internal_api
514 NovaMetadataNetwork: internal_api
515 NovaVncProxyNetwork: internal_api
516 SwiftMgmtNetwork: storage_mgmt
517 SwiftProxyNetwork: storage
518 HorizonNetwork: internal_api
519 MemcachedNetwork: internal_api
520 RabbitMqNetwork: internal_api
521 RedisNetwork: internal_api
522 MysqlNetwork: internal_api
523 CephClusterNetwork: storage_mgmt
524 CephPublicNetwork: storage
525 description: Mapping of service_name -> network name. Typically set
526 via parameter_defaults in the resource registry.
529 # Block storage specific parameters
534 default: overcloud-cinder-volume
536 OvercloudBlockStorageFlavor:
537 description: Flavor for block storage nodes to request when deploying.
540 - custom_constraint: nova.flavor
542 # Object storage specific parameters
546 OvercloudSwiftStorageFlavor:
547 description: Flavor for Swift storage nodes to request when deploying.
550 - custom_constraint: nova.flavor
552 default: overcloud-swift-storage
555 # Ceph storage specific parameters
560 default: overcloud-ceph-storage
562 OvercloudCephStorageFlavor:
564 description: Flavor for Ceph storage nodes to request when deploying.
567 - custom_constraint: nova.flavor
569 # Hostname format for each role
570 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
571 # and %stackname% is replaced with OS::stack_name in the template below.
572 # If you want to use the heat generated names, pass '' (empty string).
573 ControllerHostnameFormat:
575 description: Format for Controller node hostnames
576 default: '%stackname%-controller-%index%'
577 ComputeHostnameFormat:
579 description: Format for Compute node hostnames
580 default: '%stackname%-novacompute-%index%'
581 BlockStorageHostnameFormat:
583 description: Format for BlockStorage node hostnames
584 default: '%stackname%-blockstorage-%index%'
585 ObjectStorageHostnameFormat:
587 description: Format for SwiftStorage node hostnames
588 default: '%stackname%-objectstorage-%index%'
589 CephStorageHostnameFormat:
591 description: Format for CephStorage node hostnames
592 default: '%stackname%-cephstorage-%index%'
594 # Identifiers to trigger tasks on nodes
599 Setting to a previously unused value during stack-update will trigger
600 package update on all nodes
606 HeatAuthEncryptionKey:
607 type: OS::Heat::RandomString
610 type: OS::Heat::RandomString
615 type: OS::Heat::RandomString
620 type: OS::Heat::ResourceGroup
623 count: {get_param: ControllerCount}
625 type: OS::TripleO::Controller
627 AdminPassword: {get_param: AdminPassword}
628 AdminToken: {get_param: AdminToken}
629 CeilometerBackend: {get_param: CeilometerBackend}
630 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
631 CeilometerPassword: {get_param: CeilometerPassword}
632 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
633 CinderPassword: {get_param: CinderPassword}
634 CinderISCSIHelper: {get_param: CinderISCSIHelper}
635 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
636 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
637 CloudName: {get_param: CloudName}
638 ControlVirtualInterface: {get_param: ControlVirtualInterface}
639 ControllerExtraConfig: {get_param: controllerExtraConfig}
640 Debug: {get_param: Debug}
641 EnableGalera: {get_param: EnableGalera}
642 EnablePacemaker: {get_param: EnablePacemaker}
643 EnableCephStorage: {get_param: ControllerEnableCephStorage}
644 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
645 ExtraConfig: {get_param: ExtraConfig}
646 Flavor: {get_param: OvercloudControlFlavor}
647 GlancePort: {get_param: GlancePort}
648 GlanceProtocol: {get_param: GlanceProtocol}
649 GlancePassword: {get_param: GlancePassword}
650 GlanceBackend: {get_param: GlanceBackend}
651 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
652 GlanceLogFile: {get_param: GlanceLogFile}
653 HeatPassword: {get_param: HeatPassword}
654 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
655 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
656 HorizonSecret: {get_resource: HorizonSecret}
657 Image: {get_param: controllerImage}
658 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
659 KeyName: {get_param: KeyName}
660 KeystoneCACertificate: {get_param: KeystoneCACertificate}
661 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
662 KeystoneSigningKey: {get_param: KeystoneSigningKey}
663 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
664 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
665 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
666 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
667 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
668 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
669 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
670 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
671 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
672 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
673 NeutronPublicInterface: {get_param: NeutronPublicInterface}
674 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
675 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
676 NeutronPassword: {get_param: NeutronPassword}
677 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
678 NeutronDVR: {get_param: NeutronDVR}
679 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
680 NeutronAgentMode: {get_param: NeutronAgentMode}
681 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
682 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
683 NeutronL3HA: {get_param: NeutronL3HA}
684 NeutronNetworkType: {get_param: NeutronNetworkType}
685 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
686 NovaPassword: {get_param: NovaPassword}
687 NtpServer: {get_param: NtpServer}
688 PcsdPassword: {get_resource: PcsdPassword}
689 PublicVirtualInterface: {get_param: PublicVirtualInterface}
690 RabbitPassword: {get_param: RabbitPassword}
691 RabbitUserName: {get_param: RabbitUserName}
692 RabbitCookie: {get_attr: [RabbitCookie, value]}
693 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
694 RabbitClientPort: {get_param: RabbitClientPort}
695 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
696 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
697 RedisVirtualIP: {get_param: RedisVirtualIP}
698 SSLCertificate: {get_param: SSLCertificate}
699 SSLKey: {get_param: SSLKey}
700 SSLCACertificate: {get_param: SSLCACertificate}
701 SwiftHashSuffix: {get_param: SwiftHashSuffix}
702 SwiftMountCheck: {get_param: SwiftMountCheck}
703 SwiftMinPartHours: {get_param: SwiftMinPartHours}
704 SwiftPartPower: {get_param: SwiftPartPower}
705 SwiftPassword: {get_param: SwiftPassword}
706 SwiftReplicas: { get_param: SwiftReplicas}
707 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
708 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
709 ServiceNetMap: {get_param: ServiceNetMap}
710 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
711 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
712 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
713 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
714 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
715 UpdateIdentifier: {get_param: UpdateIdentifier}
718 template: {get_param: ControllerHostnameFormat}
720 '%stackname%': {get_param: 'OS::stack_name'}
723 type: OS::Heat::ResourceGroup
726 count: {get_param: ComputeCount}
728 type: OS::TripleO::Compute
730 AdminPassword: {get_param: AdminPassword}
731 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
732 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
733 CeilometerPassword: {get_param: CeilometerPassword}
734 Debug: {get_param: Debug}
735 ExtraConfig: {get_param: ExtraConfig}
736 Flavor: {get_param: OvercloudComputeFlavor}
737 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
738 GlancePort: {get_param: GlancePort}
739 GlanceProtocol: {get_param: GlanceProtocol}
740 Image: {get_param: NovaImage}
741 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
742 KeyName: {get_param: KeyName}
743 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
744 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
745 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
746 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
747 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
748 NeutronNetworkType: {get_param: NeutronNetworkType}
749 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
750 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
751 NeutronPassword: {get_param: NeutronPassword}
752 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
753 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
754 NeutronDVR: {get_param: NeutronDVR}
755 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
756 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
757 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
758 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
759 # L3 HA and Failover is not relevant for Computes, should be removed
760 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
761 NeutronL3HA: {get_param: NeutronL3HA}
762 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
763 NovaComputeDriver: {get_param: NovaComputeDriver}
764 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
765 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
766 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
767 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
768 NovaPassword: {get_param: NovaPassword}
769 NtpServer: {get_param: NtpServer}
770 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
771 RabbitPassword: {get_param: RabbitPassword}
772 RabbitUserName: {get_param: RabbitUserName}
773 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
774 RabbitClientPort: {get_param: RabbitClientPort}
775 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
776 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
777 ServiceNetMap: {get_param: ServiceNetMap}
778 UpdateIdentifier: {get_param: UpdateIdentifier}
781 template: {get_param: ComputeHostnameFormat}
783 '%stackname%': {get_param: 'OS::stack_name'}
786 type: OS::Heat::ResourceGroup
789 count: {get_param: BlockStorageCount}
791 type: OS::TripleO::BlockStorage
793 Debug: {get_param: Debug}
794 Image: {get_param: BlockStorageImage}
795 CinderISCSIHelper: {get_param: CinderISCSIHelper}
796 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
797 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
798 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
799 CinderPassword: {get_param: CinderPassword}
800 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
801 KeyName: {get_param: KeyName}
802 Flavor: {get_param: OvercloudBlockStorageFlavor}
803 RabbitPassword: {get_param: RabbitPassword}
804 RabbitUserName: {get_param: RabbitUserName}
805 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
806 RabbitClientPort: {get_param: RabbitClientPort}
807 NtpServer: {get_param: NtpServer}
808 UpdateIdentifier: {get_param: UpdateIdentifier}
811 template: {get_param: BlockStorageHostnameFormat}
813 '%stackname%': {get_param: 'OS::stack_name'}
816 type: OS::Heat::ResourceGroup
819 count: {get_param: ObjectStorageCount}
821 type: OS::TripleO::ObjectStorage
823 KeyName: {get_param: KeyName}
824 Flavor: {get_param: OvercloudSwiftStorageFlavor}
825 HashSuffix: {get_param: SwiftHashSuffix}
826 MountCheck: {get_param: SwiftMountCheck}
827 MinPartHours: {get_param: SwiftMinPartHours}
828 PartPower: {get_param: SwiftPartPower}
829 Image: {get_param: SwiftStorageImage}
830 Replicas: { get_param: SwiftReplicas}
831 NtpServer: {get_param: NtpServer}
832 UpdateIdentifier: {get_param: UpdateIdentifier}
833 ServiceNetMap: {get_param: ServiceNetMap}
836 template: {get_param: ObjectStorageHostnameFormat}
838 '%stackname%': {get_param: 'OS::stack_name'}
841 type: OS::Heat::ResourceGroup
844 count: {get_param: CephStorageCount}
846 type: OS::TripleO::CephStorage
848 Image: {get_param: CephStorageImage}
849 KeyName: {get_param: KeyName}
850 Flavor: {get_param: OvercloudCephStorageFlavor}
851 NtpServer: {get_param: NtpServer}
852 ServiceNetMap: {get_param: ServiceNetMap}
853 UpdateIdentifier: {get_param: UpdateIdentifier}
856 template: {get_param: CephStorageHostnameFormat}
858 '%stackname%': {get_param: 'OS::stack_name'}
861 type: OS::TripleO::Network::Ports::NetIpListMap
863 ExternalIpList: {get_attr: [Controller, external_ip_address]}
864 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
865 StorageIpList: {get_attr: [Controller, storage_ip_address]}
866 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
867 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
870 type: OS::TripleO::AllNodes::SoftwareConfig
872 compute_hosts: {get_attr: [Compute, hosts_entry]}
873 controller_hosts: {get_attr: [Controller, hosts_entry]}
874 controller_ips: {get_attr: [Controller, ip_address]}
875 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
876 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
877 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
878 controller_names: {get_attr: [Controller, hostname]}
879 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
880 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
881 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
882 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
883 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
884 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
885 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
886 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
887 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
888 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
889 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
890 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
891 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
892 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
893 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
894 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
895 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
898 type: OS::Heat::RandomString
902 MysqlClusterUniquePart:
903 type: OS::Heat::RandomString
908 type: OS::Heat::RandomString
911 salt: {get_param: RabbitCookieSalt}
913 # creates the network architecture
915 type: OS::TripleO::Network
918 type: OS::Neutron::Port
921 name: control_virtual_ip
922 network_id: {get_param: NeutronControlPlaneID}
923 fixed_ips: {get_param: ControlFixedIPs}
924 replacement_policy: AUTO
928 type: OS::Neutron::Port
931 name: public_virtual_ip
932 network: {get_param: PublicVirtualNetwork}
933 fixed_ips: {get_param: PublicVirtualFixedIPs}
934 replacement_policy: AUTO
936 InternalApiVirtualIP:
938 type: OS::TripleO::Controller::Ports::InternalApiPort
940 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
941 PortName: internal_api_virtual_ip
945 type: OS::TripleO::Controller::Ports::StoragePort
947 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
948 PortName: storage_virtual_ip
950 StorageMgmtVirtualIP:
952 type: OS::TripleO::Controller::Ports::StorageMgmtPort
954 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
955 PortName: storage_management_virtual_ip
958 type: OS::TripleO::Network::Ports::NetIpMap
960 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
961 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
962 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
963 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
964 # No tenant VIP required
967 type: OS::TripleO::VipConfig
970 type: OS::Heat::StructuredDeployments
972 config: {get_resource: VipConfig}
973 servers: {get_attr: [Controller, attributes, nova_server_resource]}
975 # service VIP mappings
976 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
977 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
978 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
979 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
980 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
981 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
982 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
983 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
984 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
985 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
986 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
987 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
988 redis_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
989 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
990 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
991 # direct configuration of Virtual IPs for each network
992 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
993 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
994 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
995 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
996 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
998 ControllerBootstrapNodeConfig:
999 type: OS::TripleO::BootstrapNode::SoftwareConfig
1001 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1002 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1004 ControllerBootstrapNodeDeployment:
1005 type: OS::Heat::StructuredDeployments
1007 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1008 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1009 signal_transport: NO_SIGNAL
1011 ControllerSwiftDeployment:
1012 type: OS::Heat::StructuredDeployments
1014 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1015 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1016 signal_transport: NO_SIGNAL
1018 ObjectStorageSwiftDeployment:
1019 type: OS::Heat::StructuredDeployments
1021 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1022 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1023 signal_transport: NO_SIGNAL
1025 SwiftDevicesAndProxyConfig:
1026 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1028 controller_swift_devices: {get_attr: [Controller, swift_device]}
1029 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1030 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1032 ComputeCephDeployment:
1033 type: OS::Heat::StructuredDeployments
1035 config: {get_attr: [CephClusterConfig, config_id]}
1036 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1038 ControllerCephDeployment:
1039 type: OS::Heat::StructuredDeployments
1041 config: {get_attr: [CephClusterConfig, config_id]}
1042 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1044 CephStorageCephDeployment:
1045 type: OS::Heat::StructuredDeployments
1047 config: {get_attr: [CephClusterConfig, config_id]}
1048 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1051 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1053 ceph_fsid: {get_param: CephClusterFSID}
1054 ceph_mon_key: {get_param: CephMonKey}
1055 ceph_admin_key: {get_param: CephAdminKey}
1056 ceph_mon_names: {get_attr: [Controller, hostname]}
1057 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1059 ControllerClusterConfig:
1060 type: OS::Heat::StructuredConfig
1064 nodes: {get_attr: [Controller, corosync_node]}
1068 nodes: {get_attr: [Controller, hostname]}
1070 nodes: {get_attr: [Controller, corosync_node]}
1072 nodes: {get_attr: [Controller, corosync_node]}
1074 ControllerClusterDeployment:
1075 type: OS::Heat::StructuredDeployments
1077 config: {get_resource: ControllerClusterConfig}
1078 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1079 signal_transport: NO_SIGNAL
1081 ControllerAllNodesDeployment:
1082 type: OS::Heat::StructuredDeployments
1084 config: {get_attr: [allNodesConfig, config_id]}
1085 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1087 ComputeAllNodesDeployment:
1088 type: OS::Heat::StructuredDeployments
1090 config: {get_attr: [allNodesConfig, config_id]}
1091 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1093 BlockStorageAllNodesDeployment:
1094 type: OS::Heat::StructuredDeployments
1096 config: {get_attr: [allNodesConfig, config_id]}
1097 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1099 ObjectStorageAllNodesDeployment:
1100 type: OS::Heat::StructuredDeployments
1102 config: {get_attr: [allNodesConfig, config_id]}
1103 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1105 CephStorageAllNodesDeployment:
1106 type: OS::Heat::StructuredDeployments
1108 config: {get_attr: [allNodesConfig, config_id]}
1109 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1111 # Nested stack deployment runs after all other controller deployments
1112 ControllerNodesPostDeployment:
1113 type: OS::TripleO::ControllerPostDeployment
1114 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1116 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1118 ComputeNodesPostDeployment:
1119 type: OS::TripleO::ComputePostDeployment
1120 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1122 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1124 ObjectStorageNodesPostDeployment:
1125 type: OS::TripleO::ObjectStoragePostDeployment
1126 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1128 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1130 BlockStorageNodesPostDeployment:
1131 type: OS::TripleO::BlockStoragePostDeployment
1132 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1134 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1136 CephStorageNodesPostDeployment:
1137 type: OS::TripleO::CephStoragePostDeployment
1138 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1140 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1144 description: URL for the Overcloud Keystone service
1149 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}