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