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