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 NeutronTenantNetwork: 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 KeyName: {get_param: KeyName}
786 Flavor: {get_param: OvercloudBlockStorageFlavor}
787 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
788 GlancePort: {get_param: GlancePort}
789 GlanceProtocol: {get_param: GlanceProtocol}
790 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
791 RabbitPassword: {get_param: RabbitPassword}
792 RabbitUserName: {get_param: RabbitUserName}
793 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
794 RabbitClientPort: {get_param: RabbitClientPort}
795 NtpServer: {get_param: NtpServer}
796 UpdateIdentifier: {get_param: UpdateIdentifier}
799 template: {get_param: BlockStorageHostnameFormat}
801 '%stackname%': {get_param: 'OS::stack_name'}
802 ServiceNetMap: {get_param: ServiceNetMap}
803 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
806 type: OS::Heat::ResourceGroup
809 count: {get_param: ObjectStorageCount}
811 type: OS::TripleO::ObjectStorage
813 KeyName: {get_param: KeyName}
814 Flavor: {get_param: OvercloudSwiftStorageFlavor}
815 HashSuffix: {get_param: SwiftHashSuffix}
816 MountCheck: {get_param: SwiftMountCheck}
817 MinPartHours: {get_param: SwiftMinPartHours}
818 PartPower: {get_param: SwiftPartPower}
819 Image: {get_param: SwiftStorageImage}
820 Replicas: { get_param: SwiftReplicas}
821 NtpServer: {get_param: NtpServer}
822 UpdateIdentifier: {get_param: UpdateIdentifier}
823 ServiceNetMap: {get_param: ServiceNetMap}
826 template: {get_param: ObjectStorageHostnameFormat}
828 '%stackname%': {get_param: 'OS::stack_name'}
831 type: OS::Heat::ResourceGroup
834 count: {get_param: CephStorageCount}
836 type: OS::TripleO::CephStorage
838 Image: {get_param: CephStorageImage}
839 KeyName: {get_param: KeyName}
840 Flavor: {get_param: OvercloudCephStorageFlavor}
841 NtpServer: {get_param: NtpServer}
842 ServiceNetMap: {get_param: ServiceNetMap}
843 UpdateIdentifier: {get_param: UpdateIdentifier}
846 template: {get_param: CephStorageHostnameFormat}
848 '%stackname%': {get_param: 'OS::stack_name'}
851 type: OS::TripleO::Network::Ports::NetIpListMap
853 ExternalIpList: {get_attr: [Controller, external_ip_address]}
854 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
855 StorageIpList: {get_attr: [Controller, storage_ip_address]}
856 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
857 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
860 type: OS::TripleO::AllNodes::SoftwareConfig
862 compute_hosts: {get_attr: [Compute, hosts_entry]}
863 controller_hosts: {get_attr: [Controller, hosts_entry]}
864 controller_ips: {get_attr: [Controller, ip_address]}
865 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
866 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
867 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
868 controller_names: {get_attr: [Controller, hostname]}
869 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
870 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
871 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
872 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
873 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
874 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
875 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
876 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
877 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
878 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
879 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
880 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
881 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
882 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
883 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
884 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
885 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
888 type: OS::Heat::RandomString
892 MysqlClusterUniquePart:
893 type: OS::Heat::RandomString
898 type: OS::Heat::RandomString
901 salt: {get_param: RabbitCookieSalt}
903 # creates the network architecture
905 type: OS::TripleO::Network
908 type: OS::Neutron::Port
911 name: control_virtual_ip
912 network_id: {get_param: NeutronControlPlaneID}
913 fixed_ips: {get_param: ControlFixedIPs}
914 replacement_policy: AUTO
918 type: OS::TripleO::Controller::Ports::RedisVipPort
920 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
921 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
922 PortName: redis_virtual_ip
923 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
927 type: OS::Neutron::Port
930 name: public_virtual_ip
931 network: {get_param: PublicVirtualNetwork}
932 fixed_ips: {get_param: PublicVirtualFixedIPs}
933 replacement_policy: AUTO
935 InternalApiVirtualIP:
937 type: OS::TripleO::Controller::Ports::InternalApiPort
939 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
940 PortName: internal_api_virtual_ip
944 type: OS::TripleO::Controller::Ports::StoragePort
946 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
947 PortName: storage_virtual_ip
949 StorageMgmtVirtualIP:
951 type: OS::TripleO::Controller::Ports::StorageMgmtPort
953 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
954 PortName: storage_management_virtual_ip
957 type: OS::TripleO::Network::Ports::NetIpMap
959 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
960 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
961 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
962 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
963 # No tenant VIP required
966 type: OS::TripleO::VipConfig
969 type: OS::Heat::StructuredDeployments
971 config: {get_resource: VipConfig}
972 servers: {get_attr: [Controller, attributes, nova_server_resource]}
974 # service VIP mappings
975 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
976 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
977 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
978 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
979 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
980 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
981 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
982 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
983 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
984 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
985 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
986 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
987 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
988 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
989 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
990 # direct configuration of Virtual IPs for each network
991 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
992 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
993 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
994 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
995 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
997 ControllerBootstrapNodeConfig:
998 type: OS::TripleO::BootstrapNode::SoftwareConfig
1000 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1001 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1003 ControllerBootstrapNodeDeployment:
1004 type: OS::Heat::StructuredDeployments
1006 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1007 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1009 ControllerSwiftDeployment:
1010 type: OS::Heat::StructuredDeployments
1012 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1013 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1015 ObjectStorageSwiftDeployment:
1016 type: OS::Heat::StructuredDeployments
1018 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1019 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1021 SwiftDevicesAndProxyConfig:
1022 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1024 controller_swift_devices: {get_attr: [Controller, swift_device]}
1025 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1026 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1028 ComputeCephDeployment:
1029 type: OS::Heat::StructuredDeployments
1031 config: {get_attr: [CephClusterConfig, config_id]}
1032 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1034 ControllerCephDeployment:
1035 type: OS::Heat::StructuredDeployments
1037 config: {get_attr: [CephClusterConfig, config_id]}
1038 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1040 CephStorageCephDeployment:
1041 type: OS::Heat::StructuredDeployments
1043 config: {get_attr: [CephClusterConfig, config_id]}
1044 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1047 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1049 ceph_fsid: {get_param: CephClusterFSID}
1050 ceph_mon_key: {get_param: CephMonKey}
1051 ceph_admin_key: {get_param: CephAdminKey}
1052 ceph_mon_names: {get_attr: [Controller, hostname]}
1053 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1055 ControllerClusterConfig:
1056 type: OS::Heat::StructuredConfig
1058 group: os-apply-config
1061 nodes: {get_attr: [Controller, corosync_node]}
1065 nodes: {get_attr: [Controller, hostname]}
1067 nodes: {get_attr: [Controller, corosync_node]}
1069 nodes: {get_attr: [Controller, corosync_node]}
1071 ControllerClusterDeployment:
1072 type: OS::Heat::StructuredDeployments
1074 config: {get_resource: ControllerClusterConfig}
1075 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1077 ControllerAllNodesDeployment:
1078 type: OS::Heat::StructuredDeployments
1080 config: {get_attr: [allNodesConfig, config_id]}
1081 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1083 ComputeAllNodesDeployment:
1084 type: OS::Heat::StructuredDeployments
1086 config: {get_attr: [allNodesConfig, config_id]}
1087 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1089 BlockStorageAllNodesDeployment:
1090 type: OS::Heat::StructuredDeployments
1092 config: {get_attr: [allNodesConfig, config_id]}
1093 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1095 ObjectStorageAllNodesDeployment:
1096 type: OS::Heat::StructuredDeployments
1098 config: {get_attr: [allNodesConfig, config_id]}
1099 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1101 CephStorageAllNodesDeployment:
1102 type: OS::Heat::StructuredDeployments
1104 config: {get_attr: [allNodesConfig, config_id]}
1105 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1107 # Nested stack deployment runs after all other controller deployments
1108 ControllerNodesPostDeployment:
1109 type: OS::TripleO::ControllerPostDeployment
1110 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1112 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1114 ComputeNodesPostDeployment:
1115 type: OS::TripleO::ComputePostDeployment
1116 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1118 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1120 ObjectStorageNodesPostDeployment:
1121 type: OS::TripleO::ObjectStoragePostDeployment
1122 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1124 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1126 BlockStorageNodesPostDeployment:
1127 type: OS::TripleO::BlockStoragePostDeployment
1128 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1130 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1132 CephStorageNodesPostDeployment:
1133 type: OS::TripleO::CephStoragePostDeployment
1134 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1136 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1140 description: URL for the Overcloud Keystone service
1145 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}