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