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.
270 ControllerEnableCephStorage:
272 description: Whether to deploy Ceph Storage (OSD) on the Controller
274 ControllerEnableSwiftStorage:
276 description: Whether to enable Swift Storage on the Controller
281 Additional configuration to inject into the cluster. The JSON should have
282 the following structure:
285 [{"section": "SECTIONNAME",
287 [{"option": "OPTIONNAME",
298 [{"section": "default",
300 [{"option": "force_config_drive",
307 [{"option": "driver",
308 "value": "nova.cells.rpc_driver.CellsRPCDriver"
317 description: The filepath of the file to use for logging messages from Glance.
320 GlanceNotifierStrategy:
321 description: Strategy to use for Glance notification queue
326 description: The password for the glance service account, used by the glance services.
331 description: The short name of the Glance backend to use. Should be one
332 of swift, rbd or file
335 - allowed_values: ['swift', 'file', 'rbd']
338 description: The password for the Heat service account, used by the Heat services.
341 HeatStackDomainAdminPassword:
342 description: Password for heat_domain_admin user.
346 KeystoneCACertificate:
348 description: Keystone self-signed certificate authority certificate.
350 KeystoneSigningCertificate:
352 description: Keystone certificate for verifying token validity.
356 description: Keystone key for signing tokens.
359 KeystoneSSLCertificate:
361 description: Keystone certificate for verifying token validity.
363 KeystoneSSLCertificateKey:
365 description: Keystone key for signing tokens.
368 MysqlInnodbBufferPoolSize:
370 Specifies the size of the buffer pool in megabytes. Setting to
371 zero should be interpreted as "no value" and will defer to the
375 NeutronDnsmasqOptions:
376 default: 'dhcp-option-force=26,1400'
377 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
379 NeutronPublicInterfaceDefaultRoute:
381 description: A custom default route for the NeutronPublicInterface.
383 NeutronPublicInterfaceIP:
385 description: A custom IP address to put onto the NeutronPublicInterface.
387 NeutronPublicInterfaceRawDevice:
389 description: If set, the public interface is a vlan with this device as the raw device.
391 PublicVirtualInterface:
394 Specifies the interface where the public-facing virtual ip will be assigned.
395 This should be int_public when a VLAN is being used.
399 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
404 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
409 description: If set, the contents of an SSL certificate authority file.
413 description: A random string to be used as a salt when hashing to determine mappings in the ring.
418 description: The password for the swift service account, used by the swift proxy services.
423 description: Value of mount_check in Swift account/container/object -server.conf
428 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
431 description: Partition Power to use when building Swift rings
436 description: How many replicas to use in the swift rings.
438 # Compute-specific params
439 CeilometerComputeAgent:
440 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
444 - allowed_values: ['', Present]
448 HypervisorNeutronPhysicalBridge:
451 An OVS bridge to create on each hypervisor. This defaults to br-ex the
452 same as the control plane nodes, as we have a uniform configuration of
453 the openvswitch agent. Typically should not need to be changed.
455 HypervisorNeutronPublicInterface:
457 description: What interface to add to the HypervisorNeutronPhysicalBridge.
459 NeutronNetworkVLANRanges:
460 default: 'datacentre'
462 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
463 Neutron documentation for permitted values. Defaults to permitting any
464 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
465 type: comma_delimited_list
468 default: libvirt.LibvirtDriver
469 NovaComputeExtraConfig:
472 NovaCompute specific configuration to inject into the cluster. Same
473 structure as ExtraConfig.
475 NovaComputeLibvirtType:
478 NovaEnableRbdBackend:
480 description: Whether to enable or not the Rbd backend for Nova
484 default: overcloud-compute
486 - custom_constraint: glance.image
487 OvercloudComputeFlavor:
488 description: Use this flavor
491 - custom_constraint: nova.flavor
494 NeutronLocalIp: tenant
495 CeilometerApiNetwork: internal_api
496 MongoDbNetwork: internal_api
497 CinderApiNetwork: internal_api
498 CinderIscsiNetwork: storage
499 GlanceApiNetwork: storage
500 GlanceRegistryNetwork: internal_api
501 KeystoneAdminApiNetwork: internal_api
502 KeystonePublicApiNetwork: internal_api
503 NeutronApiNetwork: internal_api
504 HeatApiNetwork: internal_api
505 NovaApiNetwork: internal_api
506 NovaMetadataNetwork: internal_api
507 NovaVncProxyNetwork: internal_api
508 SwiftMgmtNetwork: storage_mgmt
509 SwiftProxyNetwork: storage
510 HorizonNetwork: internal_api
511 MemcachedNetwork: internal_api
512 RabbitMqNetwork: internal_api
513 RedisNetwork: internal_api
514 MysqlNetwork: internal_api
515 CephClusterNetwork: storage_mgmt
516 CephPublicNetwork: storage
517 description: Mapping of service_name -> network name. Typically set
518 via parameter_defaults in the resource registry.
521 # Block storage specific parameters
526 default: overcloud-cinder-volume
528 OvercloudBlockStorageFlavor:
529 description: Flavor for block storage nodes to request when deploying.
532 - custom_constraint: nova.flavor
534 # Object storage specific parameters
538 OvercloudSwiftStorageFlavor:
539 description: Flavor for Swift storage nodes to request when deploying.
542 - custom_constraint: nova.flavor
544 default: overcloud-swift-storage
547 # Ceph storage specific parameters
552 default: overcloud-ceph-storage
554 OvercloudCephStorageFlavor:
556 description: Flavor for Ceph storage nodes to request when deploying.
559 - custom_constraint: nova.flavor
561 # Hostname format for each role
562 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
563 # and %stackname% is replaced with OS::stack_name in the template below.
564 # If you want to use the heat generated names, pass '' (empty string).
565 ControllerHostnameFormat:
567 description: Format for Controller node hostnames
568 default: '%stackname%-controller-%index%'
569 ComputeHostnameFormat:
571 description: Format for Compute node hostnames
572 default: '%stackname%-novacompute-%index%'
573 BlockStorageHostnameFormat:
575 description: Format for BlockStorage node hostnames
576 default: '%stackname%-blockstorage-%index%'
577 ObjectStorageHostnameFormat:
579 description: Format for SwiftStorage node hostnames
580 default: '%stackname%-objectstorage-%index%'
581 CephStorageHostnameFormat:
583 description: Format for CephStorage node hostnames
584 default: '%stackname%-cephstorage-%index%'
586 # Identifiers to trigger tasks on nodes
591 Setting to a previously unused value during stack-update will trigger
592 package update on all nodes
598 HeatAuthEncryptionKey:
599 type: OS::Heat::RandomString
602 type: OS::Heat::RandomString
607 type: OS::Heat::RandomString
612 type: OS::Heat::ResourceGroup
615 count: {get_param: ControllerCount}
617 type: OS::TripleO::Controller
619 AdminPassword: {get_param: AdminPassword}
620 AdminToken: {get_param: AdminToken}
621 CeilometerBackend: {get_param: CeilometerBackend}
622 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
623 CeilometerPassword: {get_param: CeilometerPassword}
624 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
625 CinderPassword: {get_param: CinderPassword}
626 CinderISCSIHelper: {get_param: CinderISCSIHelper}
627 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
628 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
629 CloudName: {get_param: CloudName}
630 ControlVirtualInterface: {get_param: ControlVirtualInterface}
631 ControllerExtraConfig: {get_param: controllerExtraConfig}
632 Debug: {get_param: Debug}
633 EnableGalera: {get_param: EnableGalera}
634 EnableCephStorage: {get_param: ControllerEnableCephStorage}
635 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
636 ExtraConfig: {get_param: ExtraConfig}
637 Flavor: {get_param: OvercloudControlFlavor}
638 GlancePort: {get_param: GlancePort}
639 GlanceProtocol: {get_param: GlanceProtocol}
640 GlancePassword: {get_param: GlancePassword}
641 GlanceBackend: {get_param: GlanceBackend}
642 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
643 GlanceLogFile: {get_param: GlanceLogFile}
644 HeatPassword: {get_param: HeatPassword}
645 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
646 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
647 HorizonSecret: {get_resource: HorizonSecret}
648 Image: {get_param: controllerImage}
649 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
650 KeyName: {get_param: KeyName}
651 KeystoneCACertificate: {get_param: KeystoneCACertificate}
652 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
653 KeystoneSigningKey: {get_param: KeystoneSigningKey}
654 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
655 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
656 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
657 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
658 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
659 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
660 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
661 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
662 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
663 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
664 NeutronPublicInterface: {get_param: NeutronPublicInterface}
665 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
666 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
667 NeutronPassword: {get_param: NeutronPassword}
668 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
669 NeutronDVR: {get_param: NeutronDVR}
670 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
671 NeutronAgentMode: {get_param: NeutronAgentMode}
672 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
673 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
674 NeutronL3HA: {get_param: NeutronL3HA}
675 NeutronNetworkType: {get_param: NeutronNetworkType}
676 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
677 NovaPassword: {get_param: NovaPassword}
678 NtpServer: {get_param: NtpServer}
679 PcsdPassword: {get_resource: PcsdPassword}
680 PublicVirtualInterface: {get_param: PublicVirtualInterface}
681 RabbitPassword: {get_param: RabbitPassword}
682 RabbitUserName: {get_param: RabbitUserName}
683 RabbitCookie: {get_attr: [RabbitCookie, value]}
684 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
685 RabbitClientPort: {get_param: RabbitClientPort}
686 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
687 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
688 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
689 SSLCertificate: {get_param: SSLCertificate}
690 SSLKey: {get_param: SSLKey}
691 SSLCACertificate: {get_param: SSLCACertificate}
692 SwiftHashSuffix: {get_param: SwiftHashSuffix}
693 SwiftMountCheck: {get_param: SwiftMountCheck}
694 SwiftMinPartHours: {get_param: SwiftMinPartHours}
695 SwiftPartPower: {get_param: SwiftPartPower}
696 SwiftPassword: {get_param: SwiftPassword}
697 SwiftReplicas: { get_param: SwiftReplicas}
698 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
699 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
700 ServiceNetMap: {get_param: ServiceNetMap}
701 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
702 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
703 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
704 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
705 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
706 UpdateIdentifier: {get_param: UpdateIdentifier}
709 template: {get_param: ControllerHostnameFormat}
711 '%stackname%': {get_param: 'OS::stack_name'}
714 type: OS::Heat::ResourceGroup
717 count: {get_param: ComputeCount}
719 type: OS::TripleO::Compute
721 AdminPassword: {get_param: AdminPassword}
722 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
723 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
724 CeilometerPassword: {get_param: CeilometerPassword}
725 Debug: {get_param: Debug}
726 ExtraConfig: {get_param: ExtraConfig}
727 Flavor: {get_param: OvercloudComputeFlavor}
728 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
729 GlancePort: {get_param: GlancePort}
730 GlanceProtocol: {get_param: GlanceProtocol}
731 Image: {get_param: NovaImage}
732 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
733 KeyName: {get_param: KeyName}
734 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
735 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
736 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
737 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
738 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
739 NeutronNetworkType: {get_param: NeutronNetworkType}
740 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
741 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
742 NeutronPassword: {get_param: NeutronPassword}
743 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
744 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
745 NeutronDVR: {get_param: NeutronDVR}
746 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
747 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
748 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
749 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
750 # L3 HA and Failover is not relevant for Computes, should be removed
751 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
752 NeutronL3HA: {get_param: NeutronL3HA}
753 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
754 NovaComputeDriver: {get_param: NovaComputeDriver}
755 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
756 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
757 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
758 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
759 NovaPassword: {get_param: NovaPassword}
760 NtpServer: {get_param: NtpServer}
761 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
762 RabbitPassword: {get_param: RabbitPassword}
763 RabbitUserName: {get_param: RabbitUserName}
764 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
765 RabbitClientPort: {get_param: RabbitClientPort}
766 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
767 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
768 ServiceNetMap: {get_param: ServiceNetMap}
769 UpdateIdentifier: {get_param: UpdateIdentifier}
772 template: {get_param: ComputeHostnameFormat}
774 '%stackname%': {get_param: 'OS::stack_name'}
777 type: OS::Heat::ResourceGroup
780 count: {get_param: BlockStorageCount}
782 type: OS::TripleO::BlockStorage
784 Debug: {get_param: Debug}
785 Image: {get_param: BlockStorageImage}
786 CinderISCSIHelper: {get_param: CinderISCSIHelper}
787 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
788 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
789 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
790 CinderPassword: {get_param: CinderPassword}
791 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
792 KeyName: {get_param: KeyName}
793 Flavor: {get_param: OvercloudBlockStorageFlavor}
794 RabbitPassword: {get_param: RabbitPassword}
795 RabbitUserName: {get_param: RabbitUserName}
796 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
797 RabbitClientPort: {get_param: RabbitClientPort}
798 NtpServer: {get_param: NtpServer}
799 UpdateIdentifier: {get_param: UpdateIdentifier}
802 template: {get_param: BlockStorageHostnameFormat}
804 '%stackname%': {get_param: 'OS::stack_name'}
807 type: OS::Heat::ResourceGroup
810 count: {get_param: ObjectStorageCount}
812 type: OS::TripleO::ObjectStorage
814 KeyName: {get_param: KeyName}
815 Flavor: {get_param: OvercloudSwiftStorageFlavor}
816 HashSuffix: {get_param: SwiftHashSuffix}
817 MountCheck: {get_param: SwiftMountCheck}
818 MinPartHours: {get_param: SwiftMinPartHours}
819 PartPower: {get_param: SwiftPartPower}
820 Image: {get_param: SwiftStorageImage}
821 Replicas: { get_param: SwiftReplicas}
822 NtpServer: {get_param: NtpServer}
823 UpdateIdentifier: {get_param: UpdateIdentifier}
824 ServiceNetMap: {get_param: ServiceNetMap}
827 template: {get_param: ObjectStorageHostnameFormat}
829 '%stackname%': {get_param: 'OS::stack_name'}
832 type: OS::Heat::ResourceGroup
835 count: {get_param: CephStorageCount}
837 type: OS::TripleO::CephStorage
839 Image: {get_param: CephStorageImage}
840 KeyName: {get_param: KeyName}
841 Flavor: {get_param: OvercloudCephStorageFlavor}
842 NtpServer: {get_param: NtpServer}
843 ServiceNetMap: {get_param: ServiceNetMap}
844 UpdateIdentifier: {get_param: UpdateIdentifier}
847 template: {get_param: CephStorageHostnameFormat}
849 '%stackname%': {get_param: 'OS::stack_name'}
852 type: OS::TripleO::Network::Ports::NetIpListMap
854 ExternalIpList: {get_attr: [Controller, external_ip_address]}
855 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
856 StorageIpList: {get_attr: [Controller, storage_ip_address]}
857 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
858 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
861 type: OS::TripleO::AllNodes::SoftwareConfig
863 compute_hosts: {get_attr: [Compute, hosts_entry]}
864 controller_hosts: {get_attr: [Controller, hosts_entry]}
865 controller_ips: {get_attr: [Controller, ip_address]}
866 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
867 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
868 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
869 controller_names: {get_attr: [Controller, hostname]}
870 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
871 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
872 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
873 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
874 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
875 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
876 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
877 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
878 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
879 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
880 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
881 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
882 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
883 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
884 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
885 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
886 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
889 type: OS::Heat::RandomString
893 MysqlClusterUniquePart:
894 type: OS::Heat::RandomString
899 type: OS::Heat::RandomString
902 salt: {get_param: RabbitCookieSalt}
904 # creates the network architecture
906 type: OS::TripleO::Network
909 type: OS::Neutron::Port
912 name: control_virtual_ip
913 network_id: {get_param: NeutronControlPlaneID}
914 fixed_ips: {get_param: ControlFixedIPs}
915 replacement_policy: AUTO
919 type: OS::TripleO::Controller::Ports::RedisVipPort
921 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
922 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
923 PortName: redis_virtual_ip
924 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
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: [RedisVirtualIP, ip_address]}
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]}
1010 ControllerSwiftDeployment:
1011 type: OS::Heat::StructuredDeployments
1013 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1014 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1016 ObjectStorageSwiftDeployment:
1017 type: OS::Heat::StructuredDeployments
1019 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1020 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1022 SwiftDevicesAndProxyConfig:
1023 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1025 controller_swift_devices: {get_attr: [Controller, swift_device]}
1026 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1027 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1029 ComputeCephDeployment:
1030 type: OS::Heat::StructuredDeployments
1032 config: {get_attr: [CephClusterConfig, config_id]}
1033 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1035 ControllerCephDeployment:
1036 type: OS::Heat::StructuredDeployments
1038 config: {get_attr: [CephClusterConfig, config_id]}
1039 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1041 CephStorageCephDeployment:
1042 type: OS::Heat::StructuredDeployments
1044 config: {get_attr: [CephClusterConfig, config_id]}
1045 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1048 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1050 ceph_fsid: {get_param: CephClusterFSID}
1051 ceph_mon_key: {get_param: CephMonKey}
1052 ceph_admin_key: {get_param: CephAdminKey}
1053 ceph_mon_names: {get_attr: [Controller, hostname]}
1054 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1056 ControllerClusterConfig:
1057 type: OS::Heat::StructuredConfig
1059 group: os-apply-config
1062 nodes: {get_attr: [Controller, corosync_node]}
1066 nodes: {get_attr: [Controller, hostname]}
1068 nodes: {get_attr: [Controller, corosync_node]}
1070 nodes: {get_attr: [Controller, corosync_node]}
1072 ControllerClusterDeployment:
1073 type: OS::Heat::StructuredDeployments
1075 config: {get_resource: ControllerClusterConfig}
1076 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1078 ControllerAllNodesDeployment:
1079 type: OS::Heat::StructuredDeployments
1081 config: {get_attr: [allNodesConfig, config_id]}
1082 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1084 ComputeAllNodesDeployment:
1085 type: OS::Heat::StructuredDeployments
1087 config: {get_attr: [allNodesConfig, config_id]}
1088 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1090 BlockStorageAllNodesDeployment:
1091 type: OS::Heat::StructuredDeployments
1093 config: {get_attr: [allNodesConfig, config_id]}
1094 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1096 ObjectStorageAllNodesDeployment:
1097 type: OS::Heat::StructuredDeployments
1099 config: {get_attr: [allNodesConfig, config_id]}
1100 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1102 CephStorageAllNodesDeployment:
1103 type: OS::Heat::StructuredDeployments
1105 config: {get_attr: [allNodesConfig, config_id]}
1106 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1108 # Nested stack deployment runs after all other controller deployments
1109 ControllerNodesPostDeployment:
1110 type: OS::TripleO::ControllerPostDeployment
1111 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1113 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1115 ComputeNodesPostDeployment:
1116 type: OS::TripleO::ComputePostDeployment
1117 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1119 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1121 ObjectStorageNodesPostDeployment:
1122 type: OS::TripleO::ObjectStoragePostDeployment
1123 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1125 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1127 BlockStorageNodesPostDeployment:
1128 type: OS::TripleO::BlockStoragePostDeployment
1129 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1131 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1133 CephStorageNodesPostDeployment:
1134 type: OS::TripleO::CephStoragePostDeployment
1135 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1137 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1141 description: URL for the Overcloud Keystone service
1146 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}