1 heat_template_version: 2014-10-16
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.
18 CeilometerMeteringSecret:
20 description: Secret shared by the ceilometer services.
25 description: The password for the ceilometer service account.
30 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
34 description: Should be used for arbitrary ips.
38 description: Set to True to enable debugging on all services.
40 DefaultSignalTransport:
42 description: Transport to use for software-config signals.
45 - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
48 description: Glance port.
52 description: Protocol to use when connecting to glance, set to https for SSL.
55 default: 'REBUILD_PRESERVE_EPHEMERAL'
56 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
60 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
63 - custom_constraint: nova.keypair
64 NeutronBridgeMappings:
66 The OVS logical->physical bridge mappings to use. See the Neutron
67 documentation for details. Defaults to mapping br-ex - the external
68 bridge on hosts - to a physical name 'datacentre' which can be used
69 to create provider networks (and we use this for the default floating
70 network) - if changing this either use different post-install network
71 scripts or be sure to keep 'datacentre' as a mapping network name.
73 default: "datacentre:br-ex"
74 NeutronControlPlaneID:
77 description: Neutron ID for ctlplane network.
78 NeutronEnableTunnelling:
85 If set, flat networks to configure in neutron plugins. Defaults to
86 'datacentre' to permit external network creation.
89 description: The tenant network type for Neutron, either gre or vxlan.
93 description: The password for the neutron service account, used by neutron agents.
96 NeutronPublicInterface:
98 description: What interface to bridge onto br-ex for network nodes.
100 NeutronPublicInterfaceTag:
103 VLAN tag for creating a public VLAN. The tag will be used to
104 create an access port on the exterior bridge for each control plane node,
105 and that port will be given the IP address returned by neutron from the
106 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
107 overcloud.yaml to include the deployment of VLAN ports to the control
113 The tunnel types for the Neutron tenant network. To specify multiple
114 values, use a comma separated string, like so: 'gre,vxlan'
118 description: The password for the nova service account, used by nova-api.
124 PublicVirtualFixedIPs:
127 Control the IP allocation for the PublicVirtualInterface port. E.g.
128 [{'ip_address':'1.2.3.4'}]
130 PublicVirtualNetwork:
134 Neutron network to allocate public virtual IP port on.
138 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
141 description: The username for RabbitMQ
145 description: The password for RabbitMQ
148 SnmpdReadonlyUserName:
149 default: ro_snmp_user
150 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
152 SnmpdReadonlyUserPassword:
154 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
159 # Controller-specific params
162 description: The keystone auth secret.
165 CinderLVMLoopDeviceSize:
167 description: The size of the loopback file used by the cinder LVM driver.
171 description: The password for the cinder service account, used by cinder-api.
176 description: The iSCSI helper to use with cinder.
181 controllerExtraConfig:
184 Controller specific configuration to inject into the cluster. Same
185 structure as ExtraConfig.
189 default: overcloud-control
191 - custom_constraint: glance.image
192 OvercloudControlFlavor:
194 description: Flavor for control nodes to request when deploying.
197 - custom_constraint: nova.flavor
198 ControlVirtualInterface:
200 description: Interface where virtual ip will be assigned.
205 Additional configuration to inject into the cluster. The JSON should have
206 the following structure:
209 [{"section": "SECTIONNAME",
211 [{"option": "OPTIONNAME",
222 [{"section": "default",
224 [{"option": "force_config_drive",
231 [{"option": "driver",
232 "value": "nova.cells.rpc_driver.CellsRPCDriver"
241 description: The filepath of the file to use for logging messages from Glance.
244 GlanceNotifierStrategy:
245 description: Strategy to use for Glance notification queue
250 description: The password for the glance service account, used by the glance services.
255 description: The password for the Heat service account, used by the Heat services.
258 HeatStackDomainAdminPassword:
259 description: Password for heat_domain_admin user.
263 KeystoneCACertificate:
265 description: Keystone self-signed certificate authority certificate.
267 KeystoneSigningCertificate:
269 description: Keystone certificate for verifying token validity.
273 description: Keystone key for signing tokens.
276 MysqlInnodbBufferPoolSize:
278 Specifies the size of the buffer pool in megabytes. Setting to
279 zero should be interpreted as "no value" and will defer to the
283 NeutronDnsmasqOptions:
284 default: 'dhcp-option-force=26,1400'
285 description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
287 NeutronPublicInterfaceDefaultRoute:
289 description: A custom default route for the NeutronPublicInterface.
291 NeutronPublicInterfaceIP:
293 description: A custom IP address to put onto the NeutronPublicInterface.
295 NeutronPublicInterfaceRawDevice:
297 description: If set, the public interface is a vlan with this device as the raw device.
299 PublicVirtualInterface:
302 Specifies the interface where the public-facing virtual ip will be assigned.
303 This should be int_public when a VLAN is being used.
307 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
312 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
317 description: If set, the contents of an SSL certificate authority file.
321 description: A random string to be used as a salt when hashing to determine mappings in the ring.
326 description: The password for the swift service account, used by the swift proxy services.
331 description: Partition Power to use when building Swift rings
336 description: How many replicas to use in the swift rings.
338 # Compute-specific params
339 CeilometerComputeAgent:
340 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
344 - allowed_values: ['', Present]
348 HypervisorNeutronPhysicalBridge:
351 An OVS bridge to create on each hypervisor. This defaults to br-ex the
352 same as the control plane nodes, as we have a uniform configuration of
353 the openvswitch agent. Typically should not need to be changed.
355 HypervisorNeutronPublicInterface:
357 description: What interface to add to the HypervisorNeutronPhysicalBridge.
359 NeutronNetworkVLANRanges:
360 default: 'datacentre'
362 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
363 Neutron documentation for permitted values. Defaults to permitting any
364 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
368 default: libvirt.LibvirtDriver
369 NovaComputeExtraConfig:
372 NovaCompute specific configuration to inject into the cluster. Same
373 structure as ExtraConfig.
375 NovaComputeLibvirtType:
380 default: overcloud-compute
382 - custom_constraint: glance.image
383 OvercloudComputeFlavor:
384 description: Use this flavor
388 - custom_constraint: nova.flavor
390 # Block storage specific parameters
395 default: overcloud-cinder-volume
397 OvercloudBlockStorageFlavor:
399 description: Flavor for block storage nodes to request when deploying.
402 # Object storage specific parameters
406 OvercloudSwiftStorageFlavor:
408 description: Flavor for Swift storage nodes to request when deploying.
411 default: overcloud-swift-storage
417 type: OS::Heat::ResourceGroup
419 count: {get_param: ControllerCount}
421 type: OS::TripleO::Controller
423 AdminPassword: {get_param: AdminPassword}
424 AdminToken: {get_param: AdminToken}
425 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
426 CeilometerPassword: {get_param: CeilometerPassword}
427 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
428 CinderPassword: {get_param: CinderPassword}
429 CinderISCSIHelper: {get_param: CinderISCSIHelper}
430 CloudName: {get_param: CloudName}
431 ControlVirtualInterface: {get_param: ControlVirtualInterface}
432 ControllerExtraConfig: {get_param: controllerExtraConfig}
433 ExtraConfig: {get_param: ExtraConfig}
434 Flavor: {get_param: OvercloudControlFlavor}
435 GlancePort: {get_param: GlancePort}
436 GlanceProtocol: {get_param: GlanceProtocol}
437 GlancePassword: {get_param: GlancePassword}
438 GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
439 GlanceLogFile: {get_param: GlanceLogFile}
440 HeatPassword: {get_param: HeatPassword}
441 HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
442 Image: {get_param: controllerImage}
443 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
444 KeyName: {get_param: KeyName}
445 KeystoneCACertificate: {get_param: KeystoneCACertificate}
446 KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
447 KeystoneSigningKey: {get_param: KeystoneSigningKey}
448 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
449 MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
450 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
451 NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
452 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
453 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
454 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
455 NeutronPublicInterface: {get_param: NeutronPublicInterface}
456 NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
457 NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
458 NeutronPassword: {get_param: NeutronPassword}
459 NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
460 NovaPassword: {get_param: NovaPassword}
461 NtpServer: {get_param: NtpServer}
462 PublicVirtualInterface: {get_param: PublicVirtualInterface}
463 RabbitUserName: {get_param: RabbitUserName}
464 RabbitPassword: {get_param: RabbitPassword}
465 RabbitCookie: {get_attr: [RabbitCookie, value]}
466 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
467 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
468 SSLCertificate: {get_param: SSLCertificate}
469 SSLKey: {get_param: SSLKey}
470 SSLCACertificate: {get_param: SSLCACertificate}
471 SwiftHashSuffix: {get_param: SwiftHashSuffix}
472 SwiftPartPower: {get_param: SwiftPartPower}
473 SwiftPassword: {get_param: SwiftPassword}
474 SwiftReplicas: { get_param: SwiftReplicas}
475 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
476 PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
479 type: OS::Heat::ResourceGroup
481 count: {get_param: ComputeCount}
483 type: OS::TripleO::Compute
485 AdminPassword: {get_param: AdminPassword}
486 CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
487 CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
488 CeilometerPassword: {get_param: CeilometerPassword}
489 ExtraConfig: {get_param: ExtraConfig}
490 Flavor: {get_param: OvercloudComputeFlavor}
491 GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
492 GlancePort: {get_param: GlancePort}
493 GlanceProtocol: {get_param: GlanceProtocol}
494 Image: {get_param: NovaImage}
495 ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
496 KeyName: {get_param: KeyName}
497 KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
498 NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
499 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
500 NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
501 NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
502 NeutronNetworkType: {get_param: NeutronNetworkType}
503 NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
504 NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
505 NeutronPassword: {get_param: NeutronPassword}
506 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
507 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
508 NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
509 NovaComputeDriver: {get_param: NovaComputeDriver}
510 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
511 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
512 NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
513 NovaPassword: {get_param: NovaPassword}
514 NtpServer: {get_param: NtpServer}
515 RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
516 RabbitPassword: {get_param: RabbitPassword}
517 RabbitUserName: {get_param: RabbitUserName}
518 SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
519 SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
523 - - mysql://nova:unset@
524 - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
529 - - mysql://ceilometer:unset@
530 - *compute_database_host
535 - - mysql://neutron:unset@
536 - *compute_database_host
540 type: OS::Heat::ResourceGroup
542 count: {get_param: BlockStorageCount}
544 type: OS::TripleO::BlockStorage
546 AdminPassword: {get_param: AdminPassword}
547 Image: {get_param: BlockStorageImage}
548 CinderISCSIHelper: {get_param: CinderISCSIHelper}
549 CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
550 CinderPassword: {get_param: CinderPassword}
551 VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
552 KeyName: {get_param: KeyName}
553 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
554 NeutronNetworkType: {get_param: NeutronNetworkType}
555 NeutronPassword: {get_param: NeutronPassword}
556 NeutronPublicInterface: {get_param: NeutronPublicInterface}
557 Flavor: {get_param: OvercloudBlockStorageFlavor}
558 RabbitPassword: {get_param: RabbitPassword}
559 RabbitUserName: {get_param: RabbitUserName}
562 type: OS::Heat::ResourceGroup
564 count: {get_param: ObjectStorageCount}
566 type: OS::TripleO::ObjectStorage
568 ControllerIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
569 KeyName: {get_param: KeyName}
570 NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
571 NeutronNetworkType: {get_param: NeutronNetworkType}
572 Flavor: {get_param: OvercloudSwiftStorageFlavor}
573 HashSuffix: {get_param: SwiftHashSuffix}
574 PartPower: {get_param: SwiftPartPower}
575 Password: {get_param: SwiftPassword}
576 Image: {get_param: SwiftStorageImage}
577 Replicas: { get_param: SwiftReplicas}
581 type: OS::Heat::StructuredConfig
584 completion-signal: {get_input: deploy_signal_id}
590 - {get_attr: [Compute, hosts_entry]}
593 - {get_attr: [Controller, hosts_entry]}
596 - {get_attr: [BlockStorage, hosts_entry]}
599 - {get_attr: [ObjectStorage, hosts_entry]}
604 - {get_attr: [Controller, hostname]}
607 type: OS::Heat::RandomString
611 MysqlClusterUniquePart:
612 type: OS::Heat::RandomString
617 type: OS::Heat::RandomString
620 salt: {get_param: RabbitCookieSalt}
623 type: OS::Neutron::Port
625 name: control_virtual_ip
626 network_id: {get_param: NeutronControlPlaneID}
627 fixed_ips: {get_param: ControlFixedIPs}
628 replacement_policy: AUTO
631 type: OS::Neutron::Port
633 name: public_virtual_ip
634 network: {get_param: PublicVirtualNetwork}
635 fixed_ips: {get_param: PublicVirtualFixedIPs}
636 replacement_policy: AUTO
638 ControllerBootstrapNodeConfig:
639 type: OS::Heat::StructuredConfig
641 group: os-apply-config
644 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
646 ControllerBootstrapNodeDeployment:
647 type: OS::Heat::StructuredDeployments
649 config: {get_resource: ControllerBootstrapNodeConfig}
650 servers: {get_attr: [Controller, attributes, nova_server_resource]}
651 signal_transport: NO_SIGNAL
653 ControllerSwiftDeployment:
654 type: OS::Heat::StructuredDeployments
656 config: {get_resource: SwiftDevicesAndProxyConfig}
657 servers: {get_attr: [Controller, attributes, nova_server_resource]}
658 signal_transport: NO_SIGNAL
660 ObjectStorageSwiftDeployment:
661 type: OS::Heat::StructuredDeployments
663 config: {get_resource: SwiftDevicesAndProxyConfig}
664 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
665 signal_transport: NO_SIGNAL
667 SwiftDevicesAndProxyConfig:
668 type: OS::Heat::StructuredConfig
670 group: os-apply-config
678 - {get_attr: [Controller, swift_device]}
681 - {get_attr: [ObjectStorage, swift_device]}
685 - {get_attr: [Controller, swift_proxy_memcache]}
687 ControllerClusterConfig:
688 type: OS::Heat::StructuredConfig
692 nodes: {get_attr: [Controller, corosync_node]}
696 nodes: {get_attr: [Controller, hostname]}
698 nodes: {get_attr: [Controller, corosync_node]}
700 nodes: {get_attr: [Controller, corosync_node]}
702 ControllerClusterDeployment:
703 type: OS::Heat::StructuredDeployments
705 config: {get_resource: ControllerClusterConfig}
706 servers: {get_attr: [Controller, attributes, nova_server_resource]}
707 signal_transport: NO_SIGNAL
709 ControllerAllNodesDeployment:
710 type: OS::Heat::StructuredDeployments
712 config: {get_resource: allNodesConfig}
713 servers: {get_attr: [Controller, attributes, nova_server_resource]}
715 ComputeAllNodesDeployment:
716 type: OS::Heat::StructuredDeployments
718 config: {get_resource: allNodesConfig}
719 servers: {get_attr: [Compute, attributes, nova_server_resource]}
724 description: URL for the Overcloud Keystone service
729 - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}