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 NeutronBridgeMappings:
81 The OVS logical->physical bridge mappings to use. See the Neutron
82 documentation for details. Defaults to mapping br-ex - the external
83 bridge on hosts - to a physical name 'datacentre' which can be used
84 to create provider networks (and we use this for the default floating
85 network) - if changing this either use different post-install network
86 scripts or be sure to keep 'datacentre' as a mapping network name.
88 default: "datacentre:br-ex"
89 NeutronControlPlaneID:
92 description: Neutron ID for ctlplane network.
93 NeutronEnableTunnelling:
100 If set, flat networks to configure in neutron plugins. Defaults to
101 'datacentre' to permit external network creation.
104 description: The tenant network type for Neutron, either gre or vxlan.
108 description: The password for the neutron service account, used by neutron agents.
111 NeutronPublicInterface:
113 description: What interface to bridge onto br-ex for network nodes.
115 NeutronPublicInterfaceTag:
118 VLAN tag for creating a public VLAN. The tag will be used to
119 create an access port on the exterior bridge for each control plane node,
120 and that port will be given the IP address returned by neutron from the
121 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
122 overcloud.yaml to include the deployment of VLAN ports to the control
125 NeutronComputeAgentMode:
127 description: Agent mode for the neutron-l3-agent on the compute hosts
131 description: Agent mode for the neutron-l3-agent on the controller hosts
135 description: Whether to configure Neutron Distributed Virtual Routers
137 NeutronMetadataProxySharedSecret:
139 description: Shared secret to prevent spoofing
144 The tunnel types for the Neutron tenant network. To specify multiple
145 values, use a comma separated string, like so: 'gre,vxlan'
147 NeutronMechanismDrivers:
148 default: 'openvswitch'
150 The mechanism drivers for the Neutron tenant network. To specify multiple
151 values, use a comma separated string, like so: 'openvswitch,l2_population'
153 NeutronAllowL3AgentFailover:
155 description: Allow automatic l3-agent failover
159 description: Whether to enable l3-agent HA
163 description: The password for the nova service account, used by nova-api.
169 PublicVirtualFixedIPs:
172 Control the IP allocation for the PublicVirtualInterface port. E.g.
173 [{'ip_address':'1.2.3.4'}]
175 PublicVirtualNetwork:
179 Neutron network to allocate public virtual IP port on.
183 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
184 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
187 description: The username for RabbitMQ
191 description: The password for RabbitMQ
197 Rabbit client subscriber parameter to specify
198 an SSL connection to the RabbitMQ host.
202 description: Set rabbit subscriber port, change this if using SSL
204 SnmpdReadonlyUserName:
205 default: ro_snmp_user
206 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
208 SnmpdReadonlyUserPassword:
210 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
214 # Controller-specific params
217 description: The keystone auth secret.
220 CinderEnableRbdBackend:
222 description: Whether to enable or not the Rbd backend for Cinder
224 CinderLVMLoopDeviceSize:
226 description: The size of the loopback file used by the cinder LVM driver.
230 description: The password for the cinder service account, used by cinder-api.
235 description: The iSCSI helper to use with cinder.
240 controllerExtraConfig:
243 Controller specific configuration to inject into the cluster. Same
244 structure as ExtraConfig.
248 default: overcloud-control
250 - custom_constraint: glance.image
251 OvercloudControlFlavor:
252 description: Flavor for control nodes to request when deploying.
255 - custom_constraint: nova.flavor
256 ControlVirtualInterface:
258 description: Interface where virtual ip will be assigned.
262 description: Whether to use Galera instead of regular MariaDB.
264 ControllerEnableCephStorage:
266 description: Whether to deploy Ceph Storage (OSD) on the Controller
268 ControllerEnableSwiftStorage:
270 description: Whether to enable Swift Storage on the Controller
275 Additional configuration to inject into the cluster. The JSON should have
276 the following structure:
279 [{"section": "SECTIONNAME",
281 [{"option": "OPTIONNAME",
292 [{"section": "default",
294 [{"option": "force_config_drive",
301 [{"option": "driver",
302 "value": "nova.cells.rpc_driver.CellsRPCDriver"
311 description: The filepath of the file to use for logging messages from Glance.
314 GlanceNotifierStrategy:
315 description: Strategy to use for Glance notification queue
320 description: The password for the glance service account, used by the glance services.
325 description: The short name of the Glance backend to use. Should be one
326 of swift, rbd or file
329 - allowed_values: ['swift', 'file', 'rbd']
332 description: The password for the Heat service account, used by the Heat services.
335 HeatStackDomainAdminPassword:
336 description: Password for heat_domain_admin user.
340 KeystoneCACertificate:
342 description: Keystone self-signed certificate authority certificate.
344 KeystoneSigningCertificate:
346 description: Keystone certificate for verifying token validity.
350 description: Keystone key for signing tokens.
353 KeystoneSSLCertificate:
355 description: Keystone certificate for verifying token validity.
357 KeystoneSSLCertificateKey:
359 description: Keystone key for signing tokens.
362 MysqlInnodbBufferPoolSize:
364 Specifies the size of the buffer pool in megabytes. Setting to
365 zero should be interpreted as "no value" and will defer to the
369 NeutronDnsmasqOptions:
370 default: 'dhcp-option-force=26,1400'
371 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
373 NeutronPublicInterfaceDefaultRoute:
375 description: A custom default route for the NeutronPublicInterface.
377 NeutronPublicInterfaceIP:
379 description: A custom IP address to put onto the NeutronPublicInterface.
381 NeutronPublicInterfaceRawDevice:
383 description: If set, the public interface is a vlan with this device as the raw device.
385 PublicVirtualInterface:
388 Specifies the interface where the public-facing virtual ip will be assigned.
389 This should be int_public when a VLAN is being used.
393 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
398 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
403 description: If set, the contents of an SSL certificate authority file.
407 description: A random string to be used as a salt when hashing to determine mappings in the ring.
412 description: The password for the swift service account, used by the swift proxy services.
417 description: Value of mount_check in Swift account/container/object -server.conf
422 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
425 description: Partition Power to use when building Swift rings
430 description: How many replicas to use in the swift rings.
432 # Compute-specific params
433 CeilometerComputeAgent:
434 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
438 - allowed_values: ['', Present]
442 HypervisorNeutronPhysicalBridge:
445 An OVS bridge to create on each hypervisor. This defaults to br-ex the
446 same as the control plane nodes, as we have a uniform configuration of
447 the openvswitch agent. Typically should not need to be changed.
449 HypervisorNeutronPublicInterface:
451 description: What interface to add to the HypervisorNeutronPhysicalBridge.
453 NeutronNetworkVLANRanges:
454 default: 'datacentre'
456 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
457 Neutron documentation for permitted values. Defaults to permitting any
458 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
459 type: comma_delimited_list
462 default: libvirt.LibvirtDriver
463 NovaComputeExtraConfig:
466 NovaCompute specific configuration to inject into the cluster. Same
467 structure as ExtraConfig.
469 NovaComputeLibvirtType:
472 NovaEnableRbdBackend:
474 description: Whether to enable or not the Rbd backend for Nova
478 default: overcloud-compute
480 - custom_constraint: glance.image
481 OvercloudComputeFlavor:
482 description: Use this flavor
485 - custom_constraint: nova.flavor
488 NeutronLocalIp: tenant
489 CeilometerApiNetwork: internal_api
490 MongoDbNetwork: internal_api
491 CinderApiNetwork: internal_api
492 CinderIscsiNetwork: storage
493 GlanceApiNetwork: storage
494 GlanceRegistryNetwork: internal_api
495 KeystoneAdminApiNetwork: internal_api
496 KeystonePublicApiNetwork: internal_api
497 NeutronApiNetwork: internal_api
498 HeatApiNetwork: internal_api
499 NovaApiNetwork: internal_api
500 NovaMetadataNetwork: internal_api
501 NovaVncProxyNetwork: internal_api
502 SwiftMgmtNetwork: storage_mgmt
503 SwiftProxyNetwork: storage
504 HorizonNetwork: internal_api
505 MemcachedNetwork: internal_api
506 RabbitMqNetwork: internal_api
507 RedisNetwork: internal_api
508 MysqlNetwork: internal_api
509 CephClusterNetwork: storage_mgmt
510 CephPublicNetwork: storage
511 description: Mapping of service_name -> network name. Typically set
512 via parameter_defaults in the resource registry.
515 # Block storage specific parameters
520 default: overcloud-cinder-volume
522 OvercloudBlockStorageFlavor:
523 description: Flavor for block storage nodes to request when deploying.
526 - custom_constraint: nova.flavor
528 # Object storage specific parameters
532 OvercloudSwiftStorageFlavor:
533 description: Flavor for Swift storage nodes to request when deploying.
536 - custom_constraint: nova.flavor
538 default: overcloud-swift-storage
541 # Ceph storage specific parameters
546 default: overcloud-ceph-storage
548 OvercloudCephStorageFlavor:
550 description: Flavor for Ceph storage nodes to request when deploying.
553 - custom_constraint: nova.flavor
555 # Hostname format for each role
556 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
557 # and %stackname% is replaced with OS::stack_name in the template below.
558 # If you want to use the heat generated names, pass '' (empty string).
559 ControllerHostnameFormat:
561 description: Format for Controller node hostnames
562 default: '%stackname%-controller-%index%'
563 ComputeHostnameFormat:
565 description: Format for Compute node hostnames
566 default: '%stackname%-novacompute-%index%'
567 BlockStorageHostnameFormat:
569 description: Format for BlockStorage node hostnames
570 default: '%stackname%-blockstorage-%index%'
571 ObjectStorageHostnameFormat:
573 description: Format for SwiftStorage node hostnames
574 default: '%stackname%-objectstorage-%index%'
575 CephStorageHostnameFormat:
577 description: Format for CephStorage node hostnames
578 default: '%stackname%-cephstorage-%index%'
580 # Identifiers to trigger tasks on nodes
585 Setting to a previously unused value during stack-update will trigger
586 package update on all nodes
592 HeatAuthEncryptionKey:
593 type: OS::Heat::RandomString
596 type: OS::Heat::RandomString
601 type: OS::Heat::RandomString
606 type: OS::Heat::ResourceGroup
609 count: {get_param: ControllerCount}
611 type: OS::TripleO::Controller
613 AdminPassword: {get_param: AdminPassword}
614 AdminToken: {get_param: AdminToken}
615 CeilometerBackend: {get_param: CeilometerBackend}
616 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
617 CeilometerPassword: {get_param: CeilometerPassword}
618 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
619 CinderPassword: {get_param: CinderPassword}
620 CinderISCSIHelper: {get_param: CinderISCSIHelper}
621 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
622 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
623 CloudName: {get_param: CloudName}
624 ControlVirtualInterface: {get_param: ControlVirtualInterface}
625 ControllerExtraConfig: {get_param: controllerExtraConfig}
626 Debug: {get_param: Debug}
627 EnableGalera: {get_param: EnableGalera}
628 EnableCephStorage: {get_param: ControllerEnableCephStorage}
629 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
630 ExtraConfig: {get_param: ExtraConfig}
631 Flavor: {get_param: OvercloudControlFlavor}
632 GlancePort: {get_param: GlancePort}
633 GlanceProtocol: {get_param: GlanceProtocol}
634 GlancePassword: {get_param: GlancePassword}
635 GlanceBackend: {get_param: GlanceBackend}
636 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
637 GlanceLogFile: {get_param: GlanceLogFile}
638 HeatPassword: {get_param: HeatPassword}
639 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
640 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
641 HorizonSecret: {get_resource: HorizonSecret}
642 Image: {get_param: controllerImage}
643 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
644 KeyName: {get_param: KeyName}
645 KeystoneCACertificate: {get_param: KeystoneCACertificate}
646 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
647 KeystoneSigningKey: {get_param: KeystoneSigningKey}
648 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
649 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
650 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
651 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
652 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
653 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
654 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
655 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
656 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
657 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
658 NeutronPublicInterface: {get_param: NeutronPublicInterface}
659 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
660 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
661 NeutronPassword: {get_param: NeutronPassword}
662 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
663 NeutronDVR: {get_param: NeutronDVR}
664 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
665 NeutronAgentMode: {get_param: NeutronAgentMode}
666 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
667 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
668 NeutronL3HA: {get_param: NeutronL3HA}
669 NeutronNetworkType: {get_param: NeutronNetworkType}
670 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
671 NovaPassword: {get_param: NovaPassword}
672 NtpServer: {get_param: NtpServer}
673 PcsdPassword: {get_resource: PcsdPassword}
674 PublicVirtualInterface: {get_param: PublicVirtualInterface}
675 RabbitPassword: {get_param: RabbitPassword}
676 RabbitUserName: {get_param: RabbitUserName}
677 RabbitCookie: {get_attr: [RabbitCookie, value]}
678 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
679 RabbitClientPort: {get_param: RabbitClientPort}
680 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
681 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
682 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
683 SSLCertificate: {get_param: SSLCertificate}
684 SSLKey: {get_param: SSLKey}
685 SSLCACertificate: {get_param: SSLCACertificate}
686 SwiftHashSuffix: {get_param: SwiftHashSuffix}
687 SwiftMountCheck: {get_param: SwiftMountCheck}
688 SwiftMinPartHours: {get_param: SwiftMinPartHours}
689 SwiftPartPower: {get_param: SwiftPartPower}
690 SwiftPassword: {get_param: SwiftPassword}
691 SwiftReplicas: { get_param: SwiftReplicas}
692 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
693 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
694 ServiceNetMap: {get_param: ServiceNetMap}
695 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
696 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
697 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
698 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
699 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
700 UpdateIdentifier: {get_param: UpdateIdentifier}
703 template: {get_param: ControllerHostnameFormat}
705 '%stackname%': {get_param: 'OS::stack_name'}
708 type: OS::Heat::ResourceGroup
711 count: {get_param: ComputeCount}
713 type: OS::TripleO::Compute
715 AdminPassword: {get_param: AdminPassword}
716 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
717 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
718 CeilometerPassword: {get_param: CeilometerPassword}
719 Debug: {get_param: Debug}
720 ExtraConfig: {get_param: ExtraConfig}
721 Flavor: {get_param: OvercloudComputeFlavor}
722 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
723 GlancePort: {get_param: GlancePort}
724 GlanceProtocol: {get_param: GlanceProtocol}
725 Image: {get_param: NovaImage}
726 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
727 KeyName: {get_param: KeyName}
728 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
729 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
730 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
731 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
732 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
733 NeutronNetworkType: {get_param: NeutronNetworkType}
734 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
735 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
736 NeutronPassword: {get_param: NeutronPassword}
737 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
738 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
739 NeutronDVR: {get_param: NeutronDVR}
740 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
741 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
742 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
743 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
744 # L3 HA and Failover is not relevant for Computes, should be removed
745 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
746 NeutronL3HA: {get_param: NeutronL3HA}
747 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
748 NovaComputeDriver: {get_param: NovaComputeDriver}
749 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
750 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
751 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
752 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
753 NovaPassword: {get_param: NovaPassword}
754 NtpServer: {get_param: NtpServer}
755 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
756 RabbitPassword: {get_param: RabbitPassword}
757 RabbitUserName: {get_param: RabbitUserName}
758 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
759 RabbitClientPort: {get_param: RabbitClientPort}
760 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
761 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
762 ServiceNetMap: {get_param: ServiceNetMap}
763 UpdateIdentifier: {get_param: UpdateIdentifier}
766 template: {get_param: ComputeHostnameFormat}
768 '%stackname%': {get_param: 'OS::stack_name'}
771 type: OS::Heat::ResourceGroup
774 count: {get_param: BlockStorageCount}
776 type: OS::TripleO::BlockStorage
778 Debug: {get_param: Debug}
779 Image: {get_param: BlockStorageImage}
780 CinderISCSIHelper: {get_param: CinderISCSIHelper}
781 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
782 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
783 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
784 CinderPassword: {get_param: CinderPassword}
785 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
786 KeyName: {get_param: KeyName}
787 Flavor: {get_param: OvercloudBlockStorageFlavor}
788 RabbitPassword: {get_param: RabbitPassword}
789 RabbitUserName: {get_param: RabbitUserName}
790 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
791 RabbitClientPort: {get_param: RabbitClientPort}
792 NtpServer: {get_param: NtpServer}
793 UpdateIdentifier: {get_param: UpdateIdentifier}
796 template: {get_param: BlockStorageHostnameFormat}
798 '%stackname%': {get_param: 'OS::stack_name'}
801 type: OS::Heat::ResourceGroup
804 count: {get_param: ObjectStorageCount}
806 type: OS::TripleO::ObjectStorage
808 KeyName: {get_param: KeyName}
809 Flavor: {get_param: OvercloudSwiftStorageFlavor}
810 HashSuffix: {get_param: SwiftHashSuffix}
811 MountCheck: {get_param: SwiftMountCheck}
812 MinPartHours: {get_param: SwiftMinPartHours}
813 PartPower: {get_param: SwiftPartPower}
814 Image: {get_param: SwiftStorageImage}
815 Replicas: { get_param: SwiftReplicas}
816 NtpServer: {get_param: NtpServer}
817 UpdateIdentifier: {get_param: UpdateIdentifier}
818 ServiceNetMap: {get_param: ServiceNetMap}
821 template: {get_param: ObjectStorageHostnameFormat}
823 '%stackname%': {get_param: 'OS::stack_name'}
826 type: OS::Heat::ResourceGroup
829 count: {get_param: CephStorageCount}
831 type: OS::TripleO::CephStorage
833 Image: {get_param: CephStorageImage}
834 KeyName: {get_param: KeyName}
835 Flavor: {get_param: OvercloudCephStorageFlavor}
836 NtpServer: {get_param: NtpServer}
837 ServiceNetMap: {get_param: ServiceNetMap}
838 UpdateIdentifier: {get_param: UpdateIdentifier}
841 template: {get_param: CephStorageHostnameFormat}
843 '%stackname%': {get_param: 'OS::stack_name'}
846 type: OS::TripleO::Network::Ports::NetIpListMap
848 ExternalIpList: {get_attr: [Controller, external_ip_address]}
849 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
850 StorageIpList: {get_attr: [Controller, storage_ip_address]}
851 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
852 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
855 type: OS::TripleO::AllNodes::SoftwareConfig
857 compute_hosts: {get_attr: [Compute, hosts_entry]}
858 controller_hosts: {get_attr: [Controller, hosts_entry]}
859 controller_ips: {get_attr: [Controller, ip_address]}
860 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
861 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
862 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
863 controller_names: {get_attr: [Controller, hostname]}
864 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
865 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
866 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
867 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
868 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
869 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
870 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
871 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
872 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
873 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
874 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
875 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
876 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
877 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
878 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
879 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
880 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
883 type: OS::Heat::RandomString
887 MysqlClusterUniquePart:
888 type: OS::Heat::RandomString
893 type: OS::Heat::RandomString
896 salt: {get_param: RabbitCookieSalt}
898 # creates the network architecture
900 type: OS::TripleO::Network
903 type: OS::Neutron::Port
906 name: control_virtual_ip
907 network_id: {get_param: NeutronControlPlaneID}
908 fixed_ips: {get_param: ControlFixedIPs}
909 replacement_policy: AUTO
913 type: OS::TripleO::Controller::Ports::RedisVipPort
915 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
916 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
917 PortName: redis_virtual_ip
918 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
922 type: OS::Neutron::Port
925 name: public_virtual_ip
926 network: {get_param: PublicVirtualNetwork}
927 fixed_ips: {get_param: PublicVirtualFixedIPs}
928 replacement_policy: AUTO
930 InternalApiVirtualIP:
932 type: OS::TripleO::Controller::Ports::InternalApiPort
934 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
935 PortName: internal_api_virtual_ip
939 type: OS::TripleO::Controller::Ports::StoragePort
941 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
942 PortName: storage_virtual_ip
944 StorageMgmtVirtualIP:
946 type: OS::TripleO::Controller::Ports::StorageMgmtPort
948 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
949 PortName: storage_management_virtual_ip
952 type: OS::TripleO::Network::Ports::NetIpMap
954 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
955 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
956 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
957 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
958 # No tenant VIP required
961 type: OS::TripleO::VipConfig
964 type: OS::Heat::StructuredDeployments
966 config: {get_resource: VipConfig}
967 servers: {get_attr: [Controller, attributes, nova_server_resource]}
969 # service VIP mappings
970 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
971 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
972 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
973 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
974 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
975 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
976 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
977 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
978 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
979 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
980 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
981 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
982 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
983 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
984 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
985 # direct configuration of Virtual IPs for each network
986 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
987 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
988 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
989 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
990 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
992 ControllerBootstrapNodeConfig:
993 type: OS::TripleO::BootstrapNode::SoftwareConfig
995 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
996 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
998 ControllerBootstrapNodeDeployment:
999 type: OS::Heat::StructuredDeployments
1001 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1002 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1004 ControllerSwiftDeployment:
1005 type: OS::Heat::StructuredDeployments
1007 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1008 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1010 ObjectStorageSwiftDeployment:
1011 type: OS::Heat::StructuredDeployments
1013 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1014 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1016 SwiftDevicesAndProxyConfig:
1017 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1019 controller_swift_devices: {get_attr: [Controller, swift_device]}
1020 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1021 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1023 ComputeCephDeployment:
1024 type: OS::Heat::StructuredDeployments
1026 config: {get_attr: [CephClusterConfig, config_id]}
1027 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1029 ControllerCephDeployment:
1030 type: OS::Heat::StructuredDeployments
1032 config: {get_attr: [CephClusterConfig, config_id]}
1033 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1035 CephStorageCephDeployment:
1036 type: OS::Heat::StructuredDeployments
1038 config: {get_attr: [CephClusterConfig, config_id]}
1039 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1042 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1044 ceph_fsid: {get_param: CephClusterFSID}
1045 ceph_mon_key: {get_param: CephMonKey}
1046 ceph_admin_key: {get_param: CephAdminKey}
1047 ceph_mon_names: {get_attr: [Controller, hostname]}
1048 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1050 ControllerClusterConfig:
1051 type: OS::Heat::StructuredConfig
1053 group: os-apply-config
1056 nodes: {get_attr: [Controller, corosync_node]}
1060 nodes: {get_attr: [Controller, hostname]}
1062 nodes: {get_attr: [Controller, corosync_node]}
1064 nodes: {get_attr: [Controller, corosync_node]}
1066 ControllerClusterDeployment:
1067 type: OS::Heat::StructuredDeployments
1069 config: {get_resource: ControllerClusterConfig}
1070 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1072 ControllerAllNodesDeployment:
1073 type: OS::Heat::StructuredDeployments
1075 config: {get_attr: [allNodesConfig, config_id]}
1076 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1078 ComputeAllNodesDeployment:
1079 type: OS::Heat::StructuredDeployments
1081 config: {get_attr: [allNodesConfig, config_id]}
1082 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1084 BlockStorageAllNodesDeployment:
1085 type: OS::Heat::StructuredDeployments
1087 config: {get_attr: [allNodesConfig, config_id]}
1088 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1090 ObjectStorageAllNodesDeployment:
1091 type: OS::Heat::StructuredDeployments
1093 config: {get_attr: [allNodesConfig, config_id]}
1094 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1096 CephStorageAllNodesDeployment:
1097 type: OS::Heat::StructuredDeployments
1099 config: {get_attr: [allNodesConfig, config_id]}
1100 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1102 # Nested stack deployment runs after all other controller deployments
1103 ControllerNodesPostDeployment:
1104 type: OS::TripleO::ControllerPostDeployment
1105 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1107 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1109 ComputeNodesPostDeployment:
1110 type: OS::TripleO::ComputePostDeployment
1111 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1113 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1115 ObjectStorageNodesPostDeployment:
1116 type: OS::TripleO::ObjectStoragePostDeployment
1117 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1119 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1121 BlockStorageNodesPostDeployment:
1122 type: OS::TripleO::BlockStoragePostDeployment
1123 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1125 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1127 CephStorageNodesPostDeployment:
1128 type: OS::TripleO::CephStoragePostDeployment
1129 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1131 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1135 description: URL for the Overcloud Keystone service
1140 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}