1 heat_template_version: 2015-04-30
4 Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
5 server,Dedicated RabbitMQ Server,Group of Nova Computes
8 # TODO(shadower): we should probably use the parameter groups to put
12 # Common parameters (not specific to a role)
15 description: The password for the keystone admin account, used for monitoring, querying neutron etc.
20 description: The ceilometer backend type.
22 CeilometerMeteringSecret:
24 description: Secret shared by the ceilometer services.
29 description: The password for the ceilometer service account.
32 # This has to be an UUID so for now we generate it outside the template
36 description: The Ceph cluster FSID. Must be a UUID.
39 description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
43 description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
45 CinderEnableIscsiBackend:
47 description: Whether to enable or not the Iscsi backend for Cinder
51 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
55 description: Should be used for arbitrary ips.
59 description: Set to True to enable debugging on all services.
61 DefaultSignalTransport:
63 description: Transport to use for software-config signals.
66 - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
69 description: Glance port.
73 description: Protocol to use when connecting to glance, set to https for SSL.
76 default: 'REBUILD_PRESERVE_EPHEMERAL'
77 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
81 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
84 - custom_constraint: nova.keypair
85 NeutronBridgeMappings:
87 The OVS logical->physical bridge mappings to use. See the Neutron
88 documentation for details. Defaults to mapping br-ex - the external
89 bridge on hosts - to a physical name 'datacentre' which can be used
90 to create provider networks (and we use this for the default floating
91 network) - if changing this either use different post-install network
92 scripts or be sure to keep 'datacentre' as a mapping network name.
94 default: "datacentre:br-ex"
95 NeutronControlPlaneID:
98 description: Neutron ID for ctlplane network.
99 NeutronEnableTunnelling:
104 default: 'datacentre'
106 If set, flat networks to configure in neutron plugins. Defaults to
107 'datacentre' to permit external network creation.
110 description: The tenant network type for Neutron, either gre or vxlan.
114 description: The password for the neutron service account, used by neutron agents.
117 NeutronPublicInterface:
119 description: What interface to bridge onto br-ex for network nodes.
121 NeutronPublicInterfaceTag:
124 VLAN tag for creating a public VLAN. The tag will be used to
125 create an access port on the exterior bridge for each control plane node,
126 and that port will be given the IP address returned by neutron from the
127 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
128 overcloud.yaml to include the deployment of VLAN ports to the control
131 NeutronComputeAgentMode:
133 description: Agent mode for the neutron-l3-agent on the compute hosts
137 description: Agent mode for the neutron-l3-agent on the controller hosts
141 description: Whether to configure Neutron Distributed Virtual Routers
143 NeutronMetadataProxySharedSecret:
145 description: Shared secret to prevent spoofing
150 The tunnel types for the Neutron tenant network. To specify multiple
151 values, use a comma separated string, like so: 'gre,vxlan'
153 NeutronMechanismDrivers:
154 default: 'openvswitch'
156 The mechanism drivers for the Neutron tenant network. To specify multiple
157 values, use a comma separated string, like so: 'openvswitch,l2_population'
159 NeutronAllowL3AgentFailover:
161 description: Allow automatic l3-agent failover
165 description: Whether to enable l3-agent HA
169 description: The password for the nova service account, used by nova-api.
175 PublicVirtualFixedIPs:
178 Control the IP allocation for the PublicVirtualInterface port. E.g.
179 [{'ip_address':'1.2.3.4'}]
181 PublicVirtualNetwork:
185 Neutron network to allocate public virtual IP port on.
189 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
190 # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
193 description: The username for RabbitMQ
197 description: The password for RabbitMQ
203 Rabbit client subscriber parameter to specify
204 an SSL connection to the RabbitMQ host.
208 description: Set rabbit subscriber port, change this if using SSL
210 SnmpdReadonlyUserName:
211 default: ro_snmp_user
212 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
214 SnmpdReadonlyUserPassword:
216 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
220 # Controller-specific params
223 description: The keystone auth secret.
226 CinderEnableRbdBackend:
228 description: Whether to enable or not the Rbd backend for Cinder
230 CinderLVMLoopDeviceSize:
232 description: The size of the loopback file used by the cinder LVM driver.
236 description: The password for the cinder service account, used by cinder-api.
241 description: The iSCSI helper to use with cinder.
246 controllerExtraConfig:
249 Controller specific configuration to inject into the cluster. Same
250 structure as ExtraConfig.
254 default: overcloud-control
256 - custom_constraint: glance.image
257 OvercloudControlFlavor:
258 description: Flavor for control nodes to request when deploying.
261 - custom_constraint: nova.flavor
262 ControlVirtualInterface:
264 description: Interface where virtual ip will be assigned.
268 description: Whether to use Galera instead of regular MariaDB.
270 ControllerEnableCephStorage:
272 description: Whether to deploy Ceph Storage (OSD) on the Controller
274 ControllerEnableSwiftStorage:
276 description: Whether to enable Swift Storage on the Controller
281 Additional configuration to inject into the cluster. The JSON should have
282 the following structure:
285 [{"section": "SECTIONNAME",
287 [{"option": "OPTIONNAME",
298 [{"section": "default",
300 [{"option": "force_config_drive",
307 [{"option": "driver",
308 "value": "nova.cells.rpc_driver.CellsRPCDriver"
317 description: The filepath of the file to use for logging messages from Glance.
320 GlanceNotifierStrategy:
321 description: Strategy to use for Glance notification queue
326 description: The password for the glance service account, used by the glance services.
331 description: The short name of the Glance backend to use. Should be one
332 of swift, rbd or file
335 - allowed_values: ['swift', 'file', 'rbd']
338 description: The password for the Heat service account, used by the Heat services.
341 HeatStackDomainAdminPassword:
342 description: Password for heat_domain_admin user.
346 KeystoneCACertificate:
348 description: Keystone self-signed certificate authority certificate.
350 KeystoneSigningCertificate:
352 description: Keystone certificate for verifying token validity.
356 description: Keystone key for signing tokens.
359 KeystoneSSLCertificate:
361 description: Keystone certificate for verifying token validity.
363 KeystoneSSLCertificateKey:
365 description: Keystone key for signing tokens.
368 MysqlInnodbBufferPoolSize:
370 Specifies the size of the buffer pool in megabytes. Setting to
371 zero should be interpreted as "no value" and will defer to the
375 NeutronDnsmasqOptions:
376 default: 'dhcp-option-force=26,1400'
377 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
379 NeutronPublicInterfaceDefaultRoute:
381 description: A custom default route for the NeutronPublicInterface.
383 NeutronPublicInterfaceIP:
385 description: A custom IP address to put onto the NeutronPublicInterface.
387 NeutronPublicInterfaceRawDevice:
389 description: If set, the public interface is a vlan with this device as the raw device.
391 PublicVirtualInterface:
394 Specifies the interface where the public-facing virtual ip will be assigned.
395 This should be int_public when a VLAN is being used.
399 default: '' # Has to be here because of the ignored empty value bug
402 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
407 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
412 description: If set, the contents of an SSL certificate authority file.
416 description: A random string to be used as a salt when hashing to determine mappings in the ring.
421 description: The password for the swift service account, used by the swift proxy services.
426 description: Value of mount_check in Swift account/container/object -server.conf
431 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
434 description: Partition Power to use when building Swift rings
439 description: How many replicas to use in the swift rings.
441 # Compute-specific params
442 CeilometerComputeAgent:
443 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
447 - allowed_values: ['', Present]
451 HypervisorNeutronPhysicalBridge:
454 An OVS bridge to create on each hypervisor. This defaults to br-ex the
455 same as the control plane nodes, as we have a uniform configuration of
456 the openvswitch agent. Typically should not need to be changed.
458 HypervisorNeutronPublicInterface:
460 description: What interface to add to the HypervisorNeutronPhysicalBridge.
462 NeutronNetworkVLANRanges:
463 default: 'datacentre'
465 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
466 Neutron documentation for permitted values. Defaults to permitting any
467 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
468 type: comma_delimited_list
471 default: libvirt.LibvirtDriver
472 NovaComputeExtraConfig:
475 NovaCompute specific configuration to inject into the cluster. Same
476 structure as ExtraConfig.
478 NovaComputeLibvirtType:
481 NovaEnableRbdBackend:
483 description: Whether to enable or not the Rbd backend for Nova
487 default: overcloud-compute
489 - custom_constraint: glance.image
490 OvercloudComputeFlavor:
491 description: Use this flavor
494 - custom_constraint: nova.flavor
497 NeutronLocalIp: tenant
498 CeilometerApiNetwork: internal_api
499 MongoDbNetwork: internal_api
500 CinderApiNetwork: internal_api
501 CinderIscsiNetwork: storage
502 GlanceApiNetwork: storage
503 GlanceRegistryNetwork: internal_api
504 KeystoneAdminApiNetwork: internal_api
505 KeystonePublicApiNetwork: internal_api
506 NeutronApiNetwork: internal_api
507 HeatApiNetwork: internal_api
508 NovaApiNetwork: internal_api
509 NovaMetadataNetwork: internal_api
510 NovaVncProxyNetwork: internal_api
511 SwiftMgmtNetwork: storage_mgmt
512 SwiftProxyNetwork: storage
513 HorizonNetwork: internal_api
514 MemcachedNetwork: internal_api
515 RabbitMqNetwork: internal_api
516 RedisNetwork: internal_api
517 MysqlNetwork: internal_api
518 CephClusterNetwork: storage_mgmt
519 CephPublicNetwork: storage
520 description: Mapping of service_name -> network name. Typically set
521 via parameter_defaults in the resource registry.
524 # Block storage specific parameters
529 default: overcloud-cinder-volume
531 OvercloudBlockStorageFlavor:
532 description: Flavor for block storage nodes to request when deploying.
535 - custom_constraint: nova.flavor
537 # Object storage specific parameters
541 OvercloudSwiftStorageFlavor:
542 description: Flavor for Swift storage nodes to request when deploying.
545 - custom_constraint: nova.flavor
547 default: overcloud-swift-storage
550 # Ceph storage specific parameters
555 default: overcloud-ceph-storage
557 OvercloudCephStorageFlavor:
559 description: Flavor for Ceph storage nodes to request when deploying.
562 - custom_constraint: nova.flavor
564 # Identifiers to trigger tasks on nodes
569 Setting to a previously unused value during stack-update will trigger
570 package update on all nodes
574 HeatAuthEncryptionKey:
575 type: OS::Heat::RandomString
578 type: OS::Heat::RandomString
583 type: OS::Heat::RandomString
588 type: OS::Heat::ResourceGroup
591 count: {get_param: ControllerCount}
593 type: OS::TripleO::Controller
595 AdminPassword: {get_param: AdminPassword}
596 AdminToken: {get_param: AdminToken}
597 CeilometerBackend: {get_param: CeilometerBackend}
598 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
599 CeilometerPassword: {get_param: CeilometerPassword}
600 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
601 CinderPassword: {get_param: CinderPassword}
602 CinderISCSIHelper: {get_param: CinderISCSIHelper}
603 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
604 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
605 CloudName: {get_param: CloudName}
606 ControlVirtualInterface: {get_param: ControlVirtualInterface}
607 ControllerExtraConfig: {get_param: controllerExtraConfig}
608 Debug: {get_param: Debug}
609 EnableGalera: {get_param: EnableGalera}
610 EnableCephStorage: {get_param: ControllerEnableCephStorage}
611 EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
612 ExtraConfig: {get_param: ExtraConfig}
613 Flavor: {get_param: OvercloudControlFlavor}
614 GlancePort: {get_param: GlancePort}
615 GlanceProtocol: {get_param: GlanceProtocol}
616 GlancePassword: {get_param: GlancePassword}
617 GlanceBackend: {get_param: GlanceBackend}
618 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
619 GlanceLogFile: {get_param: GlanceLogFile}
620 HeatPassword: {get_param: HeatPassword}
621 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
622 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
623 HorizonSecret: {get_resource: HorizonSecret}
624 Image: {get_param: controllerImage}
625 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
626 KeyName: {get_param: KeyName}
627 KeystoneCACertificate: {get_param: KeystoneCACertificate}
628 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
629 KeystoneSigningKey: {get_param: KeystoneSigningKey}
630 KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
631 KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
632 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
633 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
634 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
635 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
636 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
637 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
638 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
639 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
640 NeutronPublicInterface: {get_param: NeutronPublicInterface}
641 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
642 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
643 NeutronPassword: {get_param: NeutronPassword}
644 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
645 NeutronDVR: {get_param: NeutronDVR}
646 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
647 NeutronAgentMode: {get_param: NeutronAgentMode}
648 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
649 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
650 NeutronL3HA: {get_param: NeutronL3HA}
651 NeutronNetworkType: {get_param: NeutronNetworkType}
652 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
653 NovaPassword: {get_param: NovaPassword}
654 NtpServer: {get_param: NtpServer}
655 PcsdPassword: {get_resource: PcsdPassword}
656 PublicVirtualInterface: {get_param: PublicVirtualInterface}
657 RabbitPassword: {get_param: RabbitPassword}
658 RabbitUserName: {get_param: RabbitUserName}
659 RabbitCookie: {get_attr: [RabbitCookie, value]}
660 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
661 RabbitClientPort: {get_param: RabbitClientPort}
662 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
663 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
664 RedisVirtualIP: {get_param: RedisVirtualIP}
665 SSLCertificate: {get_param: SSLCertificate}
666 SSLKey: {get_param: SSLKey}
667 SSLCACertificate: {get_param: SSLCACertificate}
668 SwiftHashSuffix: {get_param: SwiftHashSuffix}
669 SwiftMountCheck: {get_param: SwiftMountCheck}
670 SwiftMinPartHours: {get_param: SwiftMinPartHours}
671 SwiftPartPower: {get_param: SwiftPartPower}
672 SwiftPassword: {get_param: SwiftPassword}
673 SwiftReplicas: { get_param: SwiftReplicas}
674 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
675 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
676 ServiceNetMap: {get_param: ServiceNetMap}
677 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
678 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
679 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
680 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
681 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
682 UpdateIdentifier: {get_param: UpdateIdentifier}
685 type: OS::Heat::ResourceGroup
688 count: {get_param: ComputeCount}
690 type: OS::TripleO::Compute
692 AdminPassword: {get_param: AdminPassword}
693 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
694 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
695 CeilometerPassword: {get_param: CeilometerPassword}
696 Debug: {get_param: Debug}
697 ExtraConfig: {get_param: ExtraConfig}
698 Flavor: {get_param: OvercloudComputeFlavor}
699 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
700 GlancePort: {get_param: GlancePort}
701 GlanceProtocol: {get_param: GlanceProtocol}
702 Image: {get_param: NovaImage}
703 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
704 KeyName: {get_param: KeyName}
705 KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
706 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
707 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
708 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
709 NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
710 NeutronNetworkType: {get_param: NeutronNetworkType}
711 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
712 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
713 NeutronPassword: {get_param: NeutronPassword}
714 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
715 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
716 NeutronDVR: {get_param: NeutronDVR}
717 NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
718 NeutronAgentMode: {get_param: NeutronComputeAgentMode}
719 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
720 NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
721 # L3 HA and Failover is not relevant for Computes, should be removed
722 NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
723 NeutronL3HA: {get_param: NeutronL3HA}
724 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
725 NovaComputeDriver: {get_param: NovaComputeDriver}
726 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
727 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
728 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
729 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
730 NovaPassword: {get_param: NovaPassword}
731 NtpServer: {get_param: NtpServer}
732 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
733 RabbitPassword: {get_param: RabbitPassword}
734 RabbitUserName: {get_param: RabbitUserName}
735 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
736 RabbitClientPort: {get_param: RabbitClientPort}
737 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
738 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
739 ServiceNetMap: {get_param: ServiceNetMap}
740 UpdateIdentifier: {get_param: UpdateIdentifier}
743 type: OS::Heat::ResourceGroup
746 count: {get_param: BlockStorageCount}
748 type: OS::TripleO::BlockStorage
750 Debug: {get_param: Debug}
751 Image: {get_param: BlockStorageImage}
752 CinderISCSIHelper: {get_param: CinderISCSIHelper}
753 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
754 # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
755 CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
756 CinderPassword: {get_param: CinderPassword}
757 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
758 KeyName: {get_param: KeyName}
759 Flavor: {get_param: OvercloudBlockStorageFlavor}
760 RabbitPassword: {get_param: RabbitPassword}
761 RabbitUserName: {get_param: RabbitUserName}
762 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
763 RabbitClientPort: {get_param: RabbitClientPort}
764 NtpServer: {get_param: NtpServer}
765 UpdateIdentifier: {get_param: UpdateIdentifier}
768 type: OS::Heat::ResourceGroup
771 count: {get_param: ObjectStorageCount}
773 type: OS::TripleO::ObjectStorage
775 KeyName: {get_param: KeyName}
776 Flavor: {get_param: OvercloudSwiftStorageFlavor}
777 HashSuffix: {get_param: SwiftHashSuffix}
778 MountCheck: {get_param: SwiftMountCheck}
779 MinPartHours: {get_param: SwiftMinPartHours}
780 PartPower: {get_param: SwiftPartPower}
781 Image: {get_param: SwiftStorageImage}
782 Replicas: { get_param: SwiftReplicas}
783 NtpServer: {get_param: NtpServer}
784 UpdateIdentifier: {get_param: UpdateIdentifier}
785 ServiceNetMap: {get_param: ServiceNetMap}
788 type: OS::Heat::ResourceGroup
791 count: {get_param: CephStorageCount}
793 type: OS::TripleO::CephStorage
795 Image: {get_param: CephStorageImage}
796 KeyName: {get_param: KeyName}
797 Flavor: {get_param: OvercloudCephStorageFlavor}
798 NtpServer: {get_param: NtpServer}
799 ServiceNetMap: {get_param: ServiceNetMap}
800 UpdateIdentifier: {get_param: UpdateIdentifier}
803 type: OS::TripleO::Network::Ports::NetIpListMap
805 ExternalIpList: {get_attr: [Controller, external_ip_address]}
806 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
807 StorageIpList: {get_attr: [Controller, storage_ip_address]}
808 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
809 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
812 type: OS::TripleO::AllNodes::SoftwareConfig
814 compute_hosts: {get_attr: [Compute, hosts_entry]}
815 controller_hosts: {get_attr: [Controller, hosts_entry]}
816 controller_ips: {get_attr: [Controller, ip_address]}
817 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
818 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
819 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
820 controller_names: {get_attr: [Controller, hostname]}
821 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
822 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
823 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
824 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
825 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
826 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
827 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
828 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
829 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
830 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
831 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
832 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
833 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
834 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
835 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
836 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
837 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
840 type: OS::Heat::RandomString
844 MysqlClusterUniquePart:
845 type: OS::Heat::RandomString
850 type: OS::Heat::RandomString
853 salt: {get_param: RabbitCookieSalt}
855 # creates the network architecture
857 type: OS::TripleO::Network
860 type: OS::Neutron::Port
863 name: control_virtual_ip
864 network_id: {get_param: NeutronControlPlaneID}
865 fixed_ips: {get_param: ControlFixedIPs}
866 replacement_policy: AUTO
870 type: OS::Neutron::Port
873 name: public_virtual_ip
874 network: {get_param: PublicVirtualNetwork}
875 fixed_ips: {get_param: PublicVirtualFixedIPs}
876 replacement_policy: AUTO
878 InternalApiVirtualIP:
880 type: OS::TripleO::Controller::Ports::InternalApiPort
882 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
883 PortName: internal_api_virtual_ip
887 type: OS::TripleO::Controller::Ports::StoragePort
889 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
890 PortName: storage_virtual_ip
892 StorageMgmtVirtualIP:
894 type: OS::TripleO::Controller::Ports::StorageMgmtPort
896 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
897 PortName: storage_management_virtual_ip
900 type: OS::TripleO::Network::Ports::NetIpMap
902 ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
903 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
904 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
905 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
906 # No tenant VIP required
909 type: OS::TripleO::VipConfig
912 type: OS::Heat::StructuredDeployments
914 config: {get_resource: VipConfig}
915 servers: {get_attr: [Controller, attributes, nova_server_resource]}
917 # service VIP mappings
918 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
919 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
920 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
921 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
922 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
923 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
924 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
925 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
926 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
927 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
928 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
929 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
930 redis_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
931 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
932 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
933 # direct configuration of Virtual IPs for each network
934 control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
935 public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
936 internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
937 storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
938 storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
940 ControllerBootstrapNodeConfig:
941 type: OS::TripleO::BootstrapNode::SoftwareConfig
943 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
944 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
946 ControllerBootstrapNodeDeployment:
947 type: OS::Heat::StructuredDeployments
949 config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
950 servers: {get_attr: [Controller, attributes, nova_server_resource]}
951 signal_transport: NO_SIGNAL
953 ControllerSwiftDeployment:
954 type: OS::Heat::StructuredDeployments
956 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
957 servers: {get_attr: [Controller, attributes, nova_server_resource]}
958 signal_transport: NO_SIGNAL
960 ObjectStorageSwiftDeployment:
961 type: OS::Heat::StructuredDeployments
963 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
964 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
965 signal_transport: NO_SIGNAL
967 SwiftDevicesAndProxyConfig:
968 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
970 controller_swift_devices: {get_attr: [Controller, swift_device]}
971 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
972 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
974 ComputeCephDeployment:
975 type: OS::Heat::StructuredDeployments
977 config: {get_attr: [CephClusterConfig, config_id]}
978 servers: {get_attr: [Compute, attributes, nova_server_resource]}
980 ControllerCephDeployment:
981 type: OS::Heat::StructuredDeployments
983 config: {get_attr: [CephClusterConfig, config_id]}
984 servers: {get_attr: [Controller, attributes, nova_server_resource]}
986 CephStorageCephDeployment:
987 type: OS::Heat::StructuredDeployments
989 config: {get_attr: [CephClusterConfig, config_id]}
990 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
993 type: OS::TripleO::CephClusterConfig::SoftwareConfig
995 ceph_fsid: {get_param: CephClusterFSID}
996 ceph_mon_key: {get_param: CephMonKey}
997 ceph_admin_key: {get_param: CephAdminKey}
998 ceph_mon_names: {get_attr: [Controller, hostname]}
999 ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1001 ControllerClusterConfig:
1002 type: OS::Heat::StructuredConfig
1006 nodes: {get_attr: [Controller, corosync_node]}
1010 nodes: {get_attr: [Controller, hostname]}
1012 nodes: {get_attr: [Controller, corosync_node]}
1014 nodes: {get_attr: [Controller, corosync_node]}
1016 ControllerClusterDeployment:
1017 type: OS::Heat::StructuredDeployments
1019 config: {get_resource: ControllerClusterConfig}
1020 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1021 signal_transport: NO_SIGNAL
1023 ControllerAllNodesDeployment:
1024 type: OS::Heat::StructuredDeployments
1026 config: {get_attr: [allNodesConfig, config_id]}
1027 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1029 ComputeAllNodesDeployment:
1030 type: OS::Heat::StructuredDeployments
1032 config: {get_attr: [allNodesConfig, config_id]}
1033 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1035 BlockStorageAllNodesDeployment:
1036 type: OS::Heat::StructuredDeployments
1038 config: {get_attr: [allNodesConfig, config_id]}
1039 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1041 ObjectStorageAllNodesDeployment:
1042 type: OS::Heat::StructuredDeployments
1044 config: {get_attr: [allNodesConfig, config_id]}
1045 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1047 CephStorageAllNodesDeployment:
1048 type: OS::Heat::StructuredDeployments
1050 config: {get_attr: [allNodesConfig, config_id]}
1051 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1053 # Nested stack deployment runs after all other controller deployments
1054 ControllerNodesPostDeployment:
1055 type: OS::TripleO::ControllerPostDeployment
1056 depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1058 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1060 ComputeNodesPostDeployment:
1061 type: OS::TripleO::ComputePostDeployment
1062 depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1064 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1066 ObjectStorageNodesPostDeployment:
1067 type: OS::TripleO::ObjectStoragePostDeployment
1068 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1070 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1072 BlockStorageNodesPostDeployment:
1073 type: OS::TripleO::BlockStoragePostDeployment
1074 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1076 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1078 CephStorageNodesPostDeployment:
1079 type: OS::TripleO::CephStoragePostDeployment
1080 depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1082 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1086 description: URL for the Overcloud Keystone service
1091 - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}