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 CinderEnableNfsBackend:
47 description: Whether to enable or not the NFS backend for Cinder
49 CinderEnableIscsiBackend:
51 description: Whether to enable or not the Iscsi backend for Cinder
55 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
59 description: Should be used for arbitrary ips.
63 description: Set to True to enable debugging on all services.
67 description: Glance port.
71 description: Protocol to use when connecting to glance, set to https for SSL.
74 default: 'REBUILD_PRESERVE_EPHEMERAL'
75 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
79 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
82 - custom_constraint: nova.keypair
83 NeutronBridgeMappings:
85 The OVS logical->physical bridge mappings to use. See the Neutron
86 documentation for details. Defaults to mapping br-ex - the external
87 bridge on hosts - to a physical name 'datacentre' which can be used
88 to create provider networks (and we use this for the default floating
89 network) - if changing this either use different post-install network
90 scripts or be sure to keep 'datacentre' as a mapping network name.
92 default: "datacentre:br-ex"
93 NeutronControlPlaneID:
96 description: Neutron ID for ctlplane network.
97 NeutronEnableTunnelling:
102 default: 'datacentre'
104 If set, flat networks to configure in neutron plugins. Defaults to
105 'datacentre' to permit external network creation.
108 description: The tenant network type for Neutron, either gre or vxlan.
112 description: The password for the neutron service account, used by neutron agents.
115 NeutronPublicInterface:
117 description: What interface to bridge onto br-ex for network nodes.
119 NeutronPublicInterfaceTag:
122 VLAN tag for creating a public VLAN. The tag will be used to
123 create an access port on the exterior bridge for each control plane node,
124 and that port will be given the IP address returned by neutron from the
125 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
126 overcloud.yaml to include the deployment of VLAN ports to the control
129 NeutronComputeAgentMode:
131 description: Agent mode for the neutron-l3-agent on the compute hosts
135 description: Agent mode for the neutron-l3-agent on the controller hosts
139 description: Whether to configure Neutron Distributed Virtual Routers
141 NeutronMetadataProxySharedSecret:
143 description: Shared secret to prevent spoofing
148 The tunnel types for the Neutron tenant network. To specify multiple
149 values, use a comma separated string, like so: 'gre,vxlan'
151 NeutronMechanismDrivers:
152 default: 'openvswitch'
154 The mechanism drivers for the Neutron tenant network. To specify multiple
155 values, use a comma separated string, like so: 'openvswitch,l2_population'
157 NeutronAllowL3AgentFailover:
159 description: Allow automatic l3-agent failover
163 description: Whether to enable l3-agent HA
167 description: The password for the nova service account, used by nova-api.
173 PublicVirtualFixedIPs:
176 Control the IP allocation for the PublicVirtualInterface port. E.g.
177 [{'ip_address':'1.2.3.4'}]
179 PublicVirtualNetwork:
183 Neutron network to allocate public virtual IP port on.
187 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
188 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
191 description: The username for RabbitMQ
195 description: The password for RabbitMQ
201 Rabbit client subscriber parameter to specify
202 an SSL connection to the RabbitMQ host.
206 description: Set rabbit subscriber port, change this if using SSL
208 SnmpdReadonlyUserName:
209 default: ro_snmp_user
210 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
212 SnmpdReadonlyUserPassword:
214 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
218 # Controller-specific params
221 description: The keystone auth secret.
224 CinderEnableRbdBackend:
226 description: Whether to enable or not the Rbd backend for Cinder
228 CinderLVMLoopDeviceSize:
230 description: The size of the loopback file used by the cinder LVM driver.
232 CinderNfsMountOptions:
235 Mount options for NFS mounts used by Cinder NFS backend. Effective
236 when CinderEnableNfsBackend is true.
241 NFS servers used by Cinder NFS backend. Effective when
242 CinderEnableNfsBackend is true.
243 type: comma_delimited_list
246 description: The password for the cinder service account, used by cinder-api.
251 description: The iSCSI helper to use with cinder.
256 controllerExtraConfig:
259 Controller specific configuration to inject into the cluster. Same
260 structure as ExtraConfig.
264 default: overcloud-control
266 - custom_constraint: glance.image
267 OvercloudControlFlavor:
268 description: Flavor for control nodes to request when deploying.
271 - custom_constraint: nova.flavor
272 ControlVirtualInterface:
274 description: Interface where virtual ip will be assigned.
278 description: Whether to enable fencing in Pacemaker or not.
282 description: Whether to use Galera instead of regular MariaDB.
284 ControllerEnableCephStorage:
286 description: Whether to deploy Ceph Storage (OSD) on the Controller
288 ControllerEnableSwiftStorage:
290 description: Whether to enable Swift Storage on the Controller
295 Additional configuration to inject into the cluster. The JSON should have
296 the following structure:
299 [{"section": "SECTIONNAME",
301 [{"option": "OPTIONNAME",
312 [{"section": "default",
314 [{"option": "force_config_drive",
321 [{"option": "driver",
322 "value": "nova.cells.rpc_driver.CellsRPCDriver"
333 Pacemaker fencing configuration. The JSON should have
334 the following structure:
338 "agent": "AGENT_NAME",
339 "host_mac": "HOST_MAC_ADDRESS",
340 "params": {"PARAM_NAME": "PARAM_VALUE"}
348 "agent": "fence_xvm",
349 "host_mac": "52:54:00:aa:bb:cc",
351 "multicast_address": "225.0.0.12",
352 "port": "baremetal_0",
354 "manage_key_file": true,
355 "key_file": "/etc/fence_xvm.key",
356 "key_file_password": "abcdef"
363 description: The filepath of the file to use for logging messages from Glance.
366 GlanceNotifierStrategy:
367 description: Strategy to use for Glance notification queue
372 description: The password for the glance service account, used by the glance services.
377 description: The short name of the Glance backend to use. Should be one
378 of swift, rbd or file
381 - allowed_values: ['swift', 'file', 'rbd']
384 description: The password for the Heat service account, used by the Heat services.
387 HeatStackDomainAdminPassword:
388 description: Password for heat_domain_admin user.
392 KeystoneCACertificate:
394 description: Keystone self-signed certificate authority certificate.
396 KeystoneSigningCertificate:
398 description: Keystone certificate for verifying token validity.
402 description: Keystone key for signing tokens.
405 KeystoneSSLCertificate:
407 description: Keystone certificate for verifying token validity.
409 KeystoneSSLCertificateKey:
411 description: Keystone key for signing tokens.
414 MysqlInnodbBufferPoolSize:
416 Specifies the size of the buffer pool in megabytes. Setting to
417 zero should be interpreted as "no value" and will defer to the
421 NeutronDnsmasqOptions:
422 default: 'dhcp-option-force=26,1400'
423 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
425 NeutronPublicInterfaceDefaultRoute:
427 description: A custom default route for the NeutronPublicInterface.
429 NeutronPublicInterfaceIP:
431 description: A custom IP address to put onto the NeutronPublicInterface.
433 NeutronPublicInterfaceRawDevice:
435 description: If set, the public interface is a vlan with this device as the raw device.
437 PublicVirtualInterface:
440 Specifies the interface where the public-facing virtual ip will be assigned.
441 This should be int_public when a VLAN is being used.
445 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
450 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
455 description: If set, the contents of an SSL certificate authority file.
459 description: A random string to be used as a salt when hashing to determine mappings in the ring.
464 description: The password for the swift service account, used by the swift proxy services.
469 description: Value of mount_check in Swift account/container/object -server.conf
474 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
477 description: Partition Power to use when building Swift rings
482 description: How many replicas to use in the swift rings.
484 # Compute-specific params
485 CeilometerComputeAgent:
486 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
490 - allowed_values: ['', Present]
494 HypervisorNeutronPhysicalBridge:
497 An OVS bridge to create on each hypervisor. This defaults to br-ex the
498 same as the control plane nodes, as we have a uniform configuration of
499 the openvswitch agent. Typically should not need to be changed.
501 HypervisorNeutronPublicInterface:
503 description: What interface to add to the HypervisorNeutronPhysicalBridge.
505 NeutronNetworkVLANRanges:
506 default: 'datacentre'
508 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
509 Neutron documentation for permitted values. Defaults to permitting any
510 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
511 type: comma_delimited_list
514 default: libvirt.LibvirtDriver
515 NovaComputeExtraConfig:
518 NovaCompute specific configuration to inject into the cluster. Same
519 structure as ExtraConfig.
521 NovaComputeLibvirtType:
524 NovaEnableRbdBackend:
526 description: Whether to enable or not the Rbd backend for Nova
530 default: overcloud-compute
532 - custom_constraint: glance.image
533 OvercloudComputeFlavor:
534 description: Use this flavor
537 - custom_constraint: nova.flavor
540 NeutronTenantNetwork: tenant
541 CeilometerApiNetwork: internal_api
542 MongoDbNetwork: internal_api
543 CinderApiNetwork: internal_api
544 CinderIscsiNetwork: storage
545 GlanceApiNetwork: storage
546 GlanceRegistryNetwork: internal_api
547 KeystoneAdminApiNetwork: internal_api
548 KeystonePublicApiNetwork: internal_api
549 NeutronApiNetwork: internal_api
550 HeatApiNetwork: internal_api
551 NovaApiNetwork: internal_api
552 NovaMetadataNetwork: internal_api
553 NovaVncProxyNetwork: internal_api
554 SwiftMgmtNetwork: storage_mgmt
555 SwiftProxyNetwork: storage
556 HorizonNetwork: internal_api
557 MemcachedNetwork: internal_api
558 RabbitMqNetwork: internal_api
559 RedisNetwork: internal_api
560 MysqlNetwork: internal_api
561 CephClusterNetwork: storage_mgmt
562 CephPublicNetwork: storage
563 description: Mapping of service_name -> network name. Typically set
564 via parameter_defaults in the resource registry.
567 # Block storage specific parameters
572 default: overcloud-cinder-volume
574 OvercloudBlockStorageFlavor:
575 description: Flavor for block storage nodes to request when deploying.
578 - custom_constraint: nova.flavor
580 # Object storage specific parameters
584 OvercloudSwiftStorageFlavor:
585 description: Flavor for Swift storage nodes to request when deploying.
588 - custom_constraint: nova.flavor
590 default: overcloud-swift-storage
593 # Ceph storage specific parameters
598 default: overcloud-ceph-storage
600 OvercloudCephStorageFlavor:
602 description: Flavor for Ceph storage nodes to request when deploying.
605 - custom_constraint: nova.flavor
607 # Hostname format for each role
608 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
609 # and %stackname% is replaced with OS::stack_name in the template below.
610 # If you want to use the heat generated names, pass '' (empty string).
611 ControllerHostnameFormat:
613 description: Format for Controller node hostnames
614 default: '%stackname%-controller-%index%'
615 ComputeHostnameFormat:
617 description: Format for Compute node hostnames
618 default: '%stackname%-novacompute-%index%'
619 BlockStorageHostnameFormat:
621 description: Format for BlockStorage node hostnames
622 default: '%stackname%-blockstorage-%index%'
623 ObjectStorageHostnameFormat:
625 description: Format for SwiftStorage node hostnames
626 default: '%stackname%-objectstorage-%index%'
627 CephStorageHostnameFormat:
629 description: Format for CephStorage node hostnames
630 default: '%stackname%-cephstorage-%index%'
632 # Identifiers to trigger tasks on nodes
637 Setting to a previously unused value during stack-update will trigger
638 package update on all nodes
644 HeatAuthEncryptionKey:
645 type: OS::Heat::RandomString
648 type: OS::Heat::RandomString
653 type: OS::Heat::RandomString
658 type: OS::Heat::ResourceGroup
661 count: {get_param: ControllerCount}
663 type: OS::TripleO::Controller
665 AdminPassword: {get_param: AdminPassword}
666 AdminToken: {get_param: AdminToken}
667 CeilometerBackend: {get_param: CeilometerBackend}
668 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
669 CeilometerPassword: {get_param: CeilometerPassword}
670 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
671 CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
672 CinderNfsServers: {get_param: CinderNfsServers}
673 CinderPassword: {get_param: CinderPassword}
674 CinderISCSIHelper: {get_param: CinderISCSIHelper}
675 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
676 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
677 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
678 CloudName: {get_param: CloudName}
679 ControlVirtualInterface: {get_param: ControlVirtualInterface}
680 ControllerExtraConfig: {get_param: controllerExtraConfig}
681 Debug: {get_param: Debug}
682 EnableFencing: {get_param: EnableFencing}
683 EnableGalera: {get_param: EnableGalera}
684 EnableCephStorage: {get_param: ControllerEnableCephStorage}
685 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
686 ExtraConfig: {get_param: ExtraConfig}
687 FencingConfig: {get_param: FencingConfig}
688 Flavor: {get_param: OvercloudControlFlavor}
689 GlancePort: {get_param: GlancePort}
690 GlanceProtocol: {get_param: GlanceProtocol}
691 GlancePassword: {get_param: GlancePassword}
692 GlanceBackend: {get_param: GlanceBackend}
693 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
694 GlanceLogFile: {get_param: GlanceLogFile}
695 HeatPassword: {get_param: HeatPassword}
696 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
697 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
698 HorizonSecret: {get_resource: HorizonSecret}
699 Image: {get_param: controllerImage}
700 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
701 KeyName: {get_param: KeyName}
702 KeystoneCACertificate: {get_param: KeystoneCACertificate}
703 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
704 KeystoneSigningKey: {get_param: KeystoneSigningKey}
705 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
706 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
707 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
708 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
709 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
710 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
711 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
712 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
713 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
714 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
715 NeutronPublicInterface: {get_param: NeutronPublicInterface}
716 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
717 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
718 NeutronPassword: {get_param: NeutronPassword}
719 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
720 NeutronDVR: {get_param: NeutronDVR}
721 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
722 NeutronAgentMode: {get_param: NeutronAgentMode}
723 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
724 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
725 NeutronL3HA: {get_param: NeutronL3HA}
726 NeutronNetworkType: {get_param: NeutronNetworkType}
727 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
728 NovaPassword: {get_param: NovaPassword}
729 NtpServer: {get_param: NtpServer}
730 PcsdPassword: {get_resource: PcsdPassword}
731 PublicVirtualInterface: {get_param: PublicVirtualInterface}
732 RabbitPassword: {get_param: RabbitPassword}
733 RabbitUserName: {get_param: RabbitUserName}
734 RabbitCookie: {get_attr: [RabbitCookie, value]}
735 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
736 RabbitClientPort: {get_param: RabbitClientPort}
737 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
738 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
739 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
740 SSLCertificate: {get_param: SSLCertificate}
741 SSLKey: {get_param: SSLKey}
742 SSLCACertificate: {get_param: SSLCACertificate}
743 SwiftHashSuffix: {get_param: SwiftHashSuffix}
744 SwiftMountCheck: {get_param: SwiftMountCheck}
745 SwiftMinPartHours: {get_param: SwiftMinPartHours}
746 SwiftPartPower: {get_param: SwiftPartPower}
747 SwiftPassword: {get_param: SwiftPassword}
748 SwiftReplicas: { get_param: SwiftReplicas}
749 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
750 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
751 ServiceNetMap: {get_param: ServiceNetMap}
752 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
753 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
754 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
755 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
756 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
757 UpdateIdentifier: {get_param: UpdateIdentifier}
760 template: {get_param: ControllerHostnameFormat}
762 '%stackname%': {get_param: 'OS::stack_name'}
765 type: OS::Heat::ResourceGroup
768 count: {get_param: ComputeCount}
770 type: OS::TripleO::Compute
772 AdminPassword: {get_param: AdminPassword}
773 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
774 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
775 CeilometerPassword: {get_param: CeilometerPassword}
776 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
777 Debug: {get_param: Debug}
778 ExtraConfig: {get_param: ExtraConfig}
779 Flavor: {get_param: OvercloudComputeFlavor}
780 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
781 GlancePort: {get_param: GlancePort}
782 GlanceProtocol: {get_param: GlanceProtocol}
783 Image: {get_param: NovaImage}
784 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
785 KeyName: {get_param: KeyName}
786 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
787 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
788 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
789 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
790 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
791 NeutronNetworkType: {get_param: NeutronNetworkType}
792 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
793 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
794 NeutronPassword: {get_param: NeutronPassword}
795 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
796 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
797 NeutronDVR: {get_param: NeutronDVR}
798 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
799 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
800 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
801 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
802 # L3 HA and Failover is not relevant for Computes, should be removed
803 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
804 NeutronL3HA: {get_param: NeutronL3HA}
805 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
806 NovaComputeDriver: {get_param: NovaComputeDriver}
807 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
808 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
809 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
810 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
811 NovaPassword: {get_param: NovaPassword}
812 NtpServer: {get_param: NtpServer}
813 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
814 RabbitPassword: {get_param: RabbitPassword}
815 RabbitUserName: {get_param: RabbitUserName}
816 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
817 RabbitClientPort: {get_param: RabbitClientPort}
818 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
819 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
820 ServiceNetMap: {get_param: ServiceNetMap}
821 UpdateIdentifier: {get_param: UpdateIdentifier}
824 template: {get_param: ComputeHostnameFormat}
826 '%stackname%': {get_param: 'OS::stack_name'}
829 type: OS::Heat::ResourceGroup
832 count: {get_param: BlockStorageCount}
834 type: OS::TripleO::BlockStorage
836 Debug: {get_param: Debug}
837 Image: {get_param: BlockStorageImage}
838 CinderISCSIHelper: {get_param: CinderISCSIHelper}
839 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
840 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
841 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
842 CinderPassword: {get_param: CinderPassword}
843 KeyName: {get_param: KeyName}
844 Flavor: {get_param: OvercloudBlockStorageFlavor}
845 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
846 GlancePort: {get_param: GlancePort}
847 GlanceProtocol: {get_param: GlanceProtocol}
848 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
849 RabbitPassword: {get_param: RabbitPassword}
850 RabbitUserName: {get_param: RabbitUserName}
851 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
852 RabbitClientPort: {get_param: RabbitClientPort}
853 NtpServer: {get_param: NtpServer}
854 UpdateIdentifier: {get_param: UpdateIdentifier}
857 template: {get_param: BlockStorageHostnameFormat}
859 '%stackname%': {get_param: 'OS::stack_name'}
860 ServiceNetMap: {get_param: ServiceNetMap}
861 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
864 type: OS::Heat::ResourceGroup
867 count: {get_param: ObjectStorageCount}
869 type: OS::TripleO::ObjectStorage
871 KeyName: {get_param: KeyName}
872 Flavor: {get_param: OvercloudSwiftStorageFlavor}
873 HashSuffix: {get_param: SwiftHashSuffix}
874 MountCheck: {get_param: SwiftMountCheck}
875 MinPartHours: {get_param: SwiftMinPartHours}
876 PartPower: {get_param: SwiftPartPower}
877 Image: {get_param: SwiftStorageImage}
878 Replicas: { get_param: SwiftReplicas}
879 NtpServer: {get_param: NtpServer}
880 UpdateIdentifier: {get_param: UpdateIdentifier}
881 ServiceNetMap: {get_param: ServiceNetMap}
884 template: {get_param: ObjectStorageHostnameFormat}
886 '%stackname%': {get_param: 'OS::stack_name'}
889 type: OS::Heat::ResourceGroup
892 count: {get_param: CephStorageCount}
894 type: OS::TripleO::CephStorage
896 Image: {get_param: CephStorageImage}
897 KeyName: {get_param: KeyName}
898 Flavor: {get_param: OvercloudCephStorageFlavor}
899 NtpServer: {get_param: NtpServer}
900 ServiceNetMap: {get_param: ServiceNetMap}
901 UpdateIdentifier: {get_param: UpdateIdentifier}
904 template: {get_param: CephStorageHostnameFormat}
906 '%stackname%': {get_param: 'OS::stack_name'}
909 type: OS::TripleO::Network::Ports::NetIpListMap
911 ExternalIpList: {get_attr: [Controller, external_ip_address]}
912 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
913 StorageIpList: {get_attr: [Controller, storage_ip_address]}
914 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
915 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
918 type: OS::TripleO::AllNodes::SoftwareConfig
920 compute_hosts: {get_attr: [Compute, hosts_entry]}
921 controller_hosts: {get_attr: [Controller, hosts_entry]}
922 controller_ips: {get_attr: [Controller, ip_address]}
923 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
924 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
925 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
926 controller_names: {get_attr: [Controller, hostname]}
927 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
928 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
929 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
930 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
931 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
932 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
933 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
934 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
935 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
936 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
937 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
938 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
939 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
940 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
941 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
942 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
943 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
946 type: OS::Heat::RandomString
950 MysqlClusterUniquePart:
951 type: OS::Heat::RandomString
956 type: OS::Heat::RandomString
959 salt: {get_param: RabbitCookieSalt}
961 # creates the network architecture
963 type: OS::TripleO::Network
966 type: OS::Neutron::Port
969 name: control_virtual_ip
970 network_id: {get_param: NeutronControlPlaneID}
971 fixed_ips: {get_param: ControlFixedIPs}
972 replacement_policy: AUTO
976 type: OS::TripleO::Controller::Ports::RedisVipPort
978 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
979 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
980 PortName: redis_virtual_ip
981 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
985 type: OS::Neutron::Port
988 name: public_virtual_ip
989 network: {get_param: PublicVirtualNetwork}
990 fixed_ips: {get_param: PublicVirtualFixedIPs}
991 replacement_policy: AUTO
993 InternalApiVirtualIP:
995 type: OS::TripleO::Controller::Ports::InternalApiPort
997 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
998 PortName: internal_api_virtual_ip
1001 depends_on: Networks
1002 type: OS::TripleO::Controller::Ports::StoragePort
1004 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1005 PortName: storage_virtual_ip
1007 StorageMgmtVirtualIP:
1008 depends_on: Networks
1009 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1011 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1012 PortName: storage_management_virtual_ip
1015 type: OS::TripleO::Network::Ports::NetIpMap
1017 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1018 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1019 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1020 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1021 # No tenant VIP required
1024 type: OS::TripleO::VipConfig
1027 type: OS::Heat::StructuredDeployments
1029 config: {get_resource: VipConfig}
1030 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1032 # service VIP mappings
1033 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1034 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1035 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1036 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1037 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1038 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1039 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1040 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1041 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1042 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1043 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1044 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1045 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1046 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1047 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1048 # direct configuration of Virtual IPs for each network
1049 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1050 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1051 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1052 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1053 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1055 ControllerBootstrapNodeConfig:
1056 type: OS::TripleO::BootstrapNode::SoftwareConfig
1058 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1059 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1061 ControllerBootstrapNodeDeployment:
1062 type: OS::Heat::StructuredDeployments
1064 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1065 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1067 ControllerSwiftDeployment:
1068 type: OS::Heat::StructuredDeployments
1070 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1071 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1073 ObjectStorageSwiftDeployment:
1074 type: OS::Heat::StructuredDeployments
1076 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1077 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1079 SwiftDevicesAndProxyConfig:
1080 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1082 controller_swift_devices: {get_attr: [Controller, swift_device]}
1083 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1084 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1086 ComputeCephDeployment:
1087 type: OS::Heat::StructuredDeployments
1089 config: {get_attr: [CephClusterConfig, config_id]}
1090 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1092 ControllerCephDeployment:
1093 type: OS::Heat::StructuredDeployments
1095 config: {get_attr: [CephClusterConfig, config_id]}
1096 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1098 CephStorageCephDeployment:
1099 type: OS::Heat::StructuredDeployments
1101 config: {get_attr: [CephClusterConfig, config_id]}
1102 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1105 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1107 ceph_fsid: {get_param: CephClusterFSID}
1108 ceph_mon_key: {get_param: CephMonKey}
1109 ceph_admin_key: {get_param: CephAdminKey}
1110 ceph_mon_names: {get_attr: [Controller, hostname]}
1111 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1113 ControllerClusterConfig:
1114 type: OS::Heat::StructuredConfig
1116 group: os-apply-config
1119 nodes: {get_attr: [Controller, corosync_node]}
1123 nodes: {get_attr: [Controller, hostname]}
1125 nodes: {get_attr: [Controller, corosync_node]}
1127 nodes: {get_attr: [Controller, corosync_node]}
1129 ControllerClusterDeployment:
1130 type: OS::Heat::StructuredDeployments
1132 config: {get_resource: ControllerClusterConfig}
1133 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1135 ControllerAllNodesDeployment:
1136 type: OS::Heat::StructuredDeployments
1138 config: {get_attr: [allNodesConfig, config_id]}
1139 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1141 ComputeAllNodesDeployment:
1142 type: OS::Heat::StructuredDeployments
1144 config: {get_attr: [allNodesConfig, config_id]}
1145 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1147 BlockStorageAllNodesDeployment:
1148 type: OS::Heat::StructuredDeployments
1150 config: {get_attr: [allNodesConfig, config_id]}
1151 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1153 ObjectStorageAllNodesDeployment:
1154 type: OS::Heat::StructuredDeployments
1156 config: {get_attr: [allNodesConfig, config_id]}
1157 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1159 CephStorageAllNodesDeployment:
1160 type: OS::Heat::StructuredDeployments
1162 config: {get_attr: [allNodesConfig, config_id]}
1163 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1165 # Nested stack deployment runs after all other controller deployments
1166 ControllerNodesPostDeployment:
1167 type: OS::TripleO::ControllerPostDeployment
1168 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1170 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1171 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1173 ComputeNodesPostDeployment:
1174 type: OS::TripleO::ComputePostDeployment
1175 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1177 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1178 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1180 ObjectStorageNodesPostDeployment:
1181 type: OS::TripleO::ObjectStoragePostDeployment
1182 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1184 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1185 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1188 BlockStorageNodesPostDeployment:
1189 type: OS::TripleO::BlockStoragePostDeployment
1190 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1192 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1193 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1195 CephStorageNodesPostDeployment:
1196 type: OS::TripleO::CephStoragePostDeployment
1197 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1199 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1200 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1204 description: URL for the Overcloud Keystone service
1209 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}