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 NeutronExternalNetworkBridge:
80 description: Name of bridge used for external network traffic.
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 NeutronTunnelIdRanges:
153 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
154 of GRE tunnel IDs that are available for tenant network allocation
155 default: ["1:1000", ]
156 type: comma_delimited_list
159 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
160 of VXLAN VNI IDs that are available for tenant network allocation
161 default: ["1:1000", ]
162 type: comma_delimited_list
163 NeutronMechanismDrivers:
164 default: 'openvswitch'
166 The mechanism drivers for the Neutron tenant network. To specify multiple
167 values, use a comma separated string, like so: 'openvswitch,l2_population'
169 NeutronAllowL3AgentFailover:
171 description: Allow automatic l3-agent failover
175 description: Whether to enable l3-agent HA
177 NeutronDhcpAgentsPerNetwork:
180 description: The number of neutron dhcp agents to schedule per network
183 description: The password for the nova service account, used by nova-api.
191 description: Should MongoDb journaling be disabled
193 PublicVirtualFixedIPs:
196 Control the IP allocation for the PublicVirtualInterface port. E.g.
197 [{'ip_address':'1.2.3.4'}]
199 PublicVirtualNetwork:
203 Neutron network to allocate public virtual IP port on.
207 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
208 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
211 description: The username for RabbitMQ
215 description: The password for RabbitMQ
221 Rabbit client subscriber parameter to specify
222 an SSL connection to the RabbitMQ host.
226 description: Set rabbit subscriber port, change this if using SSL
228 SnmpdReadonlyUserName:
229 default: ro_snmp_user
230 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
232 SnmpdReadonlyUserPassword:
234 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
238 # Controller-specific params
241 description: The keystone auth secret.
244 CinderEnableRbdBackend:
246 description: Whether to enable or not the Rbd backend for Cinder
248 CinderLVMLoopDeviceSize:
250 description: The size of the loopback file used by the cinder LVM driver.
254 description: The password for the cinder service account, used by cinder-api.
259 description: The iSCSI helper to use with cinder.
264 controllerExtraConfig:
267 Controller specific configuration to inject into the cluster. Same
268 structure as ExtraConfig.
272 default: overcloud-control
274 - custom_constraint: glance.image
275 OvercloudControlFlavor:
276 description: Flavor for control nodes to request when deploying.
279 - custom_constraint: nova.flavor
280 ControlVirtualInterface:
282 description: Interface where virtual ip will be assigned.
286 description: Whether to enable fencing in Pacemaker or not.
290 description: Whether to use Galera instead of regular MariaDB.
292 ControllerEnableCephStorage:
294 description: Whether to deploy Ceph Storage (OSD) on the Controller
296 ControllerEnableSwiftStorage:
298 description: Whether to enable Swift Storage on the Controller
303 Additional configuration to inject into the cluster. The JSON should have
304 the following structure:
307 [{"section": "SECTIONNAME",
309 [{"option": "OPTIONNAME",
320 [{"section": "default",
322 [{"option": "force_config_drive",
329 [{"option": "driver",
330 "value": "nova.cells.rpc_driver.CellsRPCDriver"
341 Pacemaker fencing configuration. The JSON should have
342 the following structure:
346 "agent": "AGENT_NAME",
347 "host_mac": "HOST_MAC_ADDRESS",
348 "params": {"PARAM_NAME": "PARAM_VALUE"}
356 "agent": "fence_xvm",
357 "host_mac": "52:54:00:aa:bb:cc",
359 "multicast_address": "225.0.0.12",
360 "port": "baremetal_0",
362 "manage_key_file": true,
363 "key_file": "/etc/fence_xvm.key",
364 "key_file_password": "abcdef"
371 description: The filepath of the file to use for logging messages from Glance.
374 GlanceNotifierStrategy:
375 description: Strategy to use for Glance notification queue
380 description: The password for the glance service account, used by the glance services.
385 description: The short name of the Glance backend to use. Should be one
386 of swift, rbd or file
389 - allowed_values: ['swift', 'file', 'rbd']
392 description: The password for the Heat service account, used by the Heat services.
395 HeatStackDomainAdminPassword:
396 description: Password for heat_domain_admin user.
400 KeystoneCACertificate:
402 description: Keystone self-signed certificate authority certificate.
404 KeystoneSigningCertificate:
406 description: Keystone certificate for verifying token validity.
410 description: Keystone key for signing tokens.
413 KeystoneSSLCertificate:
415 description: Keystone certificate for verifying token validity.
417 KeystoneSSLCertificateKey:
419 description: Keystone key for signing tokens.
422 MysqlInnodbBufferPoolSize:
424 Specifies the size of the buffer pool in megabytes. Setting to
425 zero should be interpreted as "no value" and will defer to the
430 description: Configures MySQL max_connections config setting
433 NeutronDnsmasqOptions:
434 default: 'dhcp-option-force=26,1400'
435 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
437 NeutronPublicInterfaceDefaultRoute:
439 description: A custom default route for the NeutronPublicInterface.
441 NeutronPublicInterfaceIP:
443 description: A custom IP address to put onto the NeutronPublicInterface.
445 NeutronPublicInterfaceRawDevice:
447 description: If set, the public interface is a vlan with this device as the raw device.
449 PublicVirtualInterface:
452 Specifies the interface where the public-facing virtual ip will be assigned.
453 This should be int_public when a VLAN is being used.
457 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
462 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
467 description: If set, the contents of an SSL certificate authority file.
471 description: A random string to be used as a salt when hashing to determine mappings in the ring.
476 description: The password for the swift service account, used by the swift proxy services.
481 description: Value of mount_check in Swift account/container/object -server.conf
486 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
489 description: Partition Power to use when building Swift rings
494 description: How many replicas to use in the swift rings.
496 # Compute-specific params
497 CeilometerComputeAgent:
498 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
502 - allowed_values: ['', Present]
506 HypervisorNeutronPhysicalBridge:
509 An OVS bridge to create on each hypervisor. This defaults to br-ex the
510 same as the control plane nodes, as we have a uniform configuration of
511 the openvswitch agent. Typically should not need to be changed.
513 HypervisorNeutronPublicInterface:
515 description: What interface to add to the HypervisorNeutronPhysicalBridge.
517 NeutronNetworkVLANRanges:
518 default: 'datacentre'
520 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
521 Neutron documentation for permitted values. Defaults to permitting any
522 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
523 type: comma_delimited_list
526 default: libvirt.LibvirtDriver
527 NovaComputeExtraConfig:
530 NovaCompute specific configuration to inject into the cluster. Same
531 structure as ExtraConfig.
533 NovaComputeLibvirtType:
536 NovaEnableRbdBackend:
538 description: Whether to enable or not the Rbd backend for Nova
542 default: overcloud-compute
544 - custom_constraint: glance.image
545 OvercloudComputeFlavor:
546 description: Use this flavor
549 - custom_constraint: nova.flavor
552 NeutronTenantNetwork: tenant
553 CeilometerApiNetwork: internal_api
554 MongoDbNetwork: internal_api
555 CinderApiNetwork: internal_api
556 CinderIscsiNetwork: storage
557 GlanceApiNetwork: storage
558 GlanceRegistryNetwork: internal_api
559 KeystoneAdminApiNetwork: internal_api
560 KeystonePublicApiNetwork: internal_api
561 NeutronApiNetwork: internal_api
562 HeatApiNetwork: internal_api
563 NovaApiNetwork: internal_api
564 NovaMetadataNetwork: internal_api
565 NovaVncProxyNetwork: internal_api
566 SwiftMgmtNetwork: storage_mgmt
567 SwiftProxyNetwork: storage
568 HorizonNetwork: internal_api
569 MemcachedNetwork: internal_api
570 RabbitMqNetwork: internal_api
571 RedisNetwork: internal_api
572 MysqlNetwork: internal_api
573 CephClusterNetwork: storage_mgmt
574 CephPublicNetwork: storage
575 ControllerHostnameResolveNetwork: internal_api
576 ComputeHostnameResolveNetwork: internal_api
577 BlockStorageHostnameResolveNetwork: internal_api
578 ObjectStorageHostnameResolveNetwork: internal_api
579 CephStorageHostnameResolveNetwork: storage
580 description: Mapping of service_name -> network name. Typically set
581 via parameter_defaults in the resource registry.
584 # Block storage specific parameters
589 default: overcloud-cinder-volume
591 OvercloudBlockStorageFlavor:
592 description: Flavor for block storage nodes to request when deploying.
595 - custom_constraint: nova.flavor
597 # Object storage specific parameters
601 OvercloudSwiftStorageFlavor:
602 description: Flavor for Swift storage nodes to request when deploying.
605 - custom_constraint: nova.flavor
607 default: overcloud-swift-storage
610 # Ceph storage specific parameters
615 default: overcloud-ceph-storage
617 OvercloudCephStorageFlavor:
619 description: Flavor for Ceph storage nodes to request when deploying.
622 - custom_constraint: nova.flavor
624 # Hostname format for each role
625 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
626 # and %stackname% is replaced with OS::stack_name in the template below.
627 # If you want to use the heat generated names, pass '' (empty string).
628 ControllerHostnameFormat:
630 description: Format for Controller node hostnames
631 default: '%stackname%-controller-%index%'
632 ComputeHostnameFormat:
634 description: Format for Compute node hostnames
635 default: '%stackname%-novacompute-%index%'
636 BlockStorageHostnameFormat:
638 description: Format for BlockStorage node hostnames
639 default: '%stackname%-blockstorage-%index%'
640 ObjectStorageHostnameFormat:
642 description: Format for SwiftStorage node hostnames
643 default: '%stackname%-objectstorage-%index%'
644 CephStorageHostnameFormat:
646 description: Format for CephStorage node hostnames
647 default: '%stackname%-cephstorage-%index%'
649 # Identifiers to trigger tasks on nodes
654 Setting to a previously unused value during stack-update will trigger
655 package update on all nodes
657 # If you want to remove a specific node from a resource group, you can pass
658 # the node name or id as a <Group>RemovalPolicies parameter, for example:
659 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
660 ControllerRemovalPolicies:
664 List of resources to be removed from ControllerResourceGroup when
665 doing an update which requires removal of specific resources.
666 ComputeRemovalPolicies:
670 List of resources to be removed from ComputeResourceGroup when
671 doing an update which requires removal of specific resources.
672 BlockStorageRemovalPolicies:
676 List of resources to be removed from BlockStorageResourceGroup when
677 doing an update which requires removal of specific resources.
678 ObjectStorageRemovalPolicies:
682 List of resources to be removed from ObjectStorageResourceGroup when
683 doing an update which requires removal of specific resources.
684 CephStorageRemovalPolicies:
688 List of resources to be removed from CephStorageResourceGroup when
689 doing an update which requires removal of specific resources.
694 HeatAuthEncryptionKey:
695 type: OS::Heat::RandomString
698 type: OS::Heat::RandomString
703 type: OS::Heat::RandomString
708 type: OS::Heat::ResourceGroup
711 count: {get_param: ControllerCount}
712 removal_policies: {get_param: ControllerRemovalPolicies}
714 type: OS::TripleO::Controller
716 AdminPassword: {get_param: AdminPassword}
717 AdminToken: {get_param: AdminToken}
718 CeilometerBackend: {get_param: CeilometerBackend}
719 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
720 CeilometerPassword: {get_param: CeilometerPassword}
721 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
722 CinderPassword: {get_param: CinderPassword}
723 CinderISCSIHelper: {get_param: CinderISCSIHelper}
724 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
725 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
726 CloudName: {get_param: CloudName}
727 ControlVirtualInterface: {get_param: ControlVirtualInterface}
728 ControllerExtraConfig: {get_param: controllerExtraConfig}
729 Debug: {get_param: Debug}
730 EnableFencing: {get_param: EnableFencing}
731 EnableGalera: {get_param: EnableGalera}
732 EnableCephStorage: {get_param: ControllerEnableCephStorage}
733 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
734 ExtraConfig: {get_param: ExtraConfig}
735 FencingConfig: {get_param: FencingConfig}
736 Flavor: {get_param: OvercloudControlFlavor}
737 GlancePort: {get_param: GlancePort}
738 GlanceProtocol: {get_param: GlanceProtocol}
739 GlancePassword: {get_param: GlancePassword}
740 GlanceBackend: {get_param: GlanceBackend}
741 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
742 GlanceLogFile: {get_param: GlanceLogFile}
743 HeatPassword: {get_param: HeatPassword}
744 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
745 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
746 HorizonSecret: {get_resource: HorizonSecret}
747 Image: {get_param: controllerImage}
748 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
749 KeyName: {get_param: KeyName}
750 KeystoneCACertificate: {get_param: KeystoneCACertificate}
751 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
752 KeystoneSigningKey: {get_param: KeystoneSigningKey}
753 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
754 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
755 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
756 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
757 MysqlMaxConnections: {get_param: MysqlMaxConnections}
758 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
759 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
760 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
761 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
762 NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
763 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
764 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
765 NeutronPublicInterface: {get_param: NeutronPublicInterface}
766 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
767 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
768 NeutronPassword: {get_param: NeutronPassword}
769 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
770 NeutronDVR: {get_param: NeutronDVR}
771 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
772 NeutronAgentMode: {get_param: NeutronAgentMode}
773 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
774 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
775 NeutronL3HA: {get_param: NeutronL3HA}
776 NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
777 NeutronNetworkType: {get_param: NeutronNetworkType}
778 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
779 NovaPassword: {get_param: NovaPassword}
780 NtpServer: {get_param: NtpServer}
781 MongoDbNoJournal: {get_param: MongoDbNoJournal}
782 PcsdPassword: {get_resource: PcsdPassword}
783 PublicVirtualInterface: {get_param: PublicVirtualInterface}
784 RabbitPassword: {get_param: RabbitPassword}
785 RabbitUserName: {get_param: RabbitUserName}
786 RabbitCookie: {get_attr: [RabbitCookie, value]}
787 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
788 RabbitClientPort: {get_param: RabbitClientPort}
789 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
790 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
791 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
792 SSLCertificate: {get_param: SSLCertificate}
793 SSLKey: {get_param: SSLKey}
794 SSLCACertificate: {get_param: SSLCACertificate}
795 SwiftHashSuffix: {get_param: SwiftHashSuffix}
796 SwiftMountCheck: {get_param: SwiftMountCheck}
797 SwiftMinPartHours: {get_param: SwiftMinPartHours}
798 SwiftPartPower: {get_param: SwiftPartPower}
799 SwiftPassword: {get_param: SwiftPassword}
800 SwiftReplicas: { get_param: SwiftReplicas}
801 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
802 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
803 ServiceNetMap: {get_param: ServiceNetMap}
804 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
805 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
806 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
807 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
808 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
809 UpdateIdentifier: {get_param: UpdateIdentifier}
812 template: {get_param: ControllerHostnameFormat}
814 '%stackname%': {get_param: 'OS::stack_name'}
817 type: OS::Heat::ResourceGroup
820 count: {get_param: ComputeCount}
821 removal_policies: {get_param: ComputeRemovalPolicies}
823 type: OS::TripleO::Compute
825 AdminPassword: {get_param: AdminPassword}
826 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
827 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
828 CeilometerPassword: {get_param: CeilometerPassword}
829 Debug: {get_param: Debug}
830 ExtraConfig: {get_param: ExtraConfig}
831 Flavor: {get_param: OvercloudComputeFlavor}
832 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
833 GlancePort: {get_param: GlancePort}
834 GlanceProtocol: {get_param: GlanceProtocol}
835 Image: {get_param: NovaImage}
836 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
837 KeyName: {get_param: KeyName}
838 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
839 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
840 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
841 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
842 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
843 NeutronNetworkType: {get_param: NeutronNetworkType}
844 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
845 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
846 NeutronPassword: {get_param: NeutronPassword}
847 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
848 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
849 NeutronDVR: {get_param: NeutronDVR}
850 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
851 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
852 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
853 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
854 # L3 HA and Failover is not relevant for Computes, should be removed
855 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
856 NeutronL3HA: {get_param: NeutronL3HA}
857 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
858 NovaComputeDriver: {get_param: NovaComputeDriver}
859 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
860 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
861 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
862 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
863 NovaPassword: {get_param: NovaPassword}
864 NtpServer: {get_param: NtpServer}
865 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
866 RabbitPassword: {get_param: RabbitPassword}
867 RabbitUserName: {get_param: RabbitUserName}
868 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
869 RabbitClientPort: {get_param: RabbitClientPort}
870 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
871 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
872 ServiceNetMap: {get_param: ServiceNetMap}
873 UpdateIdentifier: {get_param: UpdateIdentifier}
876 template: {get_param: ComputeHostnameFormat}
878 '%stackname%': {get_param: 'OS::stack_name'}
881 type: OS::Heat::ResourceGroup
884 count: {get_param: BlockStorageCount}
885 removal_policies: {get_param: BlockStorageRemovalPolicies}
887 type: OS::TripleO::BlockStorage
889 Debug: {get_param: Debug}
890 Image: {get_param: BlockStorageImage}
891 CinderISCSIHelper: {get_param: CinderISCSIHelper}
892 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
893 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
894 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
895 CinderPassword: {get_param: CinderPassword}
896 KeyName: {get_param: KeyName}
897 Flavor: {get_param: OvercloudBlockStorageFlavor}
898 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
899 GlancePort: {get_param: GlancePort}
900 GlanceProtocol: {get_param: GlanceProtocol}
901 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
902 RabbitPassword: {get_param: RabbitPassword}
903 RabbitUserName: {get_param: RabbitUserName}
904 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
905 RabbitClientPort: {get_param: RabbitClientPort}
906 NtpServer: {get_param: NtpServer}
907 UpdateIdentifier: {get_param: UpdateIdentifier}
910 template: {get_param: BlockStorageHostnameFormat}
912 '%stackname%': {get_param: 'OS::stack_name'}
913 ServiceNetMap: {get_param: ServiceNetMap}
914 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
917 type: OS::Heat::ResourceGroup
920 count: {get_param: ObjectStorageCount}
921 removal_policies: {get_param: ObjectStorageRemovalPolicies}
923 type: OS::TripleO::ObjectStorage
925 KeyName: {get_param: KeyName}
926 Flavor: {get_param: OvercloudSwiftStorageFlavor}
927 HashSuffix: {get_param: SwiftHashSuffix}
928 MountCheck: {get_param: SwiftMountCheck}
929 MinPartHours: {get_param: SwiftMinPartHours}
930 PartPower: {get_param: SwiftPartPower}
931 Image: {get_param: SwiftStorageImage}
932 Replicas: { get_param: SwiftReplicas}
933 NtpServer: {get_param: NtpServer}
934 UpdateIdentifier: {get_param: UpdateIdentifier}
935 ServiceNetMap: {get_param: ServiceNetMap}
938 template: {get_param: ObjectStorageHostnameFormat}
940 '%stackname%': {get_param: 'OS::stack_name'}
943 type: OS::Heat::ResourceGroup
946 count: {get_param: CephStorageCount}
947 removal_policies: {get_param: CephStorageRemovalPolicies}
949 type: OS::TripleO::CephStorage
951 Image: {get_param: CephStorageImage}
952 KeyName: {get_param: KeyName}
953 Flavor: {get_param: OvercloudCephStorageFlavor}
954 NtpServer: {get_param: NtpServer}
955 ServiceNetMap: {get_param: ServiceNetMap}
956 UpdateIdentifier: {get_param: UpdateIdentifier}
959 template: {get_param: CephStorageHostnameFormat}
961 '%stackname%': {get_param: 'OS::stack_name'}
964 type: OS::TripleO::Network::Ports::NetIpListMap
966 ExternalIpList: {get_attr: [Controller, external_ip_address]}
967 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
968 StorageIpList: {get_attr: [Controller, storage_ip_address]}
969 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
970 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
973 type: OS::TripleO::AllNodes::SoftwareConfig
975 compute_hosts: {get_attr: [Compute, hosts_entry]}
976 controller_hosts: {get_attr: [Controller, hosts_entry]}
977 controller_ips: {get_attr: [Controller, ip_address]}
978 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
979 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
980 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
981 controller_names: {get_attr: [Controller, hostname]}
982 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
983 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
984 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
985 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
986 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
987 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
988 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
989 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
990 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
991 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
992 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
993 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
994 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
995 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
996 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
997 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
998 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1001 type: OS::Heat::RandomString
1005 MysqlClusterUniquePart:
1006 type: OS::Heat::RandomString
1011 type: OS::Heat::RandomString
1014 salt: {get_param: RabbitCookieSalt}
1016 # creates the network architecture
1018 type: OS::TripleO::Network
1021 type: OS::Neutron::Port
1022 depends_on: Networks
1024 name: control_virtual_ip
1025 network_id: {get_param: NeutronControlPlaneID}
1026 fixed_ips: {get_param: ControlFixedIPs}
1027 replacement_policy: AUTO
1030 depends_on: Networks
1031 type: OS::TripleO::Controller::Ports::RedisVipPort
1033 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1034 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1035 PortName: redis_virtual_ip
1036 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1040 type: OS::Neutron::Port
1041 depends_on: Networks
1043 name: public_virtual_ip
1044 network: {get_param: PublicVirtualNetwork}
1045 fixed_ips: {get_param: PublicVirtualFixedIPs}
1046 replacement_policy: AUTO
1048 InternalApiVirtualIP:
1049 depends_on: Networks
1050 type: OS::TripleO::Controller::Ports::InternalApiPort
1052 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1053 PortName: internal_api_virtual_ip
1056 depends_on: Networks
1057 type: OS::TripleO::Controller::Ports::StoragePort
1059 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1060 PortName: storage_virtual_ip
1062 StorageMgmtVirtualIP:
1063 depends_on: Networks
1064 type: OS::TripleO::Controller::Ports::StorageMgmtPort
1066 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1067 PortName: storage_management_virtual_ip
1070 type: OS::TripleO::Network::Ports::NetIpMap
1072 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1073 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1074 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1075 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1076 # No tenant VIP required
1079 type: OS::TripleO::VipConfig
1082 type: OS::Heat::StructuredDeployments
1084 config: {get_resource: VipConfig}
1085 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1087 # service VIP mappings
1088 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1089 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1090 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1091 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1092 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1093 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1094 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1095 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1096 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1097 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1098 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1099 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1100 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1101 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1102 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1103 # direct configuration of Virtual IPs for each network
1104 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1105 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1106 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
1107 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
1108 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1110 ControllerBootstrapNodeConfig:
1111 type: OS::TripleO::BootstrapNode::SoftwareConfig
1113 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1114 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1116 ControllerBootstrapNodeDeployment:
1117 type: OS::Heat::StructuredDeployments
1119 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1120 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1122 ControllerSwiftDeployment:
1123 type: OS::Heat::StructuredDeployments
1125 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1126 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1128 ObjectStorageSwiftDeployment:
1129 type: OS::Heat::StructuredDeployments
1131 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1132 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1134 SwiftDevicesAndProxyConfig:
1135 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1137 controller_swift_devices: {get_attr: [Controller, swift_device]}
1138 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1139 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1141 ComputeCephDeployment:
1142 type: OS::Heat::StructuredDeployments
1144 config: {get_attr: [CephClusterConfig, config_id]}
1145 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1147 ControllerCephDeployment:
1148 type: OS::Heat::StructuredDeployments
1150 config: {get_attr: [CephClusterConfig, config_id]}
1151 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1153 CephStorageCephDeployment:
1154 type: OS::Heat::StructuredDeployments
1156 config: {get_attr: [CephClusterConfig, config_id]}
1157 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1160 type: OS::TripleO::CephClusterConfig::SoftwareConfig
1162 ceph_fsid: {get_param: CephClusterFSID}
1163 ceph_mon_key: {get_param: CephMonKey}
1164 ceph_admin_key: {get_param: CephAdminKey}
1165 ceph_mon_names: {get_attr: [Controller, hostname]}
1166 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1168 ControllerClusterConfig:
1169 type: OS::Heat::StructuredConfig
1171 group: os-apply-config
1174 nodes: {get_attr: [Controller, corosync_node]}
1178 nodes: {get_attr: [Controller, hostname]}
1180 nodes: {get_attr: [Controller, corosync_node]}
1182 nodes: {get_attr: [Controller, corosync_node]}
1184 ControllerClusterDeployment:
1185 type: OS::Heat::StructuredDeployments
1187 config: {get_resource: ControllerClusterConfig}
1188 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1190 ControllerAllNodesDeployment:
1191 type: OS::Heat::StructuredDeployments
1193 config: {get_attr: [allNodesConfig, config_id]}
1194 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1196 ComputeAllNodesDeployment:
1197 type: OS::Heat::StructuredDeployments
1199 config: {get_attr: [allNodesConfig, config_id]}
1200 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1202 BlockStorageAllNodesDeployment:
1203 type: OS::Heat::StructuredDeployments
1205 config: {get_attr: [allNodesConfig, config_id]}
1206 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1208 ObjectStorageAllNodesDeployment:
1209 type: OS::Heat::StructuredDeployments
1211 config: {get_attr: [allNodesConfig, config_id]}
1212 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1214 CephStorageAllNodesDeployment:
1215 type: OS::Heat::StructuredDeployments
1217 config: {get_attr: [allNodesConfig, config_id]}
1218 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1220 # Nested stack deployment runs after all other controller deployments
1221 ControllerNodesPostDeployment:
1222 type: OS::TripleO::ControllerPostDeployment
1223 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1225 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1226 NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
1228 ComputeNodesPostDeployment:
1229 type: OS::TripleO::ComputePostDeployment
1230 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1232 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1233 NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
1235 ObjectStorageNodesPostDeployment:
1236 type: OS::TripleO::ObjectStoragePostDeployment
1237 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1239 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1240 NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
1243 BlockStorageNodesPostDeployment:
1244 type: OS::TripleO::BlockStoragePostDeployment
1245 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1247 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1248 NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
1250 CephStorageNodesPostDeployment:
1251 type: OS::TripleO::CephStoragePostDeployment
1252 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1254 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1255 NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
1259 description: URL for the Overcloud Keystone service
1264 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1267 description: Controller VIP for public API endpoints
1268 value: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
1269 CeilometerInternalVip:
1270 description: VIP for Ceilometer API internal endpoint
1271 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1273 description: VIP for Cinder API internal endpoint
1274 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1276 description: VIP for Glance API internal endpoint
1277 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1279 description: VIP for Heat API internal endpoint
1280 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1281 KeystoneInternalVip:
1282 description: VIP for Keystone API internal endpoint
1283 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1285 description: VIP for Neutron API internal endpoint
1286 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1288 description: VIP for Nova API internal endpoint
1289 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1291 description: VIP for Swift Proxy internal endpoint
1292 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}