Missing CephClientKey parameter in puppet-ceph-devel and storage-environment
[apex-tripleo-heat-templates.git] / overcloud.yaml
1 heat_template_version: 2016-04-08
2
3 description: >
4   Deploy an OpenStack environment, consisting of several node types (roles),
5   Controller, Compute, BlockStorage, SwiftStorage and CephStorage.  The Storage
6   roles enable independent scaling of the storage components, but the minimal
7   deployment is one Controller and one Compute node.
8
9
10 # TODO(shadower): we should probably use the parameter groups to put
11 # some order in here.
12 parameters:
13
14   # Common parameters (not specific to a role)
15   AdminPassword:
16     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
17     type: string
18     hidden: true
19   AodhPassword:
20     description: The password for the aodh services.
21     type: string
22     hidden: true
23   CeilometerBackend:
24     default: 'mongodb'
25     description: The ceilometer backend type.
26     type: string
27   CeilometerMeteringSecret:
28     description: Secret shared by the ceilometer services.
29     type: string
30     hidden: true
31   CeilometerPassword:
32     description: The password for the ceilometer service account.
33     type: string
34     hidden: true
35   CeilometerMeterDispatcher:
36     default: 'database'
37     description: Dispatcher to process meter data
38     type: string
39     constraints:
40     - allowed_values: ['gnocchi', 'database']
41   CinderEnableNfsBackend:
42     default: false
43     description: Whether to enable or not the NFS backend for Cinder
44     type: boolean
45   CinderEnableRbdBackend:
46     default: false
47     description: Whether to enable or not the Rbd backend for Cinder
48     type: boolean
49   CloudName:
50     default: overcloud
51     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
52     type: string
53   ControlFixedIPs:
54     default: []
55     description: Should be used for arbitrary ips.
56     type: json
57   CorosyncIPv6:
58     default: false
59     description: Enable IPv6 in Corosync
60     type: boolean
61   Debug:
62     default: ''
63     description: Set to True to enable debugging on all services.
64     type: string
65   HAProxySyslogAddress:
66     default: /dev/log
67     description: Syslog address where HAproxy will send its log
68     type: string
69   HorizonAllowedHosts:
70     default: '*'
71     description: A list of IP/Hostname allowed to connect to horizon
72     type: comma_delimited_list
73   ImageUpdatePolicy:
74     default: 'REBUILD_PRESERVE_EPHEMERAL'
75     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
76     type: string
77   InternalApiVirtualFixedIPs:
78     default: []
79     description: >
80         Control the IP allocation for the InternalApiVirtualInterface port. E.g.
81         [{'ip_address':'1.2.3.4'}]
82     type: json
83   KeyName:
84     default: default
85     description: Name of an existing Nova key pair to enable SSH access to the instances
86     type: string
87     constraints:
88       - custom_constraint: nova.keypair
89   MemcachedIPv6:
90     default: false
91     description: Enable IPv6 features in Memcached.
92     type: boolean
93   NeutronBridgeMappings:
94     description: >
95       The OVS logical->physical bridge mappings to use. See the Neutron
96       documentation for details. Defaults to mapping br-ex - the external
97       bridge on hosts - to a physical name 'datacentre' which can be used
98       to create provider networks (and we use this for the default floating
99       network) - if changing this either use different post-install network
100       scripts or be sure to keep 'datacentre' as a mapping network name.
101     type: comma_delimited_list
102     default: "datacentre:br-ex"
103   NeutronControlPlaneID:
104     default: 'ctlplane'
105     type: string
106     description: Neutron ID or name for ctlplane network.
107   NeutronEnableTunnelling:
108     type: string
109     default: "True"
110   NeutronEnableL2Pop:
111     type: string
112     description: >
113         Enable/disable the L2 population feature in the Neutron agents.
114     default: "False"
115   NeutronFlatNetworks:
116     type: comma_delimited_list
117     default: 'datacentre'
118     description: >
119       If set, flat networks to configure in neutron plugins. Defaults to
120       'datacentre' to permit external network creation.
121   NeutronNetworkType:
122     default: 'vxlan'
123     description: The tenant network type for Neutron.
124     type: comma_delimited_list
125   NeutronPassword:
126     description: The password for the neutron service account, used by neutron agents.
127     type: string
128     hidden: true
129   NeutronPublicInterface:
130     default: nic1
131     description: What interface to bridge onto br-ex for network nodes.
132     type: string
133   NeutronMetadataProxySharedSecret:
134     description: Shared secret to prevent spoofing
135     type: string
136     hidden: true
137   NeutronTenantMtu:
138     description: >
139       The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
140       be at least 50 bytes smaller than the MTU on the physical network. This
141       value will be used to set the MTU on the virtual Ethernet device.
142       This value will be used to construct the NeutronDnsmasqOptions, since that
143       will determine the MTU that is assigned to the VM host through DHCP.
144     default: "1400"
145     type: string
146   NeutronTunnelTypes:
147     default: 'vxlan'
148     description: |
149         The tunnel types for the Neutron tenant network.
150     type: comma_delimited_list
151     type: comma_delimited_list
152   NeutronCorePlugin:
153     default: 'ml2'
154     description: |
155         The core plugin for Neutron. The value should be the entrypoint to be loaded
156         from neutron.core_plugins namespace.
157     type: string
158   NeutronServicePlugins:
159     default: "router,qos"
160     description: |
161         Comma-separated list of service plugin entrypoints to be loaded from the
162         neutron.service_plugins namespace.
163     type: comma_delimited_list
164   NeutronTypeDrivers:
165     default: "vxlan,vlan,flat,gre"
166     description: |
167         Comma-separated list of network type driver entrypoints to be loaded.
168     type: comma_delimited_list
169   NeutronMechanismDrivers:
170     default: 'openvswitch'
171     description: |
172         The mechanism drivers for the Neutron tenant network.
173     type: comma_delimited_list
174     type: comma_delimited_list
175   NeutronAgentExtensions:
176     default: "qos"
177     description: |
178         Comma-separated list of extensions enabled for the Neutron agents.
179     type: comma_delimited_list
180   NeutronAllowL3AgentFailover:
181     default: 'False'
182     description: Allow automatic l3-agent failover
183     type: string
184   NeutronL3HA:
185     default: 'False'
186     description: Whether to enable l3-agent HA
187     type: string
188   NovaIPv6:
189     default: false
190     description: Enable IPv6 features in Nova
191     type: boolean
192   NovaPassword:
193     description: The password for the nova service account, used by nova-api.
194     type: string
195     hidden: true
196   PublicVirtualFixedIPs:
197     default: []
198     description: >
199         Control the IP allocation for the PublicVirtualInterface port. E.g.
200         [{'ip_address':'1.2.3.4'}]
201     type: json
202   RabbitCookieSalt:
203     type: string
204     default: unset
205     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
206   RabbitUserName:
207     default: guest
208     description: The username for RabbitMQ
209     type: string
210   RabbitPassword:
211     description: The password for RabbitMQ
212     type: string
213     hidden: true
214   RabbitClientUseSSL:
215     default: false
216     description: >
217         Rabbit client subscriber parameter to specify
218         an SSL connection to the RabbitMQ host.
219     type: string
220   RabbitClientPort:
221     default: 5672
222     description: Set rabbit subscriber port, change this if using SSL
223     type: number
224   RedisPassword:
225     description: The password for Redis
226     type: string
227     hidden: true
228   StorageVirtualFixedIPs:
229     default: []
230     description: >
231         Control the IP allocation for the StorageVirtualInterface port. E.g.
232         [{'ip_address':'1.2.3.4'}]
233     type: json
234   StorageMgmtVirtualFixedIPs:
235     default: []
236     description: >
237         Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
238         [{'ip_address':'1.2.3.4'}]
239     type: json
240   CloudDomain:
241     default: 'localdomain'
242     type: string
243     description: >
244       The DNS domain used for the hosts. This should match the dhcp_domain
245       configured in the Undercloud neutron. Defaults to localdomain.
246   ServerMetadata:
247     default: {}
248     description: >
249       Extra properties or metadata passed to Nova for the created nodes in
250       the overcloud. It's accessible via the Nova metadata API.
251     type: json
252
253   # Controller-specific params
254   ControllerCount:
255     type: number
256     default: 1
257     constraints:
258       - range: {min: 1}
259   controllerExtraConfig:
260     default: {}
261     description: |
262       Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
263     type: json
264   controllerImage:
265     type: string
266     default: overcloud-full
267     constraints:
268       - custom_constraint: glance.image
269   OvercloudControlFlavor:
270     description: Flavor for control nodes to request when deploying.
271     default: baremetal
272     type: string
273     constraints:
274       - custom_constraint: nova.flavor
275   ControlVirtualInterface:
276     default: 'br-ex'
277     description: Interface where virtual ip will be assigned.
278     type: string
279   EnableFencing:
280     default: false
281     description: Whether to enable fencing in Pacemaker or not.
282     type: boolean
283   EnableGalera:
284     default: true
285     description: Whether to use Galera instead of regular MariaDB.
286     type: boolean
287   ControllerSchedulerHints:
288     type: json
289     description: Optional scheduler hints to pass to nova
290     default: {}
291   ExtraConfig:
292     default: {}
293     description: |
294       Additional configuration to inject into the cluster. The format required
295       may be implementation specific, e.g puppet hieradata.  Any role specific
296       ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
297     type: json
298   FencingConfig:
299     default: {}
300     description: |
301       Pacemaker fencing configuration. The JSON should have
302       the following structure:
303         {
304           "devices": [
305             {
306               "agent": "AGENT_NAME",
307               "host_mac": "HOST_MAC_ADDRESS",
308               "params": {"PARAM_NAME": "PARAM_VALUE"}
309             }
310           ]
311         }
312       For instance:
313         {
314           "devices": [
315             {
316               "agent": "fence_xvm",
317               "host_mac": "52:54:00:aa:bb:cc",
318               "params": {
319                 "multicast_address": "225.0.0.12",
320                 "port": "baremetal_0",
321                 "manage_fw": true,
322                 "manage_key_file": true,
323                 "key_file": "/etc/fence_xvm.key",
324                 "key_file_password": "abcdef"
325               }
326             }
327           ]
328         }
329     type: json
330   GnocchiBackend:
331     default: file
332     description: The short name of the Gnocchi backend to use. Should be one
333       of swift, rbd or file
334     type: string
335     constraints:
336     - allowed_values: ['swift', 'file', 'rbd']
337   GnocchiIndexerBackend:
338     default: 'mysql'
339     description: The short name of the Gnocchi indexer backend to use.
340     type: string
341   GnocchiPassword:
342     description: The password for the gnocchi service account.
343     type: string
344     hidden: true
345   InstanceNameTemplate:
346     default: 'instance-%08x'
347     description: Template string to be used to generate instance names
348     type: string
349   ManageFirewall:
350     default: true
351     description: Whether to manage IPtables rules.
352     type: boolean
353   PurgeFirewallRules:
354     default: false
355     description: Whether IPtables rules should be purged before setting up the ones.
356     type: boolean
357   MysqlInnodbBufferPoolSize:
358     description: >
359         Specifies the size of the buffer pool in megabytes. Setting to
360         zero should be interpreted as "no value" and will defer to the
361         lower level default.
362     type: number
363     default: 0
364   MysqlMaxConnections:
365     description: Configures MySQL max_connections config setting
366     type: number
367     default: 4096
368   PublicVirtualInterface:
369     default: 'br-ex'
370     description: >
371         Specifies the interface where the public-facing virtual ip will be assigned.
372         This should be int_public when a VLAN is being used.
373     type: string
374   SwiftHashSuffix:
375     description: A random string to be used as a salt when hashing to determine mappings in the ring.
376     type: string
377     hidden: true
378   SwiftMinPartHours:
379     type: number
380     default: 1
381     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
382   SwiftPartPower:
383     default: 10
384     description: Partition Power to use when building Swift rings
385     type: number
386   SwiftReplicas:
387     type: number
388     default: 3
389     description: How many replicas to use in the swift rings.
390
391 # Compute-specific params
392   CeilometerComputeAgent:
393     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
394     type: string
395     default: ''
396     constraints:
397     - allowed_values: ['', Present]
398   ComputeCount:
399     type: number
400     default: 1
401   HypervisorNeutronPhysicalBridge:
402     default: 'br-ex'
403     description: >
404       An OVS bridge to create on each hypervisor. This defaults to br-ex the
405       same as the control plane nodes, as we have a uniform configuration of
406       the openvswitch agent. Typically should not need to be changed.
407     type: string
408   HypervisorNeutronPublicInterface:
409     default: nic1
410     description: What interface to add to the HypervisorNeutronPhysicalBridge.
411     type: string
412   NeutronNetworkVLANRanges:
413     default: 'datacentre:1:1000'
414     description: >
415       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
416       Neutron documentation for permitted values. Defaults to permitting any
417       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
418     type: comma_delimited_list
419   NovaComputeDriver:
420     type: string
421     default: libvirt.LibvirtDriver
422   NovaComputeExtraConfig:
423     default: {}
424     description: |
425       NovaCompute specific configuration to inject into the cluster. Same
426       structure as ExtraConfig.
427     type: json
428   NovaComputeLibvirtType:
429     default: kvm
430     type: string
431   NovaComputeLibvirtVifDriver:
432     default: ''
433     description: Libvirt VIF driver configuration for the network
434     type: string
435   NovaComputeSchedulerHints:
436     type: json
437     description: Optional scheduler hints to pass to nova
438     default: {}
439   NovaEnableRbdBackend:
440     default: false
441     description: Whether to enable or not the Rbd backend for Nova
442     type: boolean
443   NovaImage:
444     type: string
445     default: overcloud-full
446     constraints:
447       - custom_constraint: glance.image
448   NovaOVSBridge:
449     default: 'br-int'
450     description: Name of integration bridge used by Open vSwitch
451     type: string
452   NovaSecurityGroupAPI:
453     default: 'neutron'
454     description: The full class name of the security API class
455     type: string
456   OvercloudComputeFlavor:
457     description: Use this flavor
458     default: baremetal
459     type: string
460     constraints:
461       - custom_constraint: nova.flavor
462   ServiceNetMap:
463     default:
464       NeutronTenantNetwork: tenant
465       CeilometerApiNetwork: internal_api
466       AodhApiNetwork: internal_api
467       GnocchiApiNetwork: internal_api
468       MongoDbNetwork: internal_api
469       CinderApiNetwork: internal_api
470       CinderIscsiNetwork: storage
471       GlanceApiNetwork: storage
472       GlanceRegistryNetwork: internal_api
473       IronicApiNetwork: internal_api
474       KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
475       KeystonePublicApiNetwork: internal_api
476       NeutronApiNetwork: internal_api
477       HeatApiNetwork: internal_api
478       NovaApiNetwork: internal_api
479       NovaMetadataNetwork: internal_api
480       NovaVncProxyNetwork: internal_api
481       SwiftMgmtNetwork: storage_mgmt
482       SwiftProxyNetwork: storage
483       SaharaApiNetwork: internal_api
484       HorizonNetwork: internal_api
485       MemcachedNetwork: internal_api
486       RabbitMqNetwork: internal_api
487       RedisNetwork: internal_api
488       MysqlNetwork: internal_api
489       CephClusterNetwork: storage_mgmt
490       CephPublicNetwork: storage
491       ControllerHostnameResolveNetwork: internal_api
492       ComputeHostnameResolveNetwork: internal_api
493       BlockStorageHostnameResolveNetwork: internal_api
494       ObjectStorageHostnameResolveNetwork: internal_api
495       CephStorageHostnameResolveNetwork: storage
496     description: Mapping of service_name -> network name. Typically set
497                  via parameter_defaults in the resource registry.
498     type: json
499
500   ControllerServices:
501     default:
502       - OS::TripleO::Services::CephMon
503       - OS::TripleO::Services::CephExternal
504       - OS::TripleO::Services::CinderApi
505       - OS::TripleO::Services::CinderScheduler
506       - OS::TripleO::Services::CinderVolume
507       - OS::TripleO::Services::Kernel
508       - OS::TripleO::Services::Keystone
509       - OS::TripleO::Services::GlanceApi
510       - OS::TripleO::Services::GlanceRegistry
511       - OS::TripleO::Services::HeatApi
512       - OS::TripleO::Services::HeatApiCfn
513       - OS::TripleO::Services::HeatApiCloudwatch
514       - OS::TripleO::Services::HeatEngine
515       - OS::TripleO::Services::NeutronDhcpAgent
516       - OS::TripleO::Services::NeutronL3Agent
517       - OS::TripleO::Services::NeutronMetadataAgent
518       - OS::TripleO::Services::NeutronServer
519       - OS::TripleO::Services::NeutronCorePlugin
520       - OS::TripleO::Services::NeutronOvsAgent
521       - OS::TripleO::Services::RabbitMQ
522       - OS::TripleO::Services::HAproxy
523       - OS::TripleO::Services::Keepalived
524       - OS::TripleO::Services::Memcached
525       - OS::TripleO::Services::Redis
526       - OS::TripleO::Services::NovaConductor
527       - OS::TripleO::Services::MongoDb
528       - OS::TripleO::Services::NovaApi
529       - OS::TripleO::Services::NovaScheduler
530       - OS::TripleO::Services::NovaConsoleauth
531       - OS::TripleO::Services::NovaVncproxy
532       - OS::TripleO::Services::Ntp
533       - OS::TripleO::Services::SwiftProxy
534       - OS::TripleO::Services::SwiftStorage
535       - OS::TripleO::Services::Snmp
536       - OS::TripleO::Services::Timezone
537     description: A list of service resources (configured in the Heat
538                  resource_registry) which represent nested stacks
539                  for each service that should get installed on the Controllers.
540     type: comma_delimited_list
541
542   ComputeServices:
543     default:
544       - OS::TripleO::Services::CephClient
545       - OS::TripleO::Services::CephExternal
546       - OS::TripleO::Services::Timezone
547       - OS::TripleO::Services::Ntp
548       - OS::TripleO::Services::Snmp
549       - OS::TripleO::Services::NovaCompute
550       - OS::TripleO::Services::NovaLibvirt
551       - OS::TripleO::Services::Kernel
552     description: A list of service resources (configured in the Heat
553                  resource_registry) which represent nested stacks
554                  for each service that should get installed on the Compute Nodes.
555     type: comma_delimited_list
556
557 # Block storage specific parameters
558   BlockStorageCount:
559     type: number
560     default: 0
561   BlockStorageImage:
562     default: overcloud-full
563     type: string
564   OvercloudBlockStorageFlavor:
565     description: Flavor for block storage nodes to request when deploying.
566     default: baremetal
567     type: string
568     constraints:
569       - custom_constraint: nova.flavor
570   BlockStorageExtraConfig:
571     default: {}
572     description: |
573       BlockStorage specific configuration to inject into the cluster. Same
574       structure as ExtraConfig.
575     type: json
576   BlockStorageSchedulerHints:
577     type: json
578     description: Optional scheduler hints to pass to nova
579     default: {}
580   BlockStorageServices:
581     default:
582       - OS::TripleO::Services::CinderVolume
583       - OS::TripleO::Services::Kernel
584       - OS::TripleO::Services::Ntp
585       - OS::TripleO::Services::Timezone
586       - OS::TripleO::Services::Snmp
587     description: A list of service resources (configured in the Heat
588                  resource_registry) which represent nested stacks
589                  for each service that should get installed on the BlockStorage nodes.
590     type: comma_delimited_list
591
592 # Object storage specific parameters
593   ObjectStorageCount:
594     type: number
595     default: 0
596   OvercloudSwiftStorageFlavor:
597     description: Flavor for Swift storage nodes to request when deploying.
598     default: baremetal
599     type: string
600     constraints:
601       - custom_constraint: nova.flavor
602   SwiftStorageImage:
603     default: overcloud-full
604     type: string
605   ObjectStorageExtraConfig:
606     default: {}
607     description: |
608       ObjectStorage specific configuration to inject into the cluster. Same
609       structure as ExtraConfig.
610     type: json
611   ObjectStorageSchedulerHints:
612     type: json
613     description: Optional scheduler hints to pass to nova
614     default: {}
615   ObjectStorageServices:
616     default:
617       - OS::TripleO::Services::Kernel
618       - OS::TripleO::Services::Ntp
619       - OS::TripleO::Services::SwiftStorage
620       - OS::TripleO::Services::Snmp
621       - OS::TripleO::Services::Timezone
622     description: A list of service resources (configured in the Heat
623                  resource_registry) which represent nested stacks
624                  for each service that should get installed on the ObjectStorage nodes.
625                  Note this role currently only supports steps 2, 3 and 4 configuration.
626     type: comma_delimited_list
627
628
629 # Ceph storage specific parameters
630   CephStorageCount:
631     type: number
632     default: 0
633   CephStorageImage:
634     default: overcloud-full
635     type: string
636   OvercloudCephStorageFlavor:
637     default: baremetal
638     description: Flavor for Ceph storage nodes to request when deploying.
639     type: string
640     constraints:
641       - custom_constraint: nova.flavor
642   CephStorageExtraConfig:
643     default: {}
644     description: |
645       CephStorage specific configuration to inject into the cluster. Same
646       structure as ExtraConfig.
647     type: json
648   CephStorageSchedulerHints:
649     type: json
650     description: Optional scheduler hints to pass to nova
651     default: {}
652   CephStorageServices:
653     default:
654       - OS::TripleO::Services::CephOSD
655       - OS::TripleO::Services::Kernel
656       - OS::TripleO::Services::Ntp
657       - OS::TripleO::Services::Timezone
658     description: A list of service resources (configured in the Heat
659                  resource_registry) which represent nested stacks
660                  for each service that should get installed on the CephStorage nodes.
661     type: comma_delimited_list
662
663   # Hostname format for each role
664   # Note %index% is translated into the index of the node, e.g 0/1/2 etc
665   # and %stackname% is replaced with OS::stack_name in the template below.
666   # If you want to use the heat generated names, pass '' (empty string).
667   ControllerHostnameFormat:
668     type: string
669     description: Format for Controller node hostnames
670     default: '%stackname%-controller-%index%'
671   ComputeHostnameFormat:
672     type: string
673     description: Format for Compute node hostnames
674     default: '%stackname%-novacompute-%index%'
675   BlockStorageHostnameFormat:
676     type: string
677     description: Format for BlockStorage node hostnames
678     default: '%stackname%-blockstorage-%index%'
679   ObjectStorageHostnameFormat:
680     type: string
681     description: Format for SwiftStorage node hostnames
682     default: '%stackname%-objectstorage-%index%'
683   CephStorageHostnameFormat:
684     type: string
685     description: Format for CephStorage node hostnames
686     default: '%stackname%-cephstorage-%index%'
687
688   # Identifiers to trigger tasks on nodes
689   UpdateIdentifier:
690     default: ''
691     type: string
692     description: >
693       Setting to a previously unused value during stack-update will trigger
694       package update on all nodes
695   DeployIdentifier:
696     default: ''
697     type: string
698     description: >
699       Setting this to a unique value will re-run any deployment tasks which
700       perform configuration on a Heat stack-update.
701
702   # If you want to remove a specific node from a resource group, you can pass
703   # the node name or id as a <Group>RemovalPolicies parameter, for example:
704   # ComputeRemovalPolicies: [{'resource_list': ['0']}]
705   ControllerRemovalPolicies:
706     default: []
707     type: json
708     description: >
709       List of resources to be removed from ControllerResourceGroup when
710       doing an update which requires removal of specific resources.
711   ComputeRemovalPolicies:
712     default: []
713     type: json
714     description: >
715       List of resources to be removed from ComputeResourceGroup when
716       doing an update which requires removal of specific resources.
717   BlockStorageRemovalPolicies:
718     default: []
719     type: json
720     description: >
721       List of resources to be removed from BlockStorageResourceGroup when
722       doing an update which requires removal of specific resources.
723   ObjectStorageRemovalPolicies:
724     default: []
725     type: json
726     description: >
727       List of resources to be removed from ObjectStorageResourceGroup when
728       doing an update which requires removal of specific resources.
729   CephStorageRemovalPolicies:
730     default: []
731     type: json
732     description: >
733       List of resources to be removed from CephStorageResourceGroup when
734       doing an update which requires removal of specific resources.
735
736 parameter_groups:
737 - label: deprecated
738   description: Do not use deprecated params, they will be removed.
739   parameters:
740   - controllerExtraConfig
741
742
743 resources:
744
745   HeatAuthEncryptionKey:
746     type: OS::Heat::RandomString
747
748   PcsdPassword:
749     type: OS::Heat::RandomString
750     properties:
751       length: 16
752
753   HorizonSecret:
754     type: OS::Heat::RandomString
755     properties:
756       length: 10
757
758   EndpointMap:
759     type: OS::TripleO::EndpointMap
760     properties:
761       CloudName: {get_param: CloudName}
762       CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
763       AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
764       CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
765       GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
766       GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
767       GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
768       HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
769       IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
770       KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
771       KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
772       MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
773       MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
774       NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
775       NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
776       SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
777       SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
778       PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
779
780   ControllerServiceChain:
781     type: OS::TripleO::Services
782     properties:
783       Services: {get_param: ControllerServices}
784       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
785
786   Controller:
787     type: OS::Heat::ResourceGroup
788     depends_on: Networks
789     properties:
790       count: {get_param: ControllerCount}
791       removal_policies: {get_param: ControllerRemovalPolicies}
792       resource_def:
793         type: OS::TripleO::Controller
794         properties:
795           AdminPassword: {get_param: AdminPassword}
796           AodhPassword: {get_param: AodhPassword}
797           CeilometerBackend: {get_param: CeilometerBackend}
798           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
799           CeilometerPassword: {get_param: CeilometerPassword}
800           CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
801           CloudDomain: {get_param: CloudDomain}
802           ControlVirtualInterface: {get_param: ControlVirtualInterface}
803           controllerExtraConfig: {get_param: controllerExtraConfig}
804           CorosyncIPv6: {get_param: CorosyncIPv6}
805           Debug: {get_param: Debug}
806           EnableFencing: {get_param: EnableFencing}
807           ManageFirewall: {get_param: ManageFirewall}
808           PurgeFirewallRules: {get_param: PurgeFirewallRules}
809           EnableGalera: {get_param: EnableGalera}
810           ExtraConfig: {get_param: ExtraConfig}
811           FencingConfig: {get_param: FencingConfig}
812           Flavor: {get_param: OvercloudControlFlavor}
813           GnocchiPassword: {get_param: GnocchiPassword}
814           GnocchiBackend: {get_param: GnocchiBackend}
815           GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
816           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
817           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
818           HorizonAllowedHosts: {get_param: HorizonAllowedHosts}
819           HorizonSecret: {get_resource: HorizonSecret}
820           Image: {get_param: controllerImage}
821           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
822           InstanceNameTemplate: {get_param: InstanceNameTemplate}
823           KeyName: {get_param: KeyName}
824           MemcachedIPv6: {get_param: MemcachedIPv6}
825           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
826           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
827           MysqlMaxConnections: {get_param: MysqlMaxConnections}
828           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
829           NeutronTenantMtu: {get_param: NeutronTenantMtu}
830           NeutronPublicInterface: {get_param: NeutronPublicInterface}
831           NeutronPassword: {get_param: NeutronPassword}
832           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
833           NovaIPv6: {get_param: NovaIPv6}
834           NovaPassword: {get_param: NovaPassword}
835           PcsdPassword: {get_resource: PcsdPassword}
836           PublicVirtualInterface: {get_param: PublicVirtualInterface}
837           RabbitPassword: {get_param: RabbitPassword}
838           RabbitUserName: {get_param: RabbitUserName}
839           RabbitCookie: {get_attr: [RabbitCookie, value]}
840           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
841           RabbitClientPort: {get_param: RabbitClientPort}
842           RedisPassword: {get_param: RedisPassword}
843           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
844           RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
845           SwiftHashSuffix: {get_param: SwiftHashSuffix}
846           SwiftMinPartHours: {get_param: SwiftMinPartHours}
847           SwiftPartPower: {get_param: SwiftPartPower}
848           SwiftReplicas: { get_param: SwiftReplicas}
849           ServiceNetMap: {get_param: ServiceNetMap}
850           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
851           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
852           UpdateIdentifier: {get_param: UpdateIdentifier}
853           Hostname:
854             str_replace:
855               template: {get_param: ControllerHostnameFormat}
856               params:
857                 '%stackname%': {get_param: 'OS::stack_name'}
858           NodeIndex: '%index%'
859           ServerMetadata: {get_param: ServerMetadata}
860           SchedulerHints: {get_param: ControllerSchedulerHints}
861           ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
862
863   ComputeServiceChain:
864
865     type: OS::TripleO::Services
866     properties:
867       Services: {get_param: ComputeServices}
868       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
869
870   Compute:
871     type: OS::Heat::ResourceGroup
872     depends_on: Networks
873     properties:
874       count: {get_param: ComputeCount}
875       removal_policies: {get_param: ComputeRemovalPolicies}
876       resource_def:
877         type: OS::TripleO::Compute
878         properties:
879           AdminPassword: {get_param: AdminPassword}
880           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
881           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
882           CeilometerPassword: {get_param: CeilometerPassword}
883           CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
884           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
885           Debug: {get_param: Debug}
886           ExtraConfig: {get_param: ExtraConfig}
887           Flavor: {get_param: OvercloudComputeFlavor}
888           GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
889           Image: {get_param: NovaImage}
890           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
891           KeyName: {get_param: KeyName}
892           KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
893           KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
894           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
895           NeutronTenantMtu: {get_param: NeutronTenantMtu}
896           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
897           NeutronEnableL2Pop : {get_param: NeutronEnableL2Pop}
898           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
899           NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
900           NeutronNetworkType: {get_param: NeutronNetworkType}
901           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
902           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
903           NeutronPassword: {get_param: NeutronPassword}
904           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
905           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
906           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
907           NeutronCorePlugin: {get_param: NeutronCorePlugin}
908           NeutronServicePlugins: {get_param: NeutronServicePlugins}
909           NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
910           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
911           NeutronAgentExtensions: {get_param: NeutronAgentExtensions}
912           # L3 HA and Failover is not relevant for Computes, should be removed
913           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
914           NeutronL3HA: {get_param: NeutronL3HA}
915           NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
916           NovaComputeDriver: {get_param: NovaComputeDriver}
917           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
918           NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
919           NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
920           NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
921           NovaIPv6: {get_param: NovaIPv6}
922           NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
923           NovaPassword: {get_param: NovaPassword}
924           NovaOVSBridge: {get_param: NovaOVSBridge}
925           NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
926           RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
927           RabbitPassword: {get_param: RabbitPassword}
928           RabbitUserName: {get_param: RabbitUserName}
929           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
930           RabbitClientPort: {get_param: RabbitClientPort}
931           ServiceNetMap: {get_param: ServiceNetMap}
932           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
933           UpdateIdentifier: {get_param: UpdateIdentifier}
934           Hostname:
935             str_replace:
936               template: {get_param: ComputeHostnameFormat}
937               params:
938                 '%stackname%': {get_param: 'OS::stack_name'}
939           CloudDomain: {get_param: CloudDomain}
940           ServerMetadata: {get_param: ServerMetadata}
941           SchedulerHints: {get_param: NovaComputeSchedulerHints}
942           NodeIndex: '%index%'
943           ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
944
945   BlockStorageServiceChain:
946     type: OS::TripleO::Services
947     properties:
948       Services: {get_param: BlockStorageServices}
949       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
950
951   BlockStorage:
952     type: OS::Heat::ResourceGroup
953     depends_on: Networks
954     properties:
955       count: {get_param: BlockStorageCount}
956       removal_policies: {get_param: BlockStorageRemovalPolicies}
957       resource_def:
958         type: OS::TripleO::BlockStorage
959         properties:
960           Image: {get_param: BlockStorageImage}
961           KeyName: {get_param: KeyName}
962           Flavor: {get_param: OvercloudBlockStorageFlavor}
963           UpdateIdentifier: {get_param: UpdateIdentifier}
964           Hostname:
965             str_replace:
966               template: {get_param: BlockStorageHostnameFormat}
967               params:
968                 '%stackname%': {get_param: 'OS::stack_name'}
969           ServiceNetMap: {get_param: ServiceNetMap}
970           ExtraConfig: {get_param: ExtraConfig}
971           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
972           CloudDomain: {get_param: CloudDomain}
973           ServerMetadata: {get_param: ServerMetadata}
974           SchedulerHints: {get_param: BlockStorageSchedulerHints}
975           NodeIndex: '%index%'
976           ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
977
978   ObjectStorageServiceChain:
979     type: OS::TripleO::Services
980     properties:
981       Services: {get_param: ObjectStorageServices}
982       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
983
984   ObjectStorage:
985     type: OS::Heat::ResourceGroup
986     depends_on: Networks
987     properties:
988       count: {get_param: ObjectStorageCount}
989       removal_policies: {get_param: ObjectStorageRemovalPolicies}
990       resource_def:
991         type: OS::TripleO::ObjectStorage
992         properties:
993           KeyName: {get_param: KeyName}
994           Flavor: {get_param: OvercloudSwiftStorageFlavor}
995           HashSuffix: {get_param: SwiftHashSuffix}
996           MinPartHours: {get_param: SwiftMinPartHours}
997           PartPower: {get_param: SwiftPartPower}
998           Image: {get_param: SwiftStorageImage}
999           Replicas: { get_param: SwiftReplicas}
1000           UpdateIdentifier: {get_param: UpdateIdentifier}
1001           ServiceNetMap: {get_param: ServiceNetMap}
1002           Hostname:
1003             str_replace:
1004               template: {get_param: ObjectStorageHostnameFormat}
1005               params:
1006                 '%stackname%': {get_param: 'OS::stack_name'}
1007           ExtraConfig: {get_param: ExtraConfig}
1008           ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
1009           CloudDomain: {get_param: CloudDomain}
1010           ServerMetadata: {get_param: ServerMetadata}
1011           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
1012           NodeIndex: '%index%'
1013           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
1014
1015   CephStorageServiceChain:
1016     type: OS::TripleO::Services
1017     properties:
1018       Services: {get_param: CephStorageServices}
1019       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
1020
1021   CephStorage:
1022     type: OS::Heat::ResourceGroup
1023     depends_on: Networks
1024     properties:
1025       count: {get_param: CephStorageCount}
1026       removal_policies: {get_param: CephStorageRemovalPolicies}
1027       resource_def:
1028         type: OS::TripleO::CephStorage
1029         properties:
1030           Image: {get_param: CephStorageImage}
1031           KeyName: {get_param: KeyName}
1032           Flavor: {get_param: OvercloudCephStorageFlavor}
1033           ServiceNetMap: {get_param: ServiceNetMap}
1034           UpdateIdentifier: {get_param: UpdateIdentifier}
1035           Hostname:
1036             str_replace:
1037               template: {get_param: CephStorageHostnameFormat}
1038               params:
1039                 '%stackname%': {get_param: 'OS::stack_name'}
1040           ExtraConfig: {get_param: ExtraConfig}
1041           CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
1042           CloudDomain: {get_param: CloudDomain}
1043           ServerMetadata: {get_param: ServerMetadata}
1044           SchedulerHints: {get_param: CephStorageSchedulerHints}
1045           NodeIndex: '%index%'
1046           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
1047
1048   ControllerIpListMap:
1049     type: OS::TripleO::Network::Ports::NetIpListMap
1050     properties:
1051       ControlPlaneIpList: {get_attr: [Controller, ip_address]}
1052       ExternalIpList: {get_attr: [Controller, external_ip_address]}
1053       InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
1054       StorageIpList: {get_attr: [Controller, storage_ip_address]}
1055       StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
1056       TenantIpList: {get_attr: [Controller, tenant_ip_address]}
1057       ManagementIpList: {get_attr: [Controller, management_ip_address]}
1058
1059   allNodesConfig:
1060     type: OS::TripleO::AllNodes::SoftwareConfig
1061     properties:
1062       compute_hosts: {get_attr: [Compute, hosts_entry]}
1063       controller_hosts: {get_attr: [Controller, hosts_entry]}
1064       controller_ips: {get_attr: [Controller, ip_address]}
1065       block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
1066       object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
1067       ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
1068       controller_names: {get_attr: [Controller, hostname]}
1069       rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1070       mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
1071       redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
1072       memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1073       mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1074       horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1075       heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1076       swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1077       ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1078       aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1079       gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1080       nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1081       nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1082       glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1083       glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1084       cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1085       neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1086       keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1087       keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1088       sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1089       ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
1090       ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1091       ceph_mon_node_names: {get_attr: [Controller, hostname]}
1092       DeployIdentifier: {get_param: DeployIdentifier}
1093       UpdateIdentifier: {get_param: UpdateIdentifier}
1094
1095   MysqlRootPassword:
1096     type: OS::Heat::RandomString
1097     properties:
1098       length: 10
1099
1100   MysqlClusterUniquePart:
1101     type: OS::Heat::RandomString
1102     properties:
1103       length: 10
1104
1105   RabbitCookie:
1106     type: OS::Heat::RandomString
1107     properties:
1108       length: 20
1109       salt: {get_param: RabbitCookieSalt}
1110
1111   # creates the network architecture
1112   Networks:
1113     type: OS::TripleO::Network
1114
1115   ControlVirtualIP:
1116     type: OS::Neutron::Port
1117     depends_on: Networks
1118     properties:
1119       name: control_virtual_ip
1120       network: {get_param: NeutronControlPlaneID}
1121       fixed_ips: {get_param: ControlFixedIPs}
1122       replacement_policy: AUTO
1123
1124   RedisVirtualIP:
1125     depends_on: Networks
1126     type: OS::TripleO::Network::Ports::RedisVipPort
1127     properties:
1128       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1129       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1130       PortName: redis_virtual_ip
1131       NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1132       ServiceName: redis
1133
1134   # The public VIP is on the External net, falls back to ctlplane
1135   PublicVirtualIP:
1136     depends_on: Networks
1137     type: OS::TripleO::Network::Ports::ExternalVipPort
1138     properties:
1139       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1140       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1141       PortName: public_virtual_ip
1142       FixedIPs: {get_param: PublicVirtualFixedIPs}
1143
1144   InternalApiVirtualIP:
1145     depends_on: Networks
1146     type: OS::TripleO::Network::Ports::InternalApiVipPort
1147     properties:
1148       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1149       PortName: internal_api_virtual_ip
1150       FixedIPs: {get_param: InternalApiVirtualFixedIPs}
1151
1152   StorageVirtualIP:
1153     depends_on: Networks
1154     type: OS::TripleO::Network::Ports::StorageVipPort
1155     properties:
1156       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1157       PortName: storage_virtual_ip
1158       FixedIPs: {get_param: StorageVirtualFixedIPs}
1159
1160   StorageMgmtVirtualIP:
1161     depends_on: Networks
1162     type: OS::TripleO::Network::Ports::StorageMgmtVipPort
1163     properties:
1164       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1165       PortName: storage_management_virtual_ip
1166       FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
1167
1168   VipMap:
1169     type: OS::TripleO::Network::Ports::NetVipMap
1170     properties:
1171       ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1172       ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
1173       ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
1174       InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1175       InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
1176       StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1177       StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
1178       StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1179       StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
1180       # No tenant or management VIP required
1181
1182   VipConfig:
1183     type: OS::TripleO::VipConfig
1184
1185   VipDeployment:
1186     type: OS::Heat::StructuredDeployments
1187     properties:
1188       name: VipDeployment
1189       config: {get_resource: VipConfig}
1190       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1191       input_values:
1192         # service VIP mappings
1193         keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1194         keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1195         neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1196         cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1197         glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1198         glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1199         swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1200         nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1201         nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1202         ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1203         aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1204         gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1205         heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1206         horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1207         redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1208         mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1209         rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1210         # direct configuration of Virtual IPs for each network
1211         control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
1212         public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
1213         internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
1214         sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1215         ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
1216         storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
1217         storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
1218
1219   ControllerBootstrapNodeConfig:
1220     type: OS::TripleO::BootstrapNode::SoftwareConfig
1221     properties:
1222       bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1223       bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1224
1225   ControllerBootstrapNodeDeployment:
1226     type: OS::Heat::StructuredDeployments
1227     properties:
1228       name: ControllerBootstrapNodeDeployment
1229       config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1230       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1231
1232   ControllerSwiftDeployment:
1233     type: OS::Heat::StructuredDeployments
1234     properties:
1235       name: ControllerSwiftDeployment
1236       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1237       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1238
1239   ObjectStorageSwiftDeployment:
1240     type: OS::Heat::StructuredDeployments
1241     properties:
1242       name: ObjectStorageSwiftDeployment
1243       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1244       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1245
1246   SwiftDevicesAndProxyConfig:
1247     type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1248     properties:
1249       controller_swift_devices: {get_attr: [Controller, swift_device]}
1250       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1251       controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1252
1253   ComputeCephDeployment:
1254     type: OS::Heat::StructuredDeployments
1255     properties:
1256       name: ComputeCephDeployment
1257       config: {get_attr: [CephClusterConfig, config_id]}
1258       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1259
1260   ControllerCephDeployment:
1261     type: OS::Heat::StructuredDeployments
1262     properties:
1263       name: ControllerCephDeployment
1264       config: {get_attr: [CephClusterConfig, config_id]}
1265       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1266
1267   CephStorageCephDeployment:
1268     type: OS::Heat::StructuredDeployments
1269     properties:
1270       name: CephStorageCephDeployment
1271       config: {get_attr: [CephClusterConfig, config_id]}
1272       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1273
1274   CephClusterConfig:
1275     type: OS::TripleO::CephClusterConfig::SoftwareConfig
1276
1277   ControllerAllNodesDeployment:
1278     type: OS::Heat::StructuredDeployments
1279     properties:
1280       name: ControllerAllNodesDeployment
1281       config: {get_attr: [allNodesConfig, config_id]}
1282       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1283
1284   ComputeAllNodesDeployment:
1285     type: OS::Heat::StructuredDeployments
1286     properties:
1287       name: ComputeAllNodesDeployment
1288       config: {get_attr: [allNodesConfig, config_id]}
1289       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1290
1291   BlockStorageAllNodesDeployment:
1292     type: OS::Heat::StructuredDeployments
1293     properties:
1294       name: BlockStorageAllNodesDeployment
1295       config: {get_attr: [allNodesConfig, config_id]}
1296       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1297
1298   ObjectStorageAllNodesDeployment:
1299     type: OS::Heat::StructuredDeployments
1300     properties:
1301       name: ObjectStorageAllNodesDeployment
1302       config: {get_attr: [allNodesConfig, config_id]}
1303       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1304
1305   CephStorageAllNodesDeployment:
1306     type: OS::Heat::StructuredDeployments
1307     properties:
1308       name: CephStorageAllNodesDeployment
1309       config: {get_attr: [allNodesConfig, config_id]}
1310       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1311
1312   # All Nodes Validations
1313   AllNodesValidationConfig:
1314     type: OS::TripleO::AllNodes::Validation
1315     properties:
1316       PingTestIps:
1317         list_join:
1318         - ' '
1319         - - {get_attr: [Controller, resource.0.external_ip_address]}
1320           - {get_attr: [Controller, resource.0.internal_api_ip_address]}
1321           - {get_attr: [Controller, resource.0.storage_ip_address]}
1322           - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
1323           - {get_attr: [Controller, resource.0.tenant_ip_address]}
1324
1325   ControllerAllNodesValidationDeployment:
1326     type: OS::Heat::StructuredDeployments
1327     depends_on: ControllerAllNodesDeployment
1328     properties:
1329       name: ControllerAllNodesValidationDeployment
1330       config: {get_resource: AllNodesValidationConfig}
1331       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1332
1333   ComputeAllNodesValidationDeployment:
1334     type: OS::Heat::StructuredDeployments
1335     depends_on: ComputeAllNodesDeployment
1336     properties:
1337       name: ComputeAllNodesValidationDeployment
1338       config: {get_resource: AllNodesValidationConfig}
1339       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1340
1341   BlockStorageAllNodesValidationDeployment:
1342     type: OS::Heat::StructuredDeployments
1343     depends_on: BlockStorageAllNodesDeployment
1344     properties:
1345       name: BlockStorageAllNodesValidationDeployment
1346       config: {get_resource: AllNodesValidationConfig}
1347       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1348
1349   ObjectStorageAllNodesValidationDeployment:
1350     type: OS::Heat::StructuredDeployments
1351     depends_on: ObjectStorageAllNodesDeployment
1352     properties:
1353       name: ObjectStorageAllNodesValidationDeployment
1354       config: {get_resource: AllNodesValidationConfig}
1355       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1356
1357   CephStorageAllNodesValidationDeployment:
1358     type: OS::Heat::StructuredDeployments
1359     depends_on: CephStorageAllNodesDeployment
1360     properties:
1361       name: CephStorageAllNodesValidationDeployment
1362       config: {get_resource: AllNodesValidationConfig}
1363       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1364
1365   UpdateWorkflow:
1366     type: OS::TripleO::Tasks::UpdateWorkflow
1367     properties:
1368       controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
1369       compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
1370       blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1371       objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1372       cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1373       input_values:
1374         deploy_identifier: {get_param: DeployIdentifier}
1375         update_identifier: {get_param: UpdateIdentifier}
1376
1377   # Optional ExtraConfig for all nodes - all roles are passed in here, but
1378   # the nested template may configure each role differently (or not at all)
1379   AllNodesExtraConfig:
1380     type: OS::TripleO::AllNodesExtraConfig
1381     depends_on:
1382       - UpdateWorkflow
1383       - ComputeAllNodesValidationDeployment
1384       - BlockStorageAllNodesValidationDeployment
1385       - ObjectStorageAllNodesValidationDeployment
1386       - CephStorageAllNodesValidationDeployment
1387       - ControllerAllNodesValidationDeployment
1388     properties:
1389       controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
1390       compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
1391       blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1392       objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1393       cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1394
1395   # Nested stack deployment runs after all other controller deployments
1396   ControllerNodesPostDeployment:
1397     type: OS::TripleO::ControllerPostDeployment
1398     depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1399     properties:
1400       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1401       RoleData: {get_attr: [ControllerServiceChain, role_data]}
1402
1403   ComputeNodesPostDeployment:
1404     type: OS::TripleO::ComputePostDeployment
1405     depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1406     properties:
1407       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1408       RoleData: {get_attr: [ComputeServiceChain, role_data]}
1409
1410   ObjectStorageNodesPostDeployment:
1411     type: OS::TripleO::ObjectStoragePostDeployment
1412     depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1413     properties:
1414       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1415       RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
1416
1417   BlockStorageNodesPostDeployment:
1418     type: OS::TripleO::BlockStoragePostDeployment
1419     depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1420     properties:
1421       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1422       RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
1423
1424   CephStorageNodesPostDeployment:
1425     type: OS::TripleO::CephStoragePostDeployment
1426     depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1427     properties:
1428       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1429       RoleData: {get_attr: [CephStorageServiceChain, role_data]}
1430
1431 outputs:
1432   KeystoneURL:
1433     description: URL for the Overcloud Keystone service
1434     value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1435   KeystoneAdminVip:
1436     description: Keystone Admin VIP endpoint
1437     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1438   PublicVip:
1439     description: Controller VIP for public API endpoints
1440     value: {get_attr: [VipMap, net_ip_map, external]}
1441   AodhInternalVip:
1442     description: VIP for Aodh API internal endpoint
1443     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1444   CeilometerInternalVip:
1445     description: VIP for Ceilometer API internal endpoint
1446     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1447   CinderInternalVip:
1448     description: VIP for Cinder API internal endpoint
1449     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1450   GlanceInternalVip:
1451     description: VIP for Glance API internal endpoint
1452     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1453   GnocchiInternalVip:
1454     description: VIP for Gnocchi API internal endpoint
1455     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1456   HeatInternalVip:
1457     description: VIP for Heat API internal endpoint
1458     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1459   IronicInternalVip:
1460     description: VIP for Ironic API internal endpoint
1461     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
1462   KeystoneInternalVip:
1463     description: VIP for Keystone API internal endpoint
1464     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1465   NeutronInternalVip:
1466     description: VIP for Neutron API internal endpoint
1467     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1468   NovaInternalVip:
1469     description: VIP for Nova API internal endpoint
1470     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1471   SaharaInternalVip:
1472     description: VIP for Sahara API internal endpoint
1473     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1474   SwiftInternalVip:
1475     description: VIP for Swift Proxy internal endpoint
1476     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1477   EndpointMap:
1478     description: |
1479       Mapping of the resources with the needed info for their endpoints.
1480       This includes the protocol used, the IP, port and also a full
1481       representation of the URI.
1482     value: {get_attr: [EndpointMap, endpoint_map]}
1483   HostsEntry:
1484     description: |
1485       The content that should be appended to your /etc/hosts if you want to get
1486       hostname-based access to the deployed nodes (useful for testing without
1487       setting up a DNS).
1488     value: {get_attr: [allNodesConfig, hosts_entries]}