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 enable fencing in Pacemaker or not.
266 description: Whether to use Galera instead of regular MariaDB.
268 ControllerEnableCephStorage:
270 description: Whether to deploy Ceph Storage (OSD) on the Controller
272 ControllerEnableSwiftStorage:
274 description: Whether to enable Swift Storage on the Controller
279 Additional configuration to inject into the cluster. The JSON should have
280 the following structure:
283 [{"section": "SECTIONNAME",
285 [{"option": "OPTIONNAME",
296 [{"section": "default",
298 [{"option": "force_config_drive",
305 [{"option": "driver",
306 "value": "nova.cells.rpc_driver.CellsRPCDriver"
317 Pacemaker fencing configuration. The JSON should have
318 the following structure:
322 "agent": "AGENT_NAME",
323 "host_mac": "HOST_MAC_ADDRESS",
324 "params": {"PARAM_NAME": "PARAM_VALUE"}
332 "agent": "fence_xvm",
333 "host_mac": "52:54:00:aa:bb:cc",
335 "multicast_address": "225.0.0.12",
336 "port": "baremetal_0",
338 "manage_key_file": true,
339 "key_file": "/etc/fence_xvm.key",
340 "key_file_password": "abcdef"
347 description: The filepath of the file to use for logging messages from Glance.
350 GlanceNotifierStrategy:
351 description: Strategy to use for Glance notification queue
356 description: The password for the glance service account, used by the glance services.
361 description: The short name of the Glance backend to use. Should be one
362 of swift, rbd or file
365 - allowed_values: ['swift', 'file', 'rbd']
368 description: The password for the Heat service account, used by the Heat services.
371 HeatStackDomainAdminPassword:
372 description: Password for heat_domain_admin user.
376 KeystoneCACertificate:
378 description: Keystone self-signed certificate authority certificate.
380 KeystoneSigningCertificate:
382 description: Keystone certificate for verifying token validity.
386 description: Keystone key for signing tokens.
389 KeystoneSSLCertificate:
391 description: Keystone certificate for verifying token validity.
393 KeystoneSSLCertificateKey:
395 description: Keystone key for signing tokens.
398 MysqlInnodbBufferPoolSize:
400 Specifies the size of the buffer pool in megabytes. Setting to
401 zero should be interpreted as "no value" and will defer to the
405 NeutronDnsmasqOptions:
406 default: 'dhcp-option-force=26,1400'
407 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
409 NeutronPublicInterfaceDefaultRoute:
411 description: A custom default route for the NeutronPublicInterface.
413 NeutronPublicInterfaceIP:
415 description: A custom IP address to put onto the NeutronPublicInterface.
417 NeutronPublicInterfaceRawDevice:
419 description: If set, the public interface is a vlan with this device as the raw device.
421 PublicVirtualInterface:
424 Specifies the interface where the public-facing virtual ip will be assigned.
425 This should be int_public when a VLAN is being used.
429 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
434 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
439 description: If set, the contents of an SSL certificate authority file.
443 description: A random string to be used as a salt when hashing to determine mappings in the ring.
448 description: The password for the swift service account, used by the swift proxy services.
453 description: Value of mount_check in Swift account/container/object -server.conf
458 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
461 description: Partition Power to use when building Swift rings
466 description: How many replicas to use in the swift rings.
468 # Compute-specific params
469 CeilometerComputeAgent:
470 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
474 - allowed_values: ['', Present]
478 HypervisorNeutronPhysicalBridge:
481 An OVS bridge to create on each hypervisor. This defaults to br-ex the
482 same as the control plane nodes, as we have a uniform configuration of
483 the openvswitch agent. Typically should not need to be changed.
485 HypervisorNeutronPublicInterface:
487 description: What interface to add to the HypervisorNeutronPhysicalBridge.
489 NeutronNetworkVLANRanges:
490 default: 'datacentre'
492 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
493 Neutron documentation for permitted values. Defaults to permitting any
494 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
495 type: comma_delimited_list
498 default: libvirt.LibvirtDriver
499 NovaComputeExtraConfig:
502 NovaCompute specific configuration to inject into the cluster. Same
503 structure as ExtraConfig.
505 NovaComputeLibvirtType:
508 NovaEnableRbdBackend:
510 description: Whether to enable or not the Rbd backend for Nova
514 default: overcloud-compute
516 - custom_constraint: glance.image
517 OvercloudComputeFlavor:
518 description: Use this flavor
521 - custom_constraint: nova.flavor
524 NeutronTenantNetwork: tenant
525 CeilometerApiNetwork: internal_api
526 MongoDbNetwork: internal_api
527 CinderApiNetwork: internal_api
528 CinderIscsiNetwork: storage
529 GlanceApiNetwork: storage
530 GlanceRegistryNetwork: internal_api
531 KeystoneAdminApiNetwork: internal_api
532 KeystonePublicApiNetwork: internal_api
533 NeutronApiNetwork: internal_api
534 HeatApiNetwork: internal_api
535 NovaApiNetwork: internal_api
536 NovaMetadataNetwork: internal_api
537 NovaVncProxyNetwork: internal_api
538 SwiftMgmtNetwork: storage_mgmt
539 SwiftProxyNetwork: storage
540 HorizonNetwork: internal_api
541 MemcachedNetwork: internal_api
542 RabbitMqNetwork: internal_api
543 RedisNetwork: internal_api
544 MysqlNetwork: internal_api
545 CephClusterNetwork: storage_mgmt
546 CephPublicNetwork: storage
547 description: Mapping of service_name -> network name. Typically set
548 via parameter_defaults in the resource registry.
551 # Block storage specific parameters
556 default: overcloud-cinder-volume
558 OvercloudBlockStorageFlavor:
559 description: Flavor for block storage nodes to request when deploying.
562 - custom_constraint: nova.flavor
564 # Object storage specific parameters
568 OvercloudSwiftStorageFlavor:
569 description: Flavor for Swift storage nodes to request when deploying.
572 - custom_constraint: nova.flavor
574 default: overcloud-swift-storage
577 # Ceph storage specific parameters
582 default: overcloud-ceph-storage
584 OvercloudCephStorageFlavor:
586 description: Flavor for Ceph storage nodes to request when deploying.
589 - custom_constraint: nova.flavor
591 # Hostname format for each role
592 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
593 # and %stackname% is replaced with OS::stack_name in the template below.
594 # If you want to use the heat generated names, pass '' (empty string).
595 ControllerHostnameFormat:
597 description: Format for Controller node hostnames
598 default: '%stackname%-controller-%index%'
599 ComputeHostnameFormat:
601 description: Format for Compute node hostnames
602 default: '%stackname%-novacompute-%index%'
603 BlockStorageHostnameFormat:
605 description: Format for BlockStorage node hostnames
606 default: '%stackname%-blockstorage-%index%'
607 ObjectStorageHostnameFormat:
609 description: Format for SwiftStorage node hostnames
610 default: '%stackname%-objectstorage-%index%'
611 CephStorageHostnameFormat:
613 description: Format for CephStorage node hostnames
614 default: '%stackname%-cephstorage-%index%'
616 # Identifiers to trigger tasks on nodes
621 Setting to a previously unused value during stack-update will trigger
622 package update on all nodes
628 HeatAuthEncryptionKey:
629 type: OS::Heat::RandomString
632 type: OS::Heat::RandomString
637 type: OS::Heat::RandomString
642 type: OS::Heat::ResourceGroup
645 count: {get_param: ControllerCount}
647 type: OS::TripleO::Controller
649 AdminPassword: {get_param: AdminPassword}
650 AdminToken: {get_param: AdminToken}
651 CeilometerBackend: {get_param: CeilometerBackend}
652 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
653 CeilometerPassword: {get_param: CeilometerPassword}
654 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
655 CinderPassword: {get_param: CinderPassword}
656 CinderISCSIHelper: {get_param: CinderISCSIHelper}
657 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
658 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
659 CloudName: {get_param: CloudName}
660 ControlVirtualInterface: {get_param: ControlVirtualInterface}
661 ControllerExtraConfig: {get_param: controllerExtraConfig}
662 Debug: {get_param: Debug}
663 EnableFencing: {get_param: EnableFencing}
664 EnableGalera: {get_param: EnableGalera}
665 EnableCephStorage: {get_param: ControllerEnableCephStorage}
666 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
667 ExtraConfig: {get_param: ExtraConfig}
668 FencingConfig: {get_param: FencingConfig}
669 Flavor: {get_param: OvercloudControlFlavor}
670 GlancePort: {get_param: GlancePort}
671 GlanceProtocol: {get_param: GlanceProtocol}
672 GlancePassword: {get_param: GlancePassword}
673 GlanceBackend: {get_param: GlanceBackend}
674 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
675 GlanceLogFile: {get_param: GlanceLogFile}
676 HeatPassword: {get_param: HeatPassword}
677 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
678 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
679 HorizonSecret: {get_resource: HorizonSecret}
680 Image: {get_param: controllerImage}
681 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
682 KeyName: {get_param: KeyName}
683 KeystoneCACertificate: {get_param: KeystoneCACertificate}
684 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
685 KeystoneSigningKey: {get_param: KeystoneSigningKey}
686 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
687 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
688 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
689 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
690 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
691 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
692 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
693 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
694 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
695 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
696 NeutronPublicInterface: {get_param: NeutronPublicInterface}
697 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
698 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
699 NeutronPassword: {get_param: NeutronPassword}
700 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
701 NeutronDVR: {get_param: NeutronDVR}
702 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
703 NeutronAgentMode: {get_param: NeutronAgentMode}
704 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
705 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
706 NeutronL3HA: {get_param: NeutronL3HA}
707 NeutronNetworkType: {get_param: NeutronNetworkType}
708 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
709 NovaPassword: {get_param: NovaPassword}
710 NtpServer: {get_param: NtpServer}
711 PcsdPassword: {get_resource: PcsdPassword}
712 PublicVirtualInterface: {get_param: PublicVirtualInterface}
713 RabbitPassword: {get_param: RabbitPassword}
714 RabbitUserName: {get_param: RabbitUserName}
715 RabbitCookie: {get_attr: [RabbitCookie, value]}
716 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
717 RabbitClientPort: {get_param: RabbitClientPort}
718 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
719 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
720 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
721 SSLCertificate: {get_param: SSLCertificate}
722 SSLKey: {get_param: SSLKey}
723 SSLCACertificate: {get_param: SSLCACertificate}
724 SwiftHashSuffix: {get_param: SwiftHashSuffix}
725 SwiftMountCheck: {get_param: SwiftMountCheck}
726 SwiftMinPartHours: {get_param: SwiftMinPartHours}
727 SwiftPartPower: {get_param: SwiftPartPower}
728 SwiftPassword: {get_param: SwiftPassword}
729 SwiftReplicas: { get_param: SwiftReplicas}
730 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
731 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
732 ServiceNetMap: {get_param: ServiceNetMap}
733 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
734 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
735 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
736 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
737 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
738 UpdateIdentifier: {get_param: UpdateIdentifier}
741 template: {get_param: ControllerHostnameFormat}
743 '%stackname%': {get_param: 'OS::stack_name'}
746 type: OS::Heat::ResourceGroup
749 count: {get_param: ComputeCount}
751 type: OS::TripleO::Compute
753 AdminPassword: {get_param: AdminPassword}
754 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
755 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
756 CeilometerPassword: {get_param: CeilometerPassword}
757 Debug: {get_param: Debug}
758 ExtraConfig: {get_param: ExtraConfig}
759 Flavor: {get_param: OvercloudComputeFlavor}
760 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
761 GlancePort: {get_param: GlancePort}
762 GlanceProtocol: {get_param: GlanceProtocol}
763 Image: {get_param: NovaImage}
764 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
765 KeyName: {get_param: KeyName}
766 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
767 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
768 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
769 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
770 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
771 NeutronNetworkType: {get_param: NeutronNetworkType}
772 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
773 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
774 NeutronPassword: {get_param: NeutronPassword}
775 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
776 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
777 NeutronDVR: {get_param: NeutronDVR}
778 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
779 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
780 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
781 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
782 # L3 HA and Failover is not relevant for Computes, should be removed
783 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
784 NeutronL3HA: {get_param: NeutronL3HA}
785 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
786 NovaComputeDriver: {get_param: NovaComputeDriver}
787 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
788 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
789 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
790 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
791 NovaPassword: {get_param: NovaPassword}
792 NtpServer: {get_param: NtpServer}
793 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
794 RabbitPassword: {get_param: RabbitPassword}
795 RabbitUserName: {get_param: RabbitUserName}
796 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
797 RabbitClientPort: {get_param: RabbitClientPort}
798 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
799 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
800 ServiceNetMap: {get_param: ServiceNetMap}
801 UpdateIdentifier: {get_param: UpdateIdentifier}
804 template: {get_param: ComputeHostnameFormat}
806 '%stackname%': {get_param: 'OS::stack_name'}
809 type: OS::Heat::ResourceGroup
812 count: {get_param: BlockStorageCount}
814 type: OS::TripleO::BlockStorage
816 Debug: {get_param: Debug}
817 Image: {get_param: BlockStorageImage}
818 CinderISCSIHelper: {get_param: CinderISCSIHelper}
819 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
820 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
821 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
822 CinderPassword: {get_param: CinderPassword}
823 KeyName: {get_param: KeyName}
824 Flavor: {get_param: OvercloudBlockStorageFlavor}
825 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
826 GlancePort: {get_param: GlancePort}
827 GlanceProtocol: {get_param: GlanceProtocol}
828 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
829 RabbitPassword: {get_param: RabbitPassword}
830 RabbitUserName: {get_param: RabbitUserName}
831 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
832 RabbitClientPort: {get_param: RabbitClientPort}
833 NtpServer: {get_param: NtpServer}
834 UpdateIdentifier: {get_param: UpdateIdentifier}
837 template: {get_param: BlockStorageHostnameFormat}
839 '%stackname%': {get_param: 'OS::stack_name'}
840 ServiceNetMap: {get_param: ServiceNetMap}
841 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
844 type: OS::Heat::ResourceGroup
847 count: {get_param: ObjectStorageCount}
849 type: OS::TripleO::ObjectStorage
851 KeyName: {get_param: KeyName}
852 Flavor: {get_param: OvercloudSwiftStorageFlavor}
853 HashSuffix: {get_param: SwiftHashSuffix}
854 MountCheck: {get_param: SwiftMountCheck}
855 MinPartHours: {get_param: SwiftMinPartHours}
856 PartPower: {get_param: SwiftPartPower}
857 Image: {get_param: SwiftStorageImage}
858 Replicas: { get_param: SwiftReplicas}
859 NtpServer: {get_param: NtpServer}
860 UpdateIdentifier: {get_param: UpdateIdentifier}
861 ServiceNetMap: {get_param: ServiceNetMap}
864 template: {get_param: ObjectStorageHostnameFormat}
866 '%stackname%': {get_param: 'OS::stack_name'}
869 type: OS::Heat::ResourceGroup
872 count: {get_param: CephStorageCount}
874 type: OS::TripleO::CephStorage
876 Image: {get_param: CephStorageImage}
877 KeyName: {get_param: KeyName}
878 Flavor: {get_param: OvercloudCephStorageFlavor}
879 NtpServer: {get_param: NtpServer}
880 ServiceNetMap: {get_param: ServiceNetMap}
881 UpdateIdentifier: {get_param: UpdateIdentifier}
884 template: {get_param: CephStorageHostnameFormat}
886 '%stackname%': {get_param: 'OS::stack_name'}
889 type: OS::TripleO::Network::Ports::NetIpListMap
891 ExternalIpList: {get_attr: [Controller, external_ip_address]}
892 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
893 StorageIpList: {get_attr: [Controller, storage_ip_address]}
894 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
895 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
898 type: OS::TripleO::AllNodes::SoftwareConfig
900 compute_hosts: {get_attr: [Compute, hosts_entry]}
901 controller_hosts: {get_attr: [Controller, hosts_entry]}
902 controller_ips: {get_attr: [Controller, ip_address]}
903 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
904 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
905 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
906 controller_names: {get_attr: [Controller, hostname]}
907 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
908 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
909 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
910 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
911 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
912 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
913 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
914 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
915 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
916 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
917 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
918 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
919 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
920 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
921 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
922 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
923 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
926 type: OS::Heat::RandomString
930 MysqlClusterUniquePart:
931 type: OS::Heat::RandomString
936 type: OS::Heat::RandomString
939 salt: {get_param: RabbitCookieSalt}
941 # creates the network architecture
943 type: OS::TripleO::Network
946 type: OS::Neutron::Port
949 name: control_virtual_ip
950 network_id: {get_param: NeutronControlPlaneID}
951 fixed_ips: {get_param: ControlFixedIPs}
952 replacement_policy: AUTO
956 type: OS::TripleO::Controller::Ports::RedisVipPort
958 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
959 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
960 PortName: redis_virtual_ip
961 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
965 type: OS::Neutron::Port
968 name: public_virtual_ip
969 network: {get_param: PublicVirtualNetwork}
970 fixed_ips: {get_param: PublicVirtualFixedIPs}
971 replacement_policy: AUTO
973 InternalApiVirtualIP:
975 type: OS::TripleO::Controller::Ports::InternalApiPort
977 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
978 PortName: internal_api_virtual_ip
982 type: OS::TripleO::Controller::Ports::StoragePort
984 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
985 PortName: storage_virtual_ip
987 StorageMgmtVirtualIP:
989 type: OS::TripleO::Controller::Ports::StorageMgmtPort
991 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
992 PortName: storage_management_virtual_ip
995 type: OS::TripleO::Network::Ports::NetIpMap
997 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
998 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
999 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1000 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1001 # No tenant VIP required
1004 type: OS::TripleO::VipConfig
1007 type: OS::Heat::StructuredDeployments
1009 config: {get_resource: VipConfig}
1010 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1012 # service VIP mappings
1013 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1014 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1015 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1016 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1017 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1018 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1019 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1020 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1021 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1022 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1023 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1024 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1025 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1026 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1027 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1028 # direct configuration of Virtual IPs for each network
1029 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1030 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1031 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1032 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1033 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1035 ControllerBootstrapNodeConfig:
1036 type: OS::TripleO::BootstrapNode::SoftwareConfig
1038 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1039 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1041 ControllerBootstrapNodeDeployment:
1042 type: OS::Heat::StructuredDeployments
1044 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1045 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1047 ControllerSwiftDeployment:
1048 type: OS::Heat::StructuredDeployments
1050 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1051 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1053 ObjectStorageSwiftDeployment:
1054 type: OS::Heat::StructuredDeployments
1056 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1057 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1059 SwiftDevicesAndProxyConfig:
1060 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1062 controller_swift_devices: {get_attr: [Controller, swift_device]}
1063 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1064 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1066 ComputeCephDeployment:
1067 type: OS::Heat::StructuredDeployments
1069 config: {get_attr: [CephClusterConfig, config_id]}
1070 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1072 ControllerCephDeployment:
1073 type: OS::Heat::StructuredDeployments
1075 config: {get_attr: [CephClusterConfig, config_id]}
1076 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1078 CephStorageCephDeployment:
1079 type: OS::Heat::StructuredDeployments
1081 config: {get_attr: [CephClusterConfig, config_id]}
1082 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1085 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1087 ceph_fsid: {get_param: CephClusterFSID}
1088 ceph_mon_key: {get_param: CephMonKey}
1089 ceph_admin_key: {get_param: CephAdminKey}
1090 ceph_mon_names: {get_attr: [Controller, hostname]}
1091 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1093 ControllerClusterConfig:
1094 type: OS::Heat::StructuredConfig
1096 group: os-apply-config
1099 nodes: {get_attr: [Controller, corosync_node]}
1103 nodes: {get_attr: [Controller, hostname]}
1105 nodes: {get_attr: [Controller, corosync_node]}
1107 nodes: {get_attr: [Controller, corosync_node]}
1109 ControllerClusterDeployment:
1110 type: OS::Heat::StructuredDeployments
1112 config: {get_resource: ControllerClusterConfig}
1113 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1115 ControllerAllNodesDeployment:
1116 type: OS::Heat::StructuredDeployments
1118 config: {get_attr: [allNodesConfig, config_id]}
1119 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1121 ComputeAllNodesDeployment:
1122 type: OS::Heat::StructuredDeployments
1124 config: {get_attr: [allNodesConfig, config_id]}
1125 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1127 BlockStorageAllNodesDeployment:
1128 type: OS::Heat::StructuredDeployments
1130 config: {get_attr: [allNodesConfig, config_id]}
1131 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1133 ObjectStorageAllNodesDeployment:
1134 type: OS::Heat::StructuredDeployments
1136 config: {get_attr: [allNodesConfig, config_id]}
1137 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1139 CephStorageAllNodesDeployment:
1140 type: OS::Heat::StructuredDeployments
1142 config: {get_attr: [allNodesConfig, config_id]}
1143 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1145 # Nested stack deployment runs after all other controller deployments
1146 ControllerNodesPostDeployment:
1147 type: OS::TripleO::ControllerPostDeployment
1148 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1150 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1151 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1153 ComputeNodesPostDeployment:
1154 type: OS::TripleO::ComputePostDeployment
1155 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1157 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1158 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1160 ObjectStorageNodesPostDeployment:
1161 type: OS::TripleO::ObjectStoragePostDeployment
1162 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1164 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1165 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1168 BlockStorageNodesPostDeployment:
1169 type: OS::TripleO::BlockStoragePostDeployment
1170 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1172 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1173 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1175 CephStorageNodesPostDeployment:
1176 type: OS::TripleO::CephStoragePostDeployment
1177 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1179 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1180 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1184 description: URL for the Overcloud Keystone service
1189 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}