Configure ControllerServices via resource chains
[apex-tripleo-heat-templates.git] / puppet / controller.yaml
1 heat_template_version: 2015-10-15
2
3 description: >
4   OpenStack controller node configured by Puppet.
5
6 parameters:
7   AdminEmail:
8     default: 'admin@example.com'
9     description: The email for the keystone admin account.
10     type: string
11     hidden: true
12   AdminPassword:
13     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
14     type: string
15     hidden: true
16   AdminToken:
17     description: The keystone auth secret and db password.
18     type: string
19     hidden: true
20   AodhApiVirtualIP:
21     type: string
22     default: ''
23   AodhPassword:
24     description: The password for the aodh services.
25     type: string
26     hidden: true
27   CeilometerApiVirtualIP:
28     type: string
29     default: ''
30   CeilometerBackend:
31     default: 'mongodb'
32     description: The ceilometer backend type.
33     type: string
34   CeilometerMeteringSecret:
35     description: Secret shared by the ceilometer services.
36     type: string
37     hidden: true
38   CeilometerPassword:
39     description: The password for the ceilometer service  and db account.
40     type: string
41     hidden: true
42   CeilometerStoreEvents:
43     default: false
44     description: Whether to store events in ceilometer.
45     type: boolean
46   CinderApiVirtualIP:
47     type: string
48     default: ''
49   CeilometerWorkers:
50     default: 0
51     description: Number of workers for Ceilometer service.
52     type: number
53   CinderEnableDBPurge:
54     default: true
55     description: |
56       Whether to create cron job for purging soft deleted rows in Cinder database.
57     type: boolean
58   CinderEnableNfsBackend:
59     default: false
60     description: Whether to enable or not the NFS backend for Cinder
61     type: boolean
62   CinderEnableIscsiBackend:
63     default: true
64     description: Whether to enable or not the Iscsi backend for Cinder
65     type: boolean
66   CinderEnableRbdBackend:
67     default: false
68     description: Whether to enable or not the Rbd backend for Cinder
69     type: boolean
70   CinderISCSIHelper:
71     default: lioadm
72     description: The iSCSI helper to use with cinder.
73     type: string
74   CinderLVMLoopDeviceSize:
75     default: 10280
76     description: The size of the loopback file used by the cinder LVM driver.
77     type: number
78   CinderNfsMountOptions:
79     default: ''
80     description: >
81       Mount options for NFS mounts used by Cinder NFS backend. Effective
82       when CinderEnableNfsBackend is true.
83     type: string
84   CinderNfsServers:
85     default: ''
86     description: >
87       NFS servers used by Cinder NFS backend. Effective when
88       CinderEnableNfsBackend is true.
89     type: comma_delimited_list
90   CinderPassword:
91     description: The password for the cinder service and db account, used by cinder-api.
92     type: string
93     hidden: true
94   CinderBackendConfig:
95     default: {}
96     description: Contains parameters to configure Cinder backends. Typically
97                  set via parameter_defaults in the resource registry.
98     type: json
99   CinderWorkers:
100     default: 0
101     description: Number of workers for Cinder service.
102     type: number
103   ControllerExtraConfig:
104     default: {}
105     description: |
106       Controller specific hiera configuration data to inject into the cluster.
107     type: json
108   ControllerIPs:
109     default: {}
110     description: >
111       A network mapped list of IPs to assign to Controllers in the following form:
112       {
113         "internal_api": ["a.b.c.d", "e.f.g.h"],
114         ...
115       }
116     type: json
117   ControlVirtualInterface:
118     default: 'br-ex'
119     description: Interface where virtual ip will be assigned.
120     type: string
121   CorosyncIPv6:
122     default: false
123     description: Enable IPv6 in Corosync
124     type: boolean
125   Debug:
126     default: ''
127     description: Set to True to enable debugging on all services.
128     type: string
129   EnableFencing:
130     default: false
131     description: Whether to enable fencing in Pacemaker or not.
132     type: boolean
133   EnableGalera:
134     default: true
135     description: Whether to use Galera instead of regular MariaDB.
136     type: boolean
137   EnableLoadBalancer:
138     default: true
139     description: Whether to deploy a LoadBalancer on the Controller
140     type: boolean
141   EnableCephStorage:
142     default: false
143     description: Whether to deploy Ceph Storage (OSD) on the Controller
144     type: boolean
145   EnableSwiftStorage:
146     default: true
147     description: Whether to enable Swift Storage on the Controller
148     type: boolean
149   ExtraConfig:
150     default: {}
151     description: |
152       Additional hieradata to inject into the cluster, note that
153       ControllerExtraConfig takes precedence over ExtraConfig.
154     type: json
155   FencingConfig:
156     default: {}
157     description: |
158       Pacemaker fencing configuration. The JSON should have
159       the following structure:
160         {
161           "devices": [
162             {
163               "agent": "AGENT_NAME",
164               "host_mac": "HOST_MAC_ADDRESS",
165               "params": {"PARAM_NAME": "PARAM_VALUE"}
166             }
167           ]
168         }
169       For instance:
170         {
171           "devices": [
172             {
173               "agent": "fence_xvm",
174               "host_mac": "52:54:00:aa:bb:cc",
175               "params": {
176                 "multicast_address": "225.0.0.12",
177                 "port": "baremetal_0",
178                 "manage_fw": true,
179                 "manage_key_file": true,
180                 "key_file": "/etc/fence_xvm.key",
181                 "key_file_password": "abcdef"
182               }
183             }
184           ]
185         }
186     type: json
187   Flavor:
188     description: Flavor for control nodes to request when deploying.
189     type: string
190     constraints:
191       - custom_constraint: nova.flavor
192   GlanceNotifierStrategy:
193     description: Strategy to use for Glance notification queue
194     type: string
195     default: noop
196   GlanceLogFile:
197     description: The filepath of the file to use for logging messages from Glance.
198     type: string
199     default: ''
200   GlancePassword:
201     description: The password for the glance service and db account, used by the glance services.
202     type: string
203     hidden: true
204   GlanceBackend:
205     default: swift
206     description: The short name of the Glance backend to use. Should be one
207       of swift, rbd, or file
208     type: string
209     constraints:
210     - allowed_values: ['swift', 'file', 'rbd']
211   GlanceFilePcmkDevice:
212     default: ''
213     description: >
214       An exported storage device that should be mounted by Pacemaker
215       as Glance storage. Effective when GlanceFilePcmkManage is true.
216     type: string
217   GlanceFilePcmkFstype:
218     default: 'nfs'
219     description: >
220       Filesystem type for Pacemaker mount used as Glance storage.
221       Effective when GlanceFilePcmkManage is true.
222     type: string
223   GlanceFilePcmkManage:
224     default: false
225     description: >
226       Whether to make Glance file backend a mount managed by Pacemaker.
227       Effective when GlanceBackend is 'file'.
228     type: boolean
229   GlanceFilePcmkOptions:
230     default: ''
231     description: >
232       Mount options for Pacemaker mount used as Glance storage.
233       Effective when GlanceFilePcmkManage is true.
234     type: string
235   HAProxyStatsPassword:
236     description: Password for HAProxy stats endpoint
237     type: string
238   HAProxyStatsUser:
239     description: User for HAProxy stats endpoint
240     default: admin
241     type: string
242   HAProxySyslogAddress:
243     default: /dev/log
244     description: Syslog address where HAproxy will send its log
245     type: string
246   GlanceWorkers:
247     default: 0
248     description: Number of workers for Glance service.
249     type: number
250   HeatPassword:
251     description: The password for the Heat service and db account, used by the Heat services.
252     type: string
253     hidden: true
254   HeatStackDomainAdminPassword:
255     description: Password for heat_stack_domain_admin user.
256     type: string
257     hidden: true
258   HeatAuthEncryptionKey:
259     description: Auth encryption key for heat-engine
260     type: string
261     hidden: true
262   HorizonAllowedHosts:
263     default: '*'
264     description: A list of IP/Hostname allowed to connect to horizon
265     type: comma_delimited_list
266   HeatWorkers:
267     default: 0
268     description: Number of workers for Heat service.
269     type: number
270   HeatEnableDBPurge:
271     type: boolean
272     default: true
273     description: |
274         Whether to create cron job for purging soft deleted rows in the Heat database.
275   HorizonSecret:
276     description: Secret key for Django
277     type: string
278     hidden: true
279   Image:
280     type: string
281     default: overcloud-control
282     constraints:
283       - custom_constraint: glance.image
284   ImageUpdatePolicy:
285     default: 'REBUILD_PRESERVE_EPHEMERAL'
286     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
287     type: string
288   InstanceNameTemplate:
289     default: 'instance-%08x'
290     description: Template string to be used to generate instance names
291     type: string
292   KeyName:
293     default: default
294     description: Name of an existing Nova key pair to enable SSH access to the instances
295     type: string
296     constraints:
297       - custom_constraint: nova.keypair
298   KeystoneCACertificate:
299     default: ''
300     description: Keystone self-signed certificate authority certificate.
301     type: string
302   KeystoneEnableDBPurge:
303     default: true
304     description: |
305         Whether to create cron job for purging soft deleted rows in Keystone database.
306     type: boolean
307   KeystoneSigningCertificate:
308     default: ''
309     description: Keystone certificate for verifying token validity.
310     type: string
311   KeystoneSigningKey:
312     default: ''
313     description: Keystone key for signing tokens.
314     type: string
315     hidden: true
316   KeystoneSSLCertificate:
317     default: ''
318     description: Keystone certificate for verifying token validity.
319     type: string
320   KeystoneSSLCertificateKey:
321     default: ''
322     description: Keystone key for signing tokens.
323     type: string
324     hidden: true
325   KeystoneNotificationDriver:
326     description: Comma-separated list of Oslo notification drivers used by Keystone
327     default: ['messaging']
328     type: comma_delimited_list
329   KeystoneNotificationFormat:
330     description: The Keystone notification format
331     default: 'basic'
332     type: string
333     constraints:
334       - allowed_values: [ 'basic', 'cadf' ]
335   KeystoneRegion:
336     type: string
337     default: 'regionOne'
338     description: Keystone region for endpoint
339   ManageFirewall:
340     default: false
341     description: Whether to manage IPtables rules.
342     type: boolean
343   MemcachedIPv6:
344     default: false
345     description: Enable IPv6 features in Memcached.
346     type: boolean
347   PurgeFirewallRules:
348     default: false
349     description: Whether IPtables rules should be purged before setting up the new ones.
350     type: boolean
351   KeystoneWorkers:
352     default: 0
353     description: Number of workers for Keystone service.
354     type: number
355   SaharaApiVirtualIP:
356     type: string
357     default: ''
358   SaharaPassword:
359     default: unset
360     description: The password for the sahara service account, used by sahara-api.
361     type: string
362     hidden: true
363   MysqlClusterUniquePart:
364     description: A unique identifier of the MySQL cluster the controller is in.
365     type: string
366     default: 'unset'  # Has to be here because of the ignored empty value bug
367     # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446
368     # constraints:
369     # - length: {min: 4, max: 10}
370   MysqlInnodbBufferPoolSize:
371     description: >
372         Specifies the size of the buffer pool in megabytes. Setting to
373         zero should be interpreted as "no value" and will defer to the
374         lower level default.
375     type: number
376     default: 0
377   MysqlMaxConnections:
378     description: Configures MySQL max_connections config setting
379     type: number
380     default: 4096
381   MysqlRootPassword:
382     type: string
383     hidden: true
384     default: ''  # Has to be here because of the ignored empty value bug
385   NeutronExternalNetworkBridge:
386     description: Name of bridge used for external network traffic.
387     type: string
388     default: 'br-ex'
389   NeutronBridgeMappings:
390     description: >
391       The OVS logical->physical bridge mappings to use. See the Neutron
392       documentation for details. Defaults to mapping br-ex - the external
393       bridge on hosts - to a physical name 'datacentre' which can be used
394       to create provider networks (and we use this for the default floating
395       network) - if changing this either use different post-install network
396       scripts or be sure to keep 'datacentre' as a mapping network name.
397     type: comma_delimited_list
398     default: "datacentre:br-ex"
399   NeutronDnsmasqOptions:
400     default: 'dhcp-option-force=26,1400'
401     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.
402     type: string
403   NeutronEnableDHCPAgent:
404     description: Knob to enable/disable DHCP Agent
405     type: boolean
406     default: true
407   NeutronEnableL3Agent:
408     description: Knob to enable/disable L3 agent
409     type: boolean
410     default: true
411   NeutronEnableMetadataAgent:
412     description: Knob to enable/disable Metadata agent
413     type: boolean
414     default: true
415   NeutronEnableOVSAgent:
416     description: Knob to enable/disable OVS Agent
417     type: boolean
418     default: true
419   NeutronAgentMode:
420     default: 'dvr_snat'
421     description: Agent mode for the neutron-l3-agent on the controller hosts
422     type: string
423   NeutronL3HA:
424     default: 'False'
425     description: Whether to enable l3-agent HA
426     type: string
427   NeutronDhcpAgentsPerNetwork:
428     type: number
429     default: 3
430     description: The number of neutron dhcp agents to schedule per network
431   NeutronDVR:
432     default: 'False'
433     description: Whether to configure Neutron Distributed Virtual Routers
434     type: string
435   NeutronMetadataProxySharedSecret:
436     description: Shared secret to prevent spoofing
437     type: string
438     hidden: true
439   NeutronCorePlugin:
440     default: 'ml2'
441     description: |
442         The core plugin for Neutron. The value should be the entrypoint to be loaded
443         from neutron.core_plugins namespace.
444     type: string
445   NeutronServicePlugins:
446     default: "router,qos"
447     description: |
448         Comma-separated list of service plugin entrypoints to be loaded from the
449         neutron.service_plugins namespace.
450     type: comma_delimited_list
451   NeutronTypeDrivers:
452     default: "vxlan,vlan,flat,gre"
453     description: |
454         Comma-separated list of network type driver entrypoints to be loaded.
455     type: comma_delimited_list
456   NeutronMechanismDrivers:
457     default: 'openvswitch'
458     description: |
459         The mechanism drivers for the Neutron tenant network.
460     type: comma_delimited_list
461   NeutronAllowL3AgentFailover:
462     default: 'True'
463     description: Allow automatic l3-agent failover
464     type: string
465   NeutronEnableIsolatedMetadata:
466     default: 'False'
467     description: If True, DHCP provide metadata route to VM.
468     type: string
469   NeutronEnableTunnelling:
470     type: string
471     default: "True"
472   NeutronEnableL2Pop:
473     type: string
474     description: >
475         Enable/disable the L2 population feature in the Neutron agents.
476     default: "False"
477   NeutronFlatNetworks:
478     type: comma_delimited_list
479     default: 'datacentre'
480     description: If set, flat networks to configure in neutron plugins.
481   NeutronL3HA:
482     default: 'False'
483     description: Whether to enable l3-agent HA
484     type: string
485   NeutronNetworkType:
486     default: 'vxlan'
487     description: The tenant network type for Neutron.
488     type: comma_delimited_list
489   NeutronNetworkVLANRanges:
490     default: 'datacentre:1:1000'
491     description: >
492       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
493       Neutron documentation for permitted values. Defaults to permitting any
494       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
495     type: comma_delimited_list
496   NeutronPassword:
497     description: The password for the neutron service and db account, used by neutron agents.
498     type: string
499     hidden: true
500   NeutronPublicInterface:
501     default: nic1
502     description: What interface to bridge onto br-ex for network nodes.
503     type: string
504   NeutronPublicInterfaceTag:
505     default: ''
506     description: >
507       VLAN tag for creating a public VLAN. The tag will be used to
508       create an access port on the exterior bridge for each control plane node,
509       and that port will be given the IP address returned by neutron from the
510       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
511       overcloud.yaml to include the deployment of VLAN ports to the control
512       plane.
513     type: string
514   NeutronPublicInterfaceDefaultRoute:
515     default: ''
516     description: A custom default route for the NeutronPublicInterface.
517     type: string
518   NeutronPublicInterfaceIP:
519     default: ''
520     description: A custom IP address to put onto the NeutronPublicInterface.
521     type: string
522   NeutronPublicInterfaceRawDevice:
523     default: ''
524     description: If set, the public interface is a vlan with this device as the raw device.
525     type: string
526   NeutronTenantMtu:
527     description: >
528       The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
529       be at least 50 bytes smaller than the MTU on the physical network. This
530       value will be used to set the MTU on the virtual Ethernet device.
531       This number is related to the value of NeutronDnsmasqOptions, since that
532       will determine the MTU that is assigned to the VM host through DHCP.
533     default: 1400
534     type: number
535   NeutronTunnelTypes:
536     default: 'vxlan'
537     description: |
538         The tunnel types for the Neutron tenant network.
539     type: comma_delimited_list
540   NeutronTunnelIdRanges:
541     description: |
542         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
543         of GRE tunnel IDs that are available for tenant network allocation
544     default: ["1:4094", ]
545     type: comma_delimited_list
546   NeutronVniRanges:
547     description: |
548         Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
549         of VXLAN VNI IDs that are available for tenant network allocation
550     default: ["1:4094", ]
551     type: comma_delimited_list
552   NeutronPluginExtensions:
553     default: "qos,port_security"
554     description: |
555         Comma-separated list of extensions enabled for the Neutron plugin.
556     type: comma_delimited_list
557   NeutronAgentExtensions:
558     default: "qos"
559     description: |
560         Comma-separated list of extensions enabled for the Neutron agents.
561     type: comma_delimited_list
562   NovaApiVirtualIP:
563     type: string
564     default: ''
565   NeutronWorkers:
566     default: 0
567     description: Number of workers for Neutron service.
568     type: number
569   NovaEnableDBPurge:
570     default: true
571     description: |
572         Whether to create cron job for purging soft deleted rows in Nova database.
573     type: boolean
574   NovaIPv6:
575     default: false
576     description: Enable IPv6 features in Nova
577     type: boolean
578   NovaPassword:
579     description: The password for the nova service and db account, used by nova-api.
580     type: string
581     hidden: true
582   NovaWorkers:
583     default: 0
584     description: Number of workers for Nova service.
585     type: number
586   MongoDbNoJournal:
587     default: false
588     description: Should MongoDb journaling be disabled
589     type: boolean
590   MongoDbIPv6:
591     default: false
592     description: Enable IPv6 if Mongo DB VIP is IPv6
593     type: boolean
594   NtpServer:
595     default: ''
596     description: Comma-separated list of ntp servers
597     type: comma_delimited_list
598   PcsdPassword:
599     type: string
600     description: The password for the 'pcsd' user.
601     hidden: true
602   PublicVirtualInterface:
603     default: 'br-ex'
604     description: >
605         Specifies the interface where the public-facing virtual ip will be assigned.
606         This should be int_public when a VLAN is being used.
607     type: string
608   PublicVirtualIP:
609     type: string
610     default: ''  # Has to be here because of the ignored empty value bug
611   RabbitCookie:
612     type: string
613     default: ''  # Has to be here because of the ignored empty value bug
614     hidden: true
615   RabbitPassword:
616     description: The password for RabbitMQ
617     type: string
618     hidden: true
619   RabbitUserName:
620     default: guest
621     description: The username for RabbitMQ
622     type: string
623   RabbitClientUseSSL:
624     default: false
625     description: >
626         Rabbit client subscriber parameter to specify
627         an SSL connection to the RabbitMQ host.
628     type: string
629   RabbitClientPort:
630     default: 5672
631     description: Set rabbit subscriber port, change this if using SSL
632     type: number
633   RabbitFDLimit:
634     default: 16384
635     description: Configures RabbitMQ FD limit
636     type: string
637   RabbitIPv6:
638     default: false
639     description: Enable IPv6 in RabbitMQ
640     type: boolean
641   RedisPassword:
642     type: string
643     description: The password to access the Redis service
644     hidden: true
645   RedisVirtualIP:
646     type: string
647     default: ''  # Has to be here because of the ignored empty value bug
648   RedisVirtualIPUri:
649     type: string
650     default: ''  # Has to be here because of the ignored empty value bug
651     description: An IP address which is wrapped in brackets in case of IPv6
652   SnmpdReadonlyUserName:
653     default: ro_snmp_user
654     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
655     type: string
656   SnmpdReadonlyUserPassword:
657     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
658     type: string
659     hidden: true
660   SwiftHashSuffix:
661     description: A random string to be used as a salt when hashing to determine mappings
662       in the ring.
663     hidden: true
664     type: string
665   SwiftMountCheck:
666     default: 'false'
667     description: Value of mount_check in Swift account/container/object -server.conf
668     type: boolean
669   SwiftMinPartHours:
670     type: number
671     default: 1
672     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
673   SwiftPartPower:
674     default: 10
675     description: Partition Power to use when building Swift rings
676     type: number
677   SwiftRingBuild:
678     default: true
679     description: Whether to manage Swift rings or not
680     type: boolean
681   SwiftPassword:
682     description: The password for the swift service account, used by the swift proxy
683       services.
684     hidden: true
685     type: string
686   SwiftProxyVirtualIP:
687     type: string
688     default: ''
689   SwiftReplicas:
690     type: number
691     default: 3
692     description: How many replicas to use in the swift rings.
693   SwiftWorkers:
694     default: 0
695     description: Number of workers for Swift service.
696     type: number
697   TimeZone:
698     default: 'UTC'
699     description: The timezone to be set on controller nodes.
700     type: string
701   UpgradeLevelNovaCompute:
702     type: string
703     description: Nova Compute upgrade level
704     default: ''
705   VirtualIP: # DEPRECATED: use per service settings instead
706     type: string
707     default: ''  # Has to be here because of the ignored empty value bug
708   HeatApiVirtualIP:
709     type: string
710     default: ''
711   HeatApiVirtualIPUri:
712     type: string
713     default: ''
714   GlanceApiVirtualIP:
715     type: string
716     default: ''
717   GlanceRegistryVirtualIP:
718     type: string
719     default: ''
720   MysqlVirtualIP:
721     type: string
722     default: ''
723   MysqlVirtualIPUri:
724     type: string
725     default: ''
726   KeystoneAdminApiVirtualIP:
727     type: string
728     default: ''
729   KeystonePublicApiVirtualIP:
730     type: string
731     default: ''
732   NeutronApiVirtualIP:
733     type: string
734     default: ''
735   EnablePackageInstall:
736     default: 'false'
737     description: Set to true to enable package installation via Puppet
738     type: boolean
739   ServiceNetMap:
740     default: {}
741     description: Mapping of service_name -> network name. Typically set
742                  via parameter_defaults in the resource registry.
743     type: json
744   EndpointMap:
745     default: {}
746     description: Mapping of service endpoint -> protocol. Typically set
747                  via parameter_defaults in the resource registry.
748     type: json
749   UpdateIdentifier:
750     default: ''
751     type: string
752     description: >
753       Setting to a previously unused value during stack-update will trigger
754       package update on all nodes
755   Hostname:
756     type: string
757     default: '' # Defaults to Heat created hostname
758   HostnameMap:
759     type: json
760     default: {}
761     description: Optional mapping to override hostnames
762   NetworkDeploymentActions:
763     type: comma_delimited_list
764     description: >
765       Heat action when to apply network configuration changes
766     default: ['CREATE']
767   NodeIndex:
768     type: number
769     default: 0
770   SoftwareConfigTransport:
771     default: POLL_SERVER_CFN
772     description: |
773       How the server should receive the metadata required for software configuration.
774     type: string
775     constraints:
776     - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
777   CloudDomain:
778     default: ''
779     type: string
780     description: >
781       The DNS domain used for the hosts. This should match the dhcp_domain
782       configured in the Undercloud neutron. Defaults to localdomain.
783   ServerMetadata:
784     default: {}
785     description: >
786       Extra properties or metadata passed to Nova for the created nodes in
787       the overcloud. It's accessible via the Nova metadata API.
788     type: json
789   SchedulerHints:
790     type: json
791     description: Optional scheduler hints to pass to nova
792     default: {}
793   ServiceConfigSettings:
794     type: json
795     default: {}
796
797 resources:
798
799   Controller:
800     type: OS::Nova::Server
801     properties:
802       image: {get_param: Image}
803       image_update_policy: {get_param: ImageUpdatePolicy}
804       flavor: {get_param: Flavor}
805       key_name: {get_param: KeyName}
806       networks:
807         - network: ctlplane
808       user_data_format: SOFTWARE_CONFIG
809       user_data: {get_resource: UserData}
810       name:
811         str_replace:
812             template: {get_param: Hostname}
813             params: {get_param: HostnameMap}
814       software_config_transport: {get_param: SoftwareConfigTransport}
815       metadata: {get_param: ServerMetadata}
816       scheduler_hints: {get_param: SchedulerHints}
817
818   # Combine the NodeAdminUserData and NodeUserData mime archives
819   UserData:
820     type: OS::Heat::MultipartMime
821     properties:
822       parts:
823       - config: {get_resource: NodeAdminUserData}
824         type: multipart
825       - config: {get_resource: NodeUserData}
826         type: multipart
827
828   # Creates the "heat-admin" user if configured via the environment
829   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
830   NodeAdminUserData:
831     type: OS::TripleO::NodeAdminUserData
832
833   # For optional operator additional userdata
834   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
835   NodeUserData:
836     type: OS::TripleO::NodeUserData
837
838   ExternalPort:
839     type: OS::TripleO::Controller::Ports::ExternalPort
840     properties:
841       IPPool: {get_param: ControllerIPs}
842       NodeIndex: {get_param: NodeIndex}
843       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
844
845   InternalApiPort:
846     type: OS::TripleO::Controller::Ports::InternalApiPort
847     properties:
848       IPPool: {get_param: ControllerIPs}
849       NodeIndex: {get_param: NodeIndex}
850       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
851
852   StoragePort:
853     type: OS::TripleO::Controller::Ports::StoragePort
854     properties:
855       IPPool: {get_param: ControllerIPs}
856       NodeIndex: {get_param: NodeIndex}
857       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
858
859   StorageMgmtPort:
860     type: OS::TripleO::Controller::Ports::StorageMgmtPort
861     properties:
862       IPPool: {get_param: ControllerIPs}
863       NodeIndex: {get_param: NodeIndex}
864       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
865
866   TenantPort:
867     type: OS::TripleO::Controller::Ports::TenantPort
868     properties:
869       IPPool: {get_param: ControllerIPs}
870       NodeIndex: {get_param: NodeIndex}
871       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
872
873   ManagementPort:
874     type: OS::TripleO::Controller::Ports::ManagementPort
875     properties:
876       IPPool: {get_param: ControllerIPs}
877       NodeIndex: {get_param: NodeIndex}
878       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
879
880   NetIpMap:
881     type: OS::TripleO::Network::Ports::NetIpMap
882     properties:
883       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
884       ExternalIp: {get_attr: [ExternalPort, ip_address]}
885       ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
886       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
887       InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
888       StorageIp: {get_attr: [StoragePort, ip_address]}
889       StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
890       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
891       StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
892       TenantIp: {get_attr: [TenantPort, ip_address]}
893       TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
894       ManagementIp: {get_attr: [ManagementPort, ip_address]}
895       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
896
897   NetIpSubnetMap:
898     type: OS::TripleO::Network::Ports::NetIpSubnetMap
899     properties:
900       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
901       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
902       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
903       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
904       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
905       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
906       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
907
908   NetworkConfig:
909     type: OS::TripleO::Controller::Net::SoftwareConfig
910     properties:
911       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
912       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
913       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
914       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
915       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
916       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
917       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
918
919   NetworkDeployment:
920     type: OS::TripleO::SoftwareDeployment
921     properties:
922       name: NetworkDeployment
923       config: {get_resource: NetworkConfig}
924       server: {get_resource: Controller}
925       actions: {get_param: NetworkDeploymentActions}
926       input_values:
927         bridge_name: br-ex
928         interface_name: {get_param: NeutronPublicInterface}
929
930   # Resource for site-specific injection of root certificate
931   NodeTLSCAData:
932     depends_on: NetworkDeployment
933     type: OS::TripleO::NodeTLSCAData
934     properties:
935       server: {get_resource: Controller}
936
937   # Resource for site-specific passing of private keys/certificates
938   NodeTLSData:
939     depends_on: NodeTLSCAData
940     type: OS::TripleO::NodeTLSData
941     properties:
942       server: {get_resource: Controller}
943       NodeIndex: {get_param: NodeIndex}
944
945
946   ControllerDeployment:
947     type: OS::TripleO::SoftwareDeployment
948     depends_on: NetworkDeployment
949     properties:
950       name: ControllerDeployment
951       config: {get_resource: ControllerConfig}
952       server: {get_resource: Controller}
953       input_values:
954         bootstack_nodeid: {get_attr: [Controller, name]}
955         ceilometer_workers: {get_param: CeilometerWorkers}
956         cinder_workers: {get_param: CinderWorkers}
957         glance_workers: {get_param: GlanceWorkers}
958         heat_workers: {get_param: HeatWorkers}
959         keystone_workers: {get_param: KeystoneWorkers}
960         nova_workers: {get_param: NovaWorkers}
961         neutron_workers: {get_param: NeutronWorkers}
962         swift_workers: {get_param: SwiftWorkers}
963         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
964         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
965         neutron_enable_isolated_metadata: {get_param: NeutronEnableIsolatedMetadata}
966         haproxy_log_address: {get_param: HAProxySyslogAddress}
967         haproxy_stats_password: {get_param: HAProxyStatsPassword}
968         haproxy_stats_user: {get_param: HAProxyStatsUser}
969         heat.watch_server_url:
970           list_join:
971             - ''
972             - - 'http://'
973               - {get_param: HeatApiVirtualIPUri}
974               - ':8003'
975         heat.metadata_server_url:
976           list_join:
977             - ''
978             - - 'http://'
979               - {get_param: HeatApiVirtualIPUri}
980               - ':8000'
981         heat.waitcondition_server_url:
982           list_join:
983             - ''
984             - - 'http://'
985               - {get_param: HeatApiVirtualIPUri}
986               - ':8000/v1/waitcondition'
987         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
988         heat_enable_db_purge: {get_param: HeatEnableDBPurge}
989         horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
990         horizon_secret: {get_param: HorizonSecret}
991         admin_email: {get_param: AdminEmail}
992         admin_password: {get_param: AdminPassword}
993         admin_token: {get_param: AdminToken}
994         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
995         debug: {get_param: Debug}
996         cinder_enable_db_purge: {get_param: CinderEnableDBPurge}
997         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
998         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
999         cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
1000         cinder_nfs_servers:
1001           str_replace:
1002             template: SERVERS
1003             params:
1004               SERVERS: {get_param: CinderNfsServers}
1005         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
1006         cinder_password: {get_param: CinderPassword}
1007         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
1008         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
1009         cinder_backend_config: {get_param: CinderBackendConfig}
1010         cinder_dsn:
1011           list_join:
1012             - ''
1013             - - 'mysql+pymysql://cinder:'
1014               - {get_param: CinderPassword}
1015               - '@'
1016               - {get_param: MysqlVirtualIPUri}
1017               - '/cinder'
1018         glance_port: {get_param: [EndpointMap, GlanceInternal, port]}
1019         glance_password: {get_param: GlancePassword}
1020         glance_backend: {get_param: GlanceBackend}
1021         glance_file_pcmk_device: {get_param: GlanceFilePcmkDevice}
1022         glance_file_pcmk_fstype: {get_param: GlanceFilePcmkFstype}
1023         glance_file_pcmk_manage: {get_param: GlanceFilePcmkManage}
1024         glance_file_pcmk_options: {get_param: GlanceFilePcmkOptions}
1025         glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
1026         glance_log_file: {get_param: GlanceLogFile}
1027         glance_dsn:
1028           list_join:
1029             - ''
1030             - - 'mysql+pymysql://glance:'
1031               - {get_param: GlancePassword}
1032               - '@'
1033               - {get_param: MysqlVirtualIPUri}
1034               - '/glance'
1035         heat_password: {get_param: HeatPassword}
1036         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
1037         heat_dsn:
1038           list_join:
1039             - ''
1040             - - 'mysql+pymysql://heat:'
1041               - {get_param: HeatPassword}
1042               - '@'
1043               - {get_param: MysqlVirtualIPUri}
1044               - '/heat'
1045         keystone_ca_certificate: {get_param: KeystoneCACertificate}
1046         keystone_signing_key: {get_param: KeystoneSigningKey}
1047         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
1048         keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
1049         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
1050         keystone_notification_driver: {get_param: KeystoneNotificationDriver}
1051         keystone_notification_format: {get_param: KeystoneNotificationFormat}
1052         keystone_enable_db_purge: {get_param: KeystoneEnableDBPurge}
1053         keystone_dsn:
1054           list_join:
1055             - ''
1056             - - 'mysql+pymysql://keystone:'
1057               - {get_param: AdminToken}
1058               - '@'
1059               - {get_param: MysqlVirtualIPUri}
1060               - '/keystone'
1061         keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
1062         keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
1063         keystone_public_url: { get_param: [EndpointMap, KeystonePublic, uri_no_suffix] }
1064         keystone_internal_url: { get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
1065         keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
1066         enable_fencing: {get_param: EnableFencing}
1067         enable_galera: {get_param: EnableGalera}
1068         enable_load_balancer: {get_param: EnableLoadBalancer}
1069         enable_ceph_storage: {get_param: EnableCephStorage}
1070         enable_swift_storage: {get_param: EnableSwiftStorage}
1071         manage_firewall: {get_param: ManageFirewall}
1072         purge_firewall_rules: {get_param: PurgeFirewallRules}
1073         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
1074         mysql_max_connections: {get_param: MysqlMaxConnections}
1075         mysql_root_password: {get_param: MysqlRootPassword}
1076         mysql_cluster_name:
1077           str_replace:
1078             template: tripleo-CLUSTER
1079             params:
1080               CLUSTER: {get_param: MysqlClusterUniquePart}
1081         neutron_flat_networks:
1082           str_replace:
1083             template: NETWORKS
1084             params:
1085               NETWORKS: {get_param: NeutronFlatNetworks}
1086         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
1087         neutron_agent_mode: {get_param: NeutronAgentMode}
1088         neutron_router_distributed: {get_param: NeutronDVR}
1089         neutron_core_plugin: {get_param: NeutronCorePlugin}
1090         neutron_service_plugins:
1091           str_replace:
1092             template: PLUGINS
1093             params:
1094               PLUGINS: {get_param: NeutronServicePlugins}
1095         neutron_type_drivers:
1096           str_replace:
1097             template: DRIVERS
1098             params:
1099               DRIVERS: {get_param: NeutronTypeDrivers}
1100         neutron_enable_dhcp_agent: {get_param: NeutronEnableDHCPAgent}
1101         neutron_enable_l3_agent: {get_param: NeutronEnableL3Agent}
1102         neutron_enable_metadata_agent: {get_param: NeutronEnableMetadataAgent}
1103         neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
1104         neutron_mechanism_drivers:
1105           str_replace:
1106             template: MECHANISMS
1107             params:
1108               MECHANISMS: {get_param: NeutronMechanismDrivers}
1109         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
1110         neutron_l3_ha: {get_param: NeutronL3HA}
1111         neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
1112         neutron_network_vlan_ranges:
1113           str_replace:
1114             template: RANGES
1115             params:
1116               RANGES: {get_param: NeutronNetworkVLANRanges}
1117         neutron_bridge_mappings:
1118           str_replace:
1119             template: MAPPINGS
1120             params:
1121               MAPPINGS: {get_param: NeutronBridgeMappings}
1122         neutron_external_network_bridge: {get_param: NeutronExternalNetworkBridge}
1123         neutron_public_interface: {get_param: NeutronPublicInterface}
1124         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
1125         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
1126         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
1127         neutron_tunnel_id_ranges:
1128           str_replace:
1129             template: RANGES
1130             params:
1131               RANGES: {get_param: NeutronTunnelIdRanges}
1132         neutron_vni_ranges:
1133           str_replace:
1134             template: RANGES
1135             params:
1136               RANGES: {get_param: NeutronVniRanges}
1137         neutron_tenant_network_types:
1138           str_replace:
1139             template: TYPES
1140             params:
1141               TYPES: {get_param: NeutronNetworkType}
1142         neutron_tunnel_types:
1143           str_replace:
1144             template: TYPES
1145             params:
1146               TYPES: {get_param: NeutronTunnelTypes}
1147         neutron_plugin_extensions:
1148           str_replace:
1149             template: PLUGIN_EXTENSIONS
1150             params:
1151               PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
1152         neutron_agent_extensions:
1153           str_replace:
1154             template: AGENT_EXTENSIONS
1155             params:
1156               AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
1157         neutron_password: {get_param: NeutronPassword}
1158         neutron_tenant_mtu: {get_param: NeutronTenantMtu}
1159         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
1160         neutron_dsn:
1161           list_join:
1162             - ''
1163             - - 'mysql+pymysql://neutron:'
1164               - {get_param: NeutronPassword}
1165               - '@'
1166               - {get_param: MysqlVirtualIPUri}
1167               - '/ovs_neutron?charset=utf8'
1168         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
1169         neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
1170         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
1171         neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
1172         nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
1173         ceilometer_backend: {get_param: CeilometerBackend}
1174         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
1175         ceilometer_password: {get_param: CeilometerPassword}
1176         ceilometer_store_events: {get_param: CeilometerStoreEvents}
1177         aodh_password: {get_param: AodhPassword}
1178         ceilometer_coordination_url:
1179           list_join:
1180             - ''
1181             - - 'redis://:'
1182               - {get_param: RedisPassword}
1183               - '@'
1184               - {get_param: RedisVirtualIPUri}
1185               - ':6379/'
1186         ceilometer_dsn:
1187           list_join:
1188             - ''
1189             - - 'mysql+pymysql://ceilometer:'
1190               - {get_param: CeilometerPassword}
1191               - '@'
1192               - {get_param: MysqlVirtualIPUri}
1193               - '/ceilometer'
1194         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
1195         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
1196         nova_enable_db_purge: {get_param: NovaEnableDBPurge}
1197         nova_ipv6: {get_param: NovaIPv6}
1198         corosync_ipv6: {get_param: CorosyncIPv6}
1199         memcached_ipv6: {get_param: MemcachedIPv6}
1200         nova_password: {get_param: NovaPassword}
1201         nova_dsn:
1202           list_join:
1203             - ''
1204             - - 'mysql+pymysql://nova:'
1205               - {get_param: NovaPassword}
1206               - '@'
1207               - {get_param: MysqlVirtualIPUri}
1208               - '/nova'
1209         nova_api_dsn:
1210           list_join:
1211             - ''
1212             - - 'mysql+pymysql://nova_api:'
1213               - {get_param: NovaPassword}
1214               - '@'
1215               - {get_param: MysqlVirtualIPUri}
1216               - '/nova_api'
1217         upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
1218         instance_name_template: {get_param: InstanceNameTemplate}
1219         fencing_config: {get_param: FencingConfig}
1220         pcsd_password: {get_param: PcsdPassword}
1221         rabbit_username: {get_param: RabbitUserName}
1222         rabbit_password: {get_param: RabbitPassword}
1223         rabbit_cookie: {get_param: RabbitCookie}
1224         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
1225         rabbit_client_port: {get_param: RabbitClientPort}
1226         rabbit_ipv6: {get_param: RabbitIPv6}
1227         rabbit_fd_limit: {get_param: RabbitFDLimit}
1228         mongodb_no_journal: {get_param: MongoDbNoJournal}
1229         mongodb_ipv6: {get_param: MongoDbIPv6}
1230         ntp_servers: {get_param: NtpServer}
1231         timezone: {get_param: TimeZone}
1232         control_virtual_interface: {get_param: ControlVirtualInterface}
1233         public_virtual_interface: {get_param: PublicVirtualInterface}
1234         swift_hash_suffix: {get_param: SwiftHashSuffix}
1235         swift_password: {get_param: SwiftPassword}
1236         swift_part_power: {get_param: SwiftPartPower}
1237         swift_ring_build: {get_param: SwiftRingBuild}
1238         swift_replicas: {get_param: SwiftReplicas}
1239         swift_min_part_hours: {get_param: SwiftMinPartHours}
1240         swift_mount_check: {get_param: SwiftMountCheck}
1241         enable_package_install: {get_param: EnablePackageInstall}
1242         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
1243         sahara_password: {get_param: SaharaPassword}
1244         sahara_dsn:
1245           list_join:
1246             - ''
1247             - - 'mysql://sahara:'
1248               - {get_param: SaharaPassword}
1249               - '@'
1250               - {get_param: MysqlVirtualIPUri}
1251               - '/sahara'
1252         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1253         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1254         cinder_iscsi_network:
1255           str_replace:
1256             template: "'IP'"
1257             params:
1258               IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
1259         cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1260         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1261         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1262         glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
1263         glance_registry_host: {get_param: GlanceRegistryVirtualIP}
1264         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1265         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1266         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1267         keystone_region: {get_param: KeystoneRegion}
1268         mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
1269         neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1270         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
1271         ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1272         aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1273         nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1274         nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1275         horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1276         rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1277         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
1278         redis_password: {get_param: RedisPassword}
1279         redis_vip: {get_param: RedisVirtualIP}
1280         sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1281         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1282         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1283         mysql_virtual_ip: {get_param: MysqlVirtualIP}
1284         ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
1285         ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1286         ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1287
1288   # Map heat metadata into hiera datafiles
1289   ControllerConfig:
1290     type: OS::Heat::StructuredConfig
1291     properties:
1292       group: os-apply-config
1293       config:
1294         hiera:
1295           hierarchy:
1296             - '"%{::uuid}"'
1297             - heat_config_%{::deploy_config_name}
1298             - controller_extraconfig
1299             - extraconfig
1300             - service_configs
1301             - controller
1302             - database
1303             - object
1304             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
1305             - ceph_cluster # provided by CephClusterConfig
1306             - ceph
1307             - bootstrap_node # provided by BootstrapNodeConfig
1308             - all_nodes # provided by allNodesConfig
1309             - vip_data # provided by vip-config
1310             - '"%{::osfamily}"'
1311             - common
1312             - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
1313             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
1314             - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
1315             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
1316             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
1317             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
1318             - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
1319             - midonet_data #Optionally provided by AllNodesExtraConfig
1320             - neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
1321             - neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
1322           datafiles:
1323             service_configs:
1324               mapped_data: {get_param: ServiceConfigSettings}
1325             controller_extraconfig:
1326               mapped_data: {get_param: ControllerExtraConfig}
1327             extraconfig:
1328               mapped_data: {get_param: ExtraConfig}
1329             common:
1330               raw_data: {get_file: hieradata/common.yaml}
1331             ceph:
1332               raw_data: {get_file: hieradata/ceph.yaml}
1333               mapped_data:
1334                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
1335                 ceph::profile::params::public_network: {get_input: ceph_public_network}
1336                 ceph::profile::params::public_addr: {get_input: ceph_public_ip}
1337             database:
1338               raw_data: {get_file: hieradata/database.yaml}
1339             object:
1340               raw_data: {get_file: hieradata/object.yaml}
1341             controller:
1342               raw_data: {get_file: hieradata/controller.yaml}
1343               mapped_data: # data supplied directly to this deployment configuration, etc
1344                 bootstack_nodeid: {get_input: bootstack_nodeid}
1345
1346                 # Pacemaker
1347                 enable_fencing: {get_input: enable_fencing}
1348                 enable_load_balancer: {get_input: enable_load_balancer}
1349                 hacluster_pwd: {get_input: pcsd_password}
1350                 corosync_ipv6: {get_input: corosync_ipv6}
1351                 tripleo::fencing::config: {get_input: fencing_config}
1352
1353                 # Swift
1354                 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
1355                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
1356                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
1357                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
1358                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
1359                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
1360                 swift::proxy::workers: {get_input: swift_workers}
1361                 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
1362                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
1363                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
1364                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
1365                 swift_mount_check: {get_input: swift_mount_check}
1366
1367                 # Cinder
1368                 cinder_enable_db_purge: {get_input: cinder_enable_db_purge}
1369                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
1370                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
1371                 cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
1372                 cinder_nfs_servers: {get_input: cinder_nfs_servers}
1373                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
1374                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
1375                 cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
1376                 cinder::database_connection: {get_input: cinder_dsn}
1377                 cinder::api::keystone_password: {get_input: cinder_password}
1378                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
1379                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
1380                 cinder::api::bind_host: {get_input: cinder_api_network}
1381                 cinder::rabbit_userid: {get_input: rabbit_username}
1382                 cinder::rabbit_password: {get_input: rabbit_password}
1383                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1384                 cinder::rabbit_port: {get_input: rabbit_client_port}
1385                 cinder::debug: {get_input: debug}
1386                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
1387                 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
1388                 cinder_backend_config: {get_input: CinderBackendConfig}
1389                 cinder::db::mysql::password: {get_input: cinder_password}
1390
1391                 # Glance
1392                 glance::api::bind_port: {get_input: glance_port}
1393                 glance::api::bind_host: {get_input: glance_api_network}
1394                 glance::api::auth_uri: {get_input: keystone_auth_uri}
1395                 glance::api::identity_uri: {get_input: keystone_identity_uri}
1396                 glance::api::registry_host: {get_input: glance_registry_host}
1397                 glance::api::keystone_password: {get_input: glance_password}
1398                 glance::api::debug: {get_input: debug}
1399                 glance::api::workers: {get_input: glance_workers}
1400                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
1401                 glance_log_file: {get_input: glance_log_file}
1402                 glance_log_file: {get_input: glance_log_file}
1403                 glance::api::database_connection: {get_input: glance_dsn}
1404                 glance::registry::keystone_password: {get_input: glance_password}
1405                 glance::registry::database_connection: {get_input: glance_dsn}
1406                 glance::registry::bind_host: {get_input: glance_registry_network}
1407                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
1408                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
1409                 glance::registry::debug: {get_input: debug}
1410                 glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_uri}
1411                 glance::registry::workers: {get_input: glance_workers}
1412                 glance::backend::swift::swift_store_user: service:glance
1413                 glance::backend::swift::swift_store_key: {get_input: glance_password}
1414                 glance_backend: {get_input: glance_backend}
1415                 glance::db::mysql::password: {get_input: glance_password}
1416                 glance_file_pcmk_device: {get_input: glance_file_pcmk_device}
1417                 glance_file_pcmk_fstype: {get_input: glance_file_pcmk_fstype}
1418                 glance_file_pcmk_manage: {get_input: glance_file_pcmk_manage}
1419                 glance_file_pcmk_options: {get_input: glance_file_pcmk_options}
1420                 glance::notify::rabbitmq::rabbit_userid: {get_input: rabbit_username}
1421                 glance::notify::rabbitmq::rabbit_password: {get_input: rabbit_password}
1422                 glance::notify::rabbitmq::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1423
1424                 # Heat
1425                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
1426                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
1427                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
1428                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
1429                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
1430                 heat::rabbit_userid: {get_input: rabbit_username}
1431                 heat::rabbit_password: {get_input: rabbit_password}
1432                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1433                 heat::rabbit_port: {get_input: rabbit_client_port}
1434                 heat::auth_uri: {get_input: keystone_auth_uri}
1435                 heat::keystone_ec2_uri: {get_input: keystone_ec2_uri}
1436                 heat::identity_uri: {get_input: keystone_identity_uri}
1437                 heat::keystone_password: {get_input: heat_password}
1438                 heat::api::bind_host: {get_input: heat_api_network}
1439                 heat::api::workers: {get_input: heat_workers}
1440                 heat::api_cloudwatch::bind_host: {get_input: heat_api_network}
1441                 heat::api_cloudwatch::workers: {get_input: heat_workers}
1442                 heat::api_cfn::bind_host: {get_input: heat_api_network}
1443                 heat::api_cfn::workers: {get_input: heat_workers}
1444                 heat::database_connection: {get_input: heat_dsn}
1445                 heat::debug: {get_input: debug}
1446                 heat::db::mysql::password: {get_input: heat_password}
1447                 heat_enable_db_purge: {get_input: heat_enable_db_purge}
1448                 heat::keystone::domain::domain_password: {get_input: heat_stack_domain_admin_password}
1449
1450                 # Keystone
1451                 keystone::admin_token: {get_input: admin_token}
1452                 keystone::roles::admin::password: {get_input: admin_password}
1453                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
1454                 keystone_signing_key: {get_input: keystone_signing_key}
1455                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
1456                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
1457                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
1458                 keystone::database_connection: {get_input: keystone_dsn}
1459                 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
1460                 keystone::public_bind_host: {get_input: keystone_public_api_network}
1461                 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
1462                 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
1463                 keystone::debug: {get_input: debug}
1464                 keystone::db::mysql::password: {get_input: admin_token}
1465                 keystone::rabbit_userid: {get_input: rabbit_username}
1466                 keystone::rabbit_password: {get_input: rabbit_password}
1467                 keystone::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1468                 keystone::rabbit_port: {get_input: rabbit_client_port}
1469                 keystone::notification_driver: {get_input: keystone_notification_driver}
1470                 keystone::notification_format: {get_input: keystone_notification_format}
1471                 keystone::roles::admin::email: {get_input: admin_email}
1472                 keystone::roles::admin::password: {get_input: admin_password}
1473                 keystone::endpoint::public_url: {get_input: keystone_public_url}
1474                 keystone::endpoint::internal_url: {get_input: keystone_internal_url}
1475                 keystone::endpoint::admin_url: {get_input: keystone_identity_uri}
1476                 keystone::endpoint::region: {get_input: keystone_region}
1477                 keystone::admin_workers: {get_input: keystone_workers}
1478                 keystone::public_workers: {get_input: keystone_workers}
1479                 keystone_enable_db_purge: {get_input: keystone_enable_db_purge}
1480                 keystone::public_endpoint: {get_input: keystone_public_url}
1481                 # MongoDB
1482                 mongodb::server::bind_ip: {get_input: mongo_db_network}
1483                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
1484                 mongodb::server::ipv6: {get_input: mongodb_ipv6}
1485                 # MySQL
1486                 admin_password: {get_input: admin_password}
1487                 enable_galera: {get_input: enable_galera}
1488                 enable_ceph_storage: {get_input: enable_ceph_storage}
1489                 enable_swift_storage: {get_input: enable_swift_storage}
1490                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
1491                 mysql_max_connections: {get_input: mysql_max_connections}
1492                 mysql::server::root_password: {get_input: mysql_root_password}
1493                 mysql_cluster_name: {get_input: mysql_cluster_name}
1494                 mysql_bind_host: {get_input: mysql_network}
1495                 mysql_virtual_ip: {get_input: mysql_virtual_ip}
1496
1497                 # Neutron
1498                 neutron::bind_host: {get_input: neutron_api_network}
1499                 neutron::rabbit_password: {get_input: rabbit_password}
1500                 neutron::rabbit_user: {get_input: rabbit_username}
1501                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1502                 neutron::rabbit_port: {get_input: rabbit_client_port}
1503                 neutron::debug: {get_input: debug}
1504                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
1505                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
1506                 neutron::server::database_connection: {get_input: neutron_dsn}
1507                 neutron::server::api_workers: {get_input: neutron_workers}
1508                 neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
1509                 neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
1510                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
1511                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
1512                 neutron::agents::dhcp::enable_isolated_metadata: {get_input: neutron_enable_isolated_metadata}
1513                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
1514                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
1515                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1516                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
1517                 neutron::agents::metadata::metadata_workers: {get_input: neutron_workers}
1518                 neutron_agent_mode: {get_input: neutron_agent_mode}
1519                 neutron_router_distributed: {get_input: neutron_router_distributed}
1520                 neutron::core_plugin: {get_input: neutron_core_plugin}
1521                 neutron::service_plugins: {get_input: neutron_service_plugins}
1522                 neutron::enable_dhcp_agent: {get_input: neutron_enable_dhcp_agent}
1523                 neutron::enable_l3_agent: {get_input: neutron_enable_l3_agent}
1524                 neutron::enable_metadata_agent: {get_input: neutron_enable_metadata_agent}
1525                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
1526                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
1527                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
1528                 neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
1529                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
1530                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
1531                 neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
1532                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
1533                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
1534                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
1535                 neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
1536                 neutron_public_interface: {get_input: neutron_public_interface}
1537                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
1538                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
1539                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
1540                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
1541                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
1542                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
1543                 neutron::server::auth_password: {get_input: neutron_password}
1544                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
1545                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
1546                 neutron_dsn: {get_input: neutron_dsn}
1547                 neutron::agents::metadata::auth_url: {get_input: keystone_identity_uri}
1548                 neutron::db::mysql::password: {get_input: neutron_password}
1549                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
1550                 neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
1551                 neutron::keystone::auth::admin_url: {get_input: neutron_admin_url }
1552                 neutron::keystone::auth::password: {get_input: neutron_password }
1553                 neutron::keystone::auth::region: {get_input: keystone_region}
1554                 neutron::server::notifications::nova_url: {get_input: nova_internal_url}
1555                 neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
1556                 neutron::server::notifications::tenant_name: 'service'
1557                 neutron::server::notifications::project_name: 'service'
1558                 neutron::server::notifications::password: {get_input: nova_password}
1559
1560                 # Ceilometer
1561                 ceilometer_backend: {get_input: ceilometer_backend}
1562                 ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
1563                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
1564                 ceilometer::rabbit_userid: {get_input: rabbit_username}
1565                 ceilometer::rabbit_password: {get_input: rabbit_password}
1566                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1567                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
1568                 ceilometer::debug: {get_input: debug}
1569                 ceilometer::api::host: {get_input: ceilometer_api_network}
1570                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
1571                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1572                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1573                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
1574                 ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
1575                 ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
1576                 ceilometer::agent::notification::store_events: {get_input: ceilometer_store_events}
1577                 ceilometer::db::mysql::password: {get_input: ceilometer_password}
1578                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
1579                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
1580
1581                 # Aodh
1582                 aodh::rabbit_userid: {get_input: rabbit_username}
1583                 aodh::rabbit_password: {get_input: rabbit_password}
1584                 aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1585                 aodh::rabbit_port: {get_input: rabbit_client_port}
1586                 aodh::debug: {get_input: debug}
1587                 aodh::wsgi::apache::ssl: false
1588                 aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
1589                 aodh::api::service_name: 'httpd'
1590                 aodh::api::host: {get_input: aodh_api_network}
1591                 aodh::api::keystone_password: {get_input: aodh_password}
1592                 aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1593                 aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1594                 aodh::auth::auth_password: {get_input: aodh_password}
1595                 aodh::db::mysql::password: {get_input: aodh_password}
1596                 # for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
1597                 aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
1598
1599                 # Nova
1600                 nova::rabbit_userid: {get_input: rabbit_username}
1601                 nova::rabbit_password: {get_input: rabbit_password}
1602                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1603                 nova::rabbit_port: {get_input: rabbit_client_port}
1604                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
1605                 nova::debug: {get_input: debug}
1606                 nova::use_ipv6: {get_input: nova_ipv6}
1607                 nova::api::auth_uri: {get_input: keystone_auth_uri}
1608                 nova::api::identity_uri: {get_input: keystone_identity_uri}
1609                 nova::api::api_bind_address: {get_input: nova_api_network}
1610                 nova::api::metadata_listen: {get_input: nova_metadata_network}
1611                 nova::api::admin_password: {get_input: nova_password}
1612                 nova::api::osapi_compute_workers: {get_input: nova_workers}
1613                 nova::api::ec2_workers: {get_input: nova_workers}
1614                 nova::api::metadata_workers: {get_input: nova_workers}
1615                 nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
1616                 nova::database_connection: {get_input: nova_dsn}
1617                 nova::api_database_connection: {get_input: nova_api_dsn}
1618                 nova::glance_api_servers: {get_input: glance_api_servers}
1619                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1620                 nova::api::instance_name_template: {get_input: instance_name_template}
1621                 nova::network::neutron::neutron_password: {get_input: neutron_password}
1622                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
1623                 nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
1624                 nova::vncproxy::host: {get_input: nova_api_network}
1625                 nova::db::mysql::password: {get_input: nova_password}
1626                 nova::db::mysql_api::password: {get_input: nova_password}
1627                 nova_enable_db_purge: {get_input: nova_enable_db_purge}
1628
1629                 # Horizon
1630                 apache::ip: {get_input: horizon_network}
1631                 horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
1632                 horizon::django_debug: {get_input: debug}
1633                 horizon::secret_key: {get_input: horizon_secret}
1634                 horizon::bind_address: {get_input: horizon_network}
1635                 horizon::keystone_url: {get_input: keystone_auth_uri}
1636
1637                 # Sahara
1638                 sahara::host: {get_input: sahara_api_network}
1639                 sahara::plugins:
1640                   - cdh
1641                   - hdp
1642                   - mapr
1643                   - vanilla
1644                   - spark
1645                   - storm
1646                 sahara::admin_password: {get_input: sahara_password}
1647                 sahara::auth_uri: {get_input: keystone_auth_uri}
1648                 sahara::admin_user: sahara
1649                 sahara::identity_uri: {get_input: keystone_identity_uri}
1650                 sahara::use_neutron: true
1651                 sahara::database_connection: {get_input: sahara_dsn}
1652                 sahara::debug: {get_input: debug}
1653                 sahara::rpc_backend: rabbit
1654                 sahara::rabbit_userid: {get_input: rabbit_username}
1655                 sahara::rabbit_password: {get_input: rabbit_password}
1656                 sahara::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1657                 sahara::rabbit_port: {get_input: rabbit_client_port}
1658                 sahara::db::mysql::password: {get_input: sahara_password}
1659
1660                 # Rabbit
1661                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
1662                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
1663                 rabbitmq::file_limit: {get_input: rabbit_fd_limit}
1664                 rabbitmq::default_user: {get_input: rabbit_username}
1665                 rabbitmq::default_pass: {get_input: rabbit_password}
1666                 rabbit_ipv6: {get_input: rabbit_ipv6}
1667                 # Redis
1668                 redis::bind: {get_input: redis_network}
1669                 redis::requirepass: {get_input: redis_password}
1670                 redis::masterauth: {get_input: redis_password}
1671                 redis::sentinel_auth_pass: {get_input: redis_password}
1672                 redis_vip: {get_input: redis_vip}
1673                 # Firewall
1674                 tripleo::firewall::manage_firewall: {get_input: manage_firewall}
1675                 tripleo::firewall::purge_firewall_rules: {get_input: purge_firewall_rules}
1676                 # Misc
1677                 memcached_ipv6: {get_input: memcached_ipv6}
1678                 memcached::listen_ip: {get_input: memcached_network}
1679                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
1680                 ntp::servers: {get_input: ntp_servers}
1681                 timezone::timezone: {get_input: timezone}
1682                 control_virtual_interface: {get_input: control_virtual_interface}
1683                 public_virtual_interface: {get_input: public_virtual_interface}
1684                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
1685                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
1686                 tripleo::loadbalancer::haproxy_log_address: {get_input: haproxy_log_address}
1687                 tripleo::loadbalancer::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
1688                 tripleo::loadbalancer::haproxy_stats_user: {get_input: haproxy_stats_user}
1689                 tripleo::loadbalancer::haproxy_stats_password: {get_input: haproxy_stats_password}
1690                 tripleo::loadbalancer::redis_password: {get_input: redis_password}
1691                 tripleo::packages::enable_install: {get_input: enable_package_install}
1692                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
1693
1694   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
1695   ControllerExtraConfigPre:
1696     depends_on: ControllerDeployment
1697     type: OS::TripleO::ControllerExtraConfigPre
1698     properties:
1699         server: {get_resource: Controller}
1700
1701   # Hook for site-specific additional pre-deployment config,
1702   # applying to all nodes, e.g node registration/unregistration
1703   NodeExtraConfig:
1704     depends_on: [ControllerExtraConfigPre, NodeTLSData]
1705     type: OS::TripleO::NodeExtraConfig
1706     properties:
1707         server: {get_resource: Controller}
1708
1709   UpdateConfig:
1710     type: OS::TripleO::Tasks::PackageUpdate
1711
1712   UpdateDeployment:
1713     type: OS::Heat::SoftwareDeployment
1714     properties:
1715       name: UpdateDeployment
1716       config: {get_resource: UpdateConfig}
1717       server: {get_resource: Controller}
1718       input_values:
1719         update_identifier:
1720           get_param: UpdateIdentifier
1721
1722 outputs:
1723   ip_address:
1724     description: IP address of the server in the ctlplane network
1725     value: {get_attr: [Controller, networks, ctlplane, 0]}
1726   external_ip_address:
1727     description: IP address of the server in the external network
1728     value: {get_attr: [ExternalPort, ip_address]}
1729   internal_api_ip_address:
1730     description: IP address of the server in the internal_api network
1731     value: {get_attr: [InternalApiPort, ip_address]}
1732   storage_ip_address:
1733     description: IP address of the server in the storage network
1734     value: {get_attr: [StoragePort, ip_address]}
1735   storage_mgmt_ip_address:
1736     description: IP address of the server in the storage_mgmt network
1737     value: {get_attr: [StorageMgmtPort, ip_address]}
1738   tenant_ip_address:
1739     description: IP address of the server in the tenant network
1740     value: {get_attr: [TenantPort, ip_address]}
1741   management_ip_address:
1742     description: IP address of the server in the management network
1743     value: {get_attr: [ManagementPort, ip_address]}
1744   hostname:
1745     description: Hostname of the server
1746     value: {get_attr: [Controller, name]}
1747   corosync_node:
1748     description: >
1749       Node object in the format {ip: ..., name: ...} format that the corosync
1750       element expects
1751     value:
1752       ip: {get_attr: [Controller, networks, ctlplane, 0]}
1753       name: {get_attr: [Controller, name]}
1754   hosts_entry:
1755     description: >
1756       Server's IP address and hostname in the /etc/hosts format
1757     value:
1758       str_replace:
1759         template: |
1760           PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
1761           EXTERNALIP EXTERNALHOST
1762           INTERNAL_APIIP INTERNAL_APIHOST
1763           STORAGEIP STORAGEHOST
1764           STORAGE_MGMTIP STORAGE_MGMTHOST
1765           TENANTIP TENANTHOST
1766           MANAGEMENTIP MANAGEMENTHOST
1767         params:
1768           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
1769           DOMAIN: {get_param: CloudDomain}
1770           PRIMARYHOST: {get_attr: [Controller, name]}
1771           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
1772           EXTERNALHOST:
1773             list_join:
1774             - '-'
1775             - - {get_attr: [Controller, name]}
1776               - external
1777           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
1778           INTERNAL_APIHOST:
1779             list_join:
1780             - '-'
1781             - - {get_attr: [Controller, name]}
1782               - internalapi
1783           STORAGEIP: {get_attr: [StoragePort, ip_address]}
1784           STORAGEHOST:
1785             list_join:
1786             - '-'
1787             - - {get_attr: [Controller, name]}
1788               - storage
1789           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
1790           STORAGE_MGMTHOST:
1791             list_join:
1792             - '-'
1793             - - {get_attr: [Controller, name]}
1794               - storagemgmt
1795           TENANTIP: {get_attr: [TenantPort, ip_address]}
1796           TENANTHOST:
1797             list_join:
1798             - '-'
1799             - - {get_attr: [Controller, name]}
1800               - tenant
1801           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
1802           MANAGEMENTHOST:
1803             list_join:
1804             - '-'
1805             - - {get_attr: [Controller, name]}
1806               - management
1807   nova_server_resource:
1808     description: Heat resource handle for the Nova compute server
1809     value:
1810       {get_resource: Controller}
1811   swift_device:
1812     description: Swift device formatted for swift-ring-builder
1813     value:
1814       str_replace:
1815         template: 'r1z1-IP:%PORT%/d1'
1816         params:
1817           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1818   swift_proxy_memcache:
1819     description: Swift proxy-memcache value
1820     value:
1821       str_replace:
1822         template: "IP:11211"
1823         params:
1824           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1825   config_identifier:
1826     description: identifier which changes if the controller configuration may need re-applying
1827     value:
1828       list_join:
1829         - ','
1830         - - {get_attr: [ControllerDeployment, deploy_stdout]}
1831           - {get_attr: [NodeTLSCAData, deploy_stdout]}
1832           - {get_attr: [NodeTLSData, deploy_stdout]}
1833           - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
1834           - {get_param: UpdateIdentifier}
1835   tls_key_modulus_md5:
1836     description: MD5 checksum of the TLS Key Modulus
1837     value: {get_attr: [NodeTLSData, key_modulus_md5]}
1838   tls_cert_modulus_md5:
1839     description: MD5 checksum of the TLS Certificate Modulus
1840     value: {get_attr: [NodeTLSData, cert_modulus_md5]}