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