Merge "Add ExtraConfig example that always runs on update"
[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       ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
779       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
780       InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
781       StorageIp: {get_attr: [StoragePort, ip_address]}
782       StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
783       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
784       StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
785       TenantIp: {get_attr: [TenantPort, ip_address]}
786       TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
787       ManagementIp: {get_attr: [ManagementPort, ip_address]}
788       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
789
790   NetIpSubnetMap:
791     type: OS::TripleO::Network::Ports::NetIpSubnetMap
792     properties:
793       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
794       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
795       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
796       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
797       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
798       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
799       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
800
801   NetworkConfig:
802     type: OS::TripleO::Controller::Net::SoftwareConfig
803     properties:
804       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
805       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
806       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
807       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
808       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
809       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
810       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
811
812   NetworkDeployment:
813     type: OS::TripleO::SoftwareDeployment
814     properties:
815       name: NetworkDeployment
816       config: {get_resource: NetworkConfig}
817       server: {get_resource: Controller}
818       actions: {get_param: NetworkDeploymentActions}
819       input_values:
820         bridge_name: br-ex
821         interface_name: {get_param: NeutronPublicInterface}
822
823   # Resource for site-specific injection of root certificate
824   NodeTLSCAData:
825     depends_on: NetworkDeployment
826     type: OS::TripleO::NodeTLSCAData
827     properties:
828       server: {get_resource: Controller}
829
830   # Resource for site-specific passing of private keys/certificates
831   NodeTLSData:
832     depends_on: NodeTLSCAData
833     type: OS::TripleO::NodeTLSData
834     properties:
835       server: {get_resource: Controller}
836       NodeIndex: {get_param: NodeIndex}
837
838
839   ControllerDeployment:
840     type: OS::TripleO::SoftwareDeployment
841     depends_on: NetworkDeployment
842     properties:
843       name: ControllerDeployment
844       config: {get_resource: ControllerConfig}
845       server: {get_resource: Controller}
846       input_values:
847         bootstack_nodeid: {get_attr: [Controller, name]}
848         ceilometer_workers: {get_param: CeilometerWorkers}
849         cinder_workers: {get_param: CinderWorkers}
850         heat_workers: {get_param: HeatWorkers}
851         nova_workers: {get_param: NovaWorkers}
852         neutron_workers: {get_param: NeutronWorkers}
853         swift_workers: {get_param: SwiftWorkers}
854         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
855         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
856         haproxy_log_address: {get_param: HAProxySyslogAddress}
857         haproxy_stats_password: {get_param: HAProxyStatsPassword}
858         haproxy_stats_user: {get_param: HAProxyStatsUser}
859         heat.watch_server_url:
860           list_join:
861             - ''
862             - - 'http://'
863               - {get_param: HeatApiVirtualIPUri}
864               - ':8003'
865         heat.metadata_server_url:
866           list_join:
867             - ''
868             - - 'http://'
869               - {get_param: HeatApiVirtualIPUri}
870               - ':8000'
871         heat.waitcondition_server_url:
872           list_join:
873             - ''
874             - - 'http://'
875               - {get_param: HeatApiVirtualIPUri}
876               - ':8000/v1/waitcondition'
877         heat_public_url: {get_param: [EndpointMap, HeatPublic, uri]}
878         heat_internal_url: {get_param: [EndpointMap, HeatInternal, uri]}
879         heat_admin_url: {get_param: [EndpointMap, HeatAdmin, uri]}
880         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
881         heat_enable_db_purge: {get_param: HeatEnableDBPurge}
882         horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
883         horizon_secret: {get_param: HorizonSecret}
884         admin_password: {get_param: AdminPassword}
885         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
886         debug: {get_param: Debug}
887         cinder_enable_db_purge: {get_param: CinderEnableDBPurge}
888         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
889         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
890         cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
891         cinder_nfs_servers:
892           str_replace:
893             template: SERVERS
894             params:
895               SERVERS: {get_param: CinderNfsServers}
896         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
897         cinder_password: {get_param: CinderPassword}
898         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
899         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
900         cinder_backend_config: {get_param: CinderBackendConfig}
901         cinder_dsn:
902           list_join:
903             - ''
904             - - 'mysql+pymysql://cinder:'
905               - {get_param: CinderPassword}
906               - '@'
907               - {get_param: MysqlVirtualIPUri}
908               - '/cinder'
909         cinder_public_url: {get_param: [EndpointMap, CinderPublic, uri]}
910         cinder_internal_url: {get_param: [EndpointMap, CinderInternal, uri]}
911         cinder_admin_url: {get_param: [EndpointMap, CinderAdmin, uri]}
912         cinder_public_url_v2: {get_param: [EndpointMap, CinderV2Public, uri]}
913         cinder_internal_url_v2: {get_param: [EndpointMap, CinderV2Internal, uri]}
914         cinder_admin_url_v2: {get_param: [EndpointMap, CinderV2Admin, uri]}
915         heat_password: {get_param: HeatPassword}
916         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
917         heat_dsn:
918           list_join:
919             - ''
920             - - 'mysql+pymysql://heat:'
921               - {get_param: HeatPassword}
922               - '@'
923               - {get_param: MysqlVirtualIPUri}
924               - '/heat'
925         keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
926         keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
927         keystone_ec2_uri: { get_param: [EndpointMap, KeystoneEC2, uri] }
928         enable_fencing: {get_param: EnableFencing}
929         enable_galera: {get_param: EnableGalera}
930         enable_load_balancer: {get_param: EnableLoadBalancer}
931         enable_ceph_storage: {get_param: EnableCephStorage}
932         enable_swift_storage: {get_param: EnableSwiftStorage}
933         manage_firewall: {get_param: ManageFirewall}
934         purge_firewall_rules: {get_param: PurgeFirewallRules}
935         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
936         mysql_max_connections: {get_param: MysqlMaxConnections}
937         mysql_root_password: {get_param: MysqlRootPassword}
938         mysql_clustercheck_password: {get_param: MysqlClustercheckPassword}
939         mysql_cluster_name:
940           str_replace:
941             template: tripleo-CLUSTER
942             params:
943               CLUSTER: {get_param: MysqlClusterUniquePart}
944         neutron_flat_networks:
945           str_replace:
946             template: NETWORKS
947             params:
948               NETWORKS: {get_param: NeutronFlatNetworks}
949         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
950         neutron_agent_mode: {get_param: NeutronAgentMode}
951         neutron_router_distributed: {get_param: NeutronDVR}
952         neutron_core_plugin: {get_param: NeutronCorePlugin}
953         neutron_service_plugins:
954           str_replace:
955             template: PLUGINS
956             params:
957               PLUGINS: {get_param: NeutronServicePlugins}
958         neutron_type_drivers:
959           str_replace:
960             template: DRIVERS
961             params:
962               DRIVERS: {get_param: NeutronTypeDrivers}
963         neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
964         neutron_mechanism_drivers:
965           str_replace:
966             template: MECHANISMS
967             params:
968               MECHANISMS: {get_param: NeutronMechanismDrivers}
969         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
970         neutron_l3_ha: {get_param: NeutronL3HA}
971         neutron_network_vlan_ranges:
972           str_replace:
973             template: RANGES
974             params:
975               RANGES: {get_param: NeutronNetworkVLANRanges}
976         neutron_bridge_mappings:
977           str_replace:
978             template: MAPPINGS
979             params:
980               MAPPINGS: {get_param: NeutronBridgeMappings}
981         neutron_public_interface: {get_param: NeutronPublicInterface}
982         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
983         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
984         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
985         neutron_tunnel_id_ranges:
986           str_replace:
987             template: RANGES
988             params:
989               RANGES: {get_param: NeutronTunnelIdRanges}
990         neutron_vni_ranges:
991           str_replace:
992             template: RANGES
993             params:
994               RANGES: {get_param: NeutronVniRanges}
995         neutron_tenant_network_types:
996           str_replace:
997             template: TYPES
998             params:
999               TYPES: {get_param: NeutronNetworkType}
1000         neutron_tunnel_types:
1001           str_replace:
1002             template: TYPES
1003             params:
1004               TYPES: {get_param: NeutronTunnelTypes}
1005         neutron_plugin_extensions:
1006           str_replace:
1007             template: PLUGIN_EXTENSIONS
1008             params:
1009               PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
1010         neutron_agent_extensions:
1011           str_replace:
1012             template: AGENT_EXTENSIONS
1013             params:
1014               AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
1015         neutron_password: {get_param: NeutronPassword}
1016         neutron_tenant_mtu: {get_param: NeutronTenantMtu}
1017         neutron_dsn:
1018           list_join:
1019             - ''
1020             - - 'mysql+pymysql://neutron:'
1021               - {get_param: NeutronPassword}
1022               - '@'
1023               - {get_param: MysqlVirtualIPUri}
1024               - '/ovs_neutron?charset=utf8'
1025         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
1026         neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
1027         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
1028         neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
1029         nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
1030         ceilometer_backend: {get_param: CeilometerBackend}
1031         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
1032         ceilometer_password: {get_param: CeilometerPassword}
1033         ceilometer_store_events: {get_param: CeilometerStoreEvents}
1034         aodh_password: {get_param: AodhPassword}
1035         aodh_internal_url: { get_param: [ EndpointMap, AodhInternal, uri ] }
1036         aodh_public_url: { get_param: [ EndpointMap, AodhPublic, uri ] }
1037         aodh_admin_url: { get_param: [ EndpointMap, AodhAdmin, uri ] }
1038         ceilometer_meter_dispatcher: {get_param: CeilometerMeterDispatcher}
1039         gnocchi_password: {get_param: GnocchiPassword}
1040         gnocchi_backend: {get_param: GnocchiBackend}
1041         gnocchi_indexer_backend: {get_param: GnocchiIndexerBackend}
1042         ceilometer_coordination_url:
1043           list_join:
1044             - ''
1045             - - 'redis://:'
1046               - {get_param: RedisPassword}
1047               - '@'
1048               - {get_param: RedisVirtualIPUri}
1049               - ':6379/'
1050         ceilometer_dsn:
1051           list_join:
1052             - ''
1053             - - 'mysql+pymysql://ceilometer:'
1054               - {get_param: CeilometerPassword}
1055               - '@'
1056               - {get_param: MysqlVirtualIPUri}
1057               - '/ceilometer'
1058         gnocchi_dsn:
1059           list_join:
1060             - ''
1061             - - 'mysql+pymysql://gnocchi:'
1062               - {get_param: GnocchiPassword}
1063               - '@'
1064               - {get_param: MysqlVirtualIPUri}
1065               - '/gnocchi'
1066         gnocchi_internal_url: {get_param: [EndpointMap, GnocchiInternal, uri]}
1067         gnocchi_public_url: { get_param: [ EndpointMap, GnocchiPublic, uri ] }
1068         gnocchi_admin_url: { get_param: [ EndpointMap, GnocchiAdmin, uri ] }
1069         ceilometer_public_url: {get_param: [EndpointMap, CeilometerPublic, uri]}
1070         ceilometer_internal_url: {get_param: [EndpointMap, CeilometerInternal, uri]}
1071         ceilometer_admin_url: {get_param: [EndpointMap, CeilometerAdmin, uri]}
1072         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
1073         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
1074         nova_enable_db_purge: {get_param: NovaEnableDBPurge}
1075         nova_ipv6: {get_param: NovaIPv6}
1076         corosync_ipv6: {get_param: CorosyncIPv6}
1077         memcached_ipv6: {get_param: MemcachedIPv6}
1078         nova_password: {get_param: NovaPassword}
1079         nova_dsn:
1080           list_join:
1081             - ''
1082             - - 'mysql+pymysql://nova:'
1083               - {get_param: NovaPassword}
1084               - '@'
1085               - {get_param: MysqlVirtualIPUri}
1086               - '/nova'
1087         nova_api_dsn:
1088           list_join:
1089             - ''
1090             - - 'mysql+pymysql://nova_api:'
1091               - {get_param: NovaPassword}
1092               - '@'
1093               - {get_param: MysqlVirtualIPUri}
1094               - '/nova_api'
1095         upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
1096         instance_name_template: {get_param: InstanceNameTemplate}
1097         nova_public_url: {get_param: [EndpointMap, NovaPublic, uri]}
1098         nova_internal_url: {get_param: [EndpointMap, NovaInternal, uri]}
1099         nova_admin_url: {get_param: [EndpointMap, NovaAdmin, uri]}
1100         fencing_config: {get_param: FencingConfig}
1101         pcsd_password: {get_param: PcsdPassword}
1102         rabbit_username: {get_param: RabbitUserName}
1103         rabbit_password: {get_param: RabbitPassword}
1104         rabbit_cookie: {get_param: RabbitCookie}
1105         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
1106         rabbit_client_port: {get_param: RabbitClientPort}
1107         mongodb_no_journal: {get_param: MongoDbNoJournal}
1108         mongodb_ipv6: {get_param: MongoDbIPv6}
1109         ntp_servers: {get_param: NtpServer}
1110         timezone: {get_param: TimeZone}
1111         control_virtual_interface: {get_param: ControlVirtualInterface}
1112         public_virtual_interface: {get_param: PublicVirtualInterface}
1113         swift_hash_suffix: {get_param: SwiftHashSuffix}
1114         swift_password: {get_param: SwiftPassword}
1115         swift_part_power: {get_param: SwiftPartPower}
1116         swift_ring_build: {get_param: SwiftRingBuild}
1117         swift_replicas: {get_param: SwiftReplicas}
1118         swift_min_part_hours: {get_param: SwiftMinPartHours}
1119         swift_mount_check: {get_param: SwiftMountCheck}
1120         swift_public_url: {get_param: [EndpointMap, SwiftPublic, uri]}
1121         swift_internal_url: {get_param: [EndpointMap, SwiftInternal, uri]}
1122         swift_admin_url: {get_param: [EndpointMap, SwiftAdmin, uri]}
1123         swift_public_url_s3: {get_param: [EndpointMap, SwiftS3Public, uri]}
1124         swift_internal_url_s3: {get_param: [EndpointMap, SwiftS3Internal, uri]}
1125         swift_admin_url_s3: {get_param: [EndpointMap, SwiftS3Admin, uri]}
1126         enable_package_install: {get_param: EnablePackageInstall}
1127         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
1128         sahara_password: {get_param: SaharaPassword}
1129         sahara_public_url: {get_param: [EndpointMap, SaharaPublic, uri]}
1130         sahara_internal_url: {get_param: [EndpointMap, SaharaInternal, uri]}
1131         sahara_admin_url: {get_param: [EndpointMap, SaharaAdmin, uri]}
1132         sahara_dsn:
1133           list_join:
1134             - ''
1135             - - 'mysql://sahara:'
1136               - {get_param: SaharaPassword}
1137               - '@'
1138               - {get_param: MysqlVirtualIPUri}
1139               - '/sahara'
1140         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1141         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1142         cinder_iscsi_network:
1143           str_replace:
1144             template: "'IP'"
1145             params:
1146               IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
1147         cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1148         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1149         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1150         glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
1151         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1152         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1153         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1154         keystone_region: {get_param: KeystoneRegion}
1155         mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
1156         neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1157         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
1158         ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1159         aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1160         gnocchi_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1161         nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1162         nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1163         horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1164         horizon_subnet:
1165           str_replace:
1166             template: "['SUBNET']"
1167             params:
1168               SUBNET: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1169         rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1170         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
1171         redis_password: {get_param: RedisPassword}
1172         redis_vip: {get_param: RedisVirtualIP}
1173         sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1174         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1175         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1176         mysql_virtual_ip: {get_param: MysqlVirtualIP}
1177         ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
1178         ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1179         ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1180
1181   # Map heat metadata into hiera datafiles
1182   ControllerConfig:
1183     type: OS::Heat::StructuredConfig
1184     properties:
1185       group: os-apply-config
1186       config:
1187         hiera:
1188           hierarchy:
1189             - '"%{::uuid}"'
1190             - heat_config_%{::deploy_config_name}
1191             - controller_extraconfig
1192             - extraconfig
1193             - service_configs
1194             - controller
1195             - database
1196             - object
1197             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
1198             - ceph_cluster # provided by CephClusterConfig
1199             - ceph
1200             - bootstrap_node # provided by BootstrapNodeConfig
1201             - all_nodes # provided by allNodesConfig
1202             - vip_data # provided by vip-config
1203             - '"%{::osfamily}"'
1204             - common
1205             - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
1206             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
1207             - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
1208             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
1209             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
1210             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
1211             - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
1212             - midonet_data #Optionally provided by AllNodesExtraConfig
1213             - neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
1214             - neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
1215           merge_behavior: deeper
1216           datafiles:
1217             service_configs:
1218               mapped_data: {get_param: ServiceConfigSettings}
1219             controller_extraconfig:
1220               mapped_data:
1221                 map_merge:
1222                   - {get_param: controllerExtraConfig}
1223                   - {get_param: ControllerExtraConfig}
1224             extraconfig:
1225               mapped_data: {get_param: ExtraConfig}
1226             common:
1227               raw_data: {get_file: hieradata/common.yaml}
1228             ceph:
1229               raw_data: {get_file: hieradata/ceph.yaml}
1230               mapped_data:
1231                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
1232                 ceph::profile::params::public_network: {get_input: ceph_public_network}
1233                 ceph::profile::params::public_addr: {get_input: ceph_public_ip}
1234             database:
1235               raw_data: {get_file: hieradata/database.yaml}
1236             object:
1237               raw_data: {get_file: hieradata/object.yaml}
1238             controller:
1239               raw_data: {get_file: hieradata/controller.yaml}
1240               mapped_data: # data supplied directly to this deployment configuration, etc
1241                 bootstack_nodeid: {get_input: bootstack_nodeid}
1242
1243                 # Pacemaker
1244                 enable_fencing: {get_input: enable_fencing}
1245                 enable_load_balancer: {get_input: enable_load_balancer}
1246                 hacluster_pwd: {get_input: pcsd_password}
1247                 corosync_ipv6: {get_input: corosync_ipv6}
1248                 tripleo::fencing::config: {get_input: fencing_config}
1249
1250                 # Swift
1251                 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
1252                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
1253                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
1254                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
1255                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
1256                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
1257                 swift::proxy::workers: {get_input: swift_workers}
1258                 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
1259                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
1260                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
1261                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
1262                 swift_mount_check: {get_input: swift_mount_check}
1263                 swift::keystone::auth::public_url: {get_input: swift_public_url }
1264                 swift::keystone::auth::internal_url: {get_input: swift_internal_url }
1265                 swift::keystone::auth::admin_url: {get_input: swift_admin_url }
1266                 swift::keystone::auth::public_url_s3: {get_input: swift_public_url_v3 }
1267                 swift::keystone::auth::internal_url_s3: {get_input: swift_internal_url_v3 }
1268                 swift::keystone::auth::admin_url_s3: {get_input: swift_admin_url_v3 }
1269                 swift::keystone::auth::password: {get_input: swift_password }
1270                 swift::keystone::auth::region: {get_input: keystone_region}
1271
1272                 # Cinder
1273                 cinder_enable_db_purge: {get_input: cinder_enable_db_purge}
1274                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
1275                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
1276                 cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
1277                 cinder_nfs_servers: {get_input: cinder_nfs_servers}
1278                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
1279                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
1280                 cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
1281                 cinder::database_connection: {get_input: cinder_dsn}
1282                 cinder::api::keystone_password: {get_input: cinder_password}
1283                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
1284                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
1285                 cinder::api::bind_host: {get_input: cinder_api_network}
1286                 cinder::rabbit_userid: {get_input: rabbit_username}
1287                 cinder::rabbit_password: {get_input: rabbit_password}
1288                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1289                 cinder::rabbit_port: {get_input: rabbit_client_port}
1290                 cinder::debug: {get_input: debug}
1291                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
1292                 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
1293                 cinder_backend_config: {get_input: CinderBackendConfig}
1294                 cinder::db::mysql::password: {get_input: cinder_password}
1295                 cinder::keystone::auth::public_url: {get_input: cinder_public_url }
1296                 cinder::keystone::auth::internal_url: {get_input: cinder_internal_url }
1297                 cinder::keystone::auth::admin_url: {get_input: cinder_admin_url }
1298                 cinder::keystone::auth::public_url_v2: {get_input: cinder_public_url_v2 }
1299                 cinder::keystone::auth::internal_url_v2: {get_input: cinder_internal_url_v2 }
1300                 cinder::keystone::auth::admin_url_v2: {get_input: cinder_admin_url_v2 }
1301                 cinder::keystone::auth::password: {get_input: cinder_password }
1302                 cinder::keystone::auth::region: {get_input: keystone_region}
1303
1304                 # Glance
1305                 glance::api::bind_host: {get_input: glance_api_network}
1306                 glance::registry::bind_host: {get_input: glance_registry_network}
1307                 glance::keystone::auth::region: {get_input: keystone_region}
1308
1309                 # Heat
1310                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
1311                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
1312                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
1313                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
1314                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
1315                 heat::rabbit_userid: {get_input: rabbit_username}
1316                 heat::rabbit_password: {get_input: rabbit_password}
1317                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1318                 heat::rabbit_port: {get_input: rabbit_client_port}
1319                 heat::auth_uri: {get_input: keystone_auth_uri}
1320                 heat::keystone_ec2_uri: {get_input: keystone_ec2_uri}
1321                 heat::identity_uri: {get_input: keystone_identity_uri}
1322                 heat::keystone_password: {get_input: heat_password}
1323                 heat::api::bind_host: {get_input: heat_api_network}
1324                 heat::api::workers: {get_input: heat_workers}
1325                 heat::api_cloudwatch::bind_host: {get_input: heat_api_network}
1326                 heat::api_cloudwatch::workers: {get_input: heat_workers}
1327                 heat::api_cfn::bind_host: {get_input: heat_api_network}
1328                 heat::api_cfn::workers: {get_input: heat_workers}
1329                 heat::engine::num_engine_workers: {get_input: heat_workers}
1330                 heat::database_connection: {get_input: heat_dsn}
1331                 heat::debug: {get_input: debug}
1332                 heat::db::mysql::password: {get_input: heat_password}
1333                 heat_enable_db_purge: {get_input: heat_enable_db_purge}
1334                 heat::keystone::domain::domain_password: {get_input: heat_stack_domain_admin_password}
1335                 heat::keystone::auth::public_url: {get_input: heat_public_url }
1336                 heat::keystone::auth::internal_url: {get_input: heat_internal_url }
1337                 heat::keystone::auth::admin_url: {get_input: heat_admin_url }
1338                 heat::keystone::auth::password: {get_input: heat_password }
1339                 heat::keystone::auth::region: {get_input: keystone_region}
1340
1341                 # Keystone
1342                 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
1343                 keystone::public_bind_host: {get_input: keystone_public_api_network}
1344                 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
1345                 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
1346                 # MongoDB
1347                 mongodb::server::bind_ip: {get_input: mongo_db_network}
1348                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
1349                 mongodb::server::ipv6: {get_input: mongodb_ipv6}
1350                 # MySQL
1351                 admin_password: {get_input: admin_password}
1352                 enable_galera: {get_input: enable_galera}
1353                 enable_ceph_storage: {get_input: enable_ceph_storage}
1354                 enable_swift_storage: {get_input: enable_swift_storage}
1355                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
1356                 mysql_max_connections: {get_input: mysql_max_connections}
1357                 mysql::server::root_password: {get_input: mysql_root_password}
1358                 mysql_clustercheck_password: {get_input: mysql_clustercheck_password}
1359                 mysql_cluster_name: {get_input: mysql_cluster_name}
1360                 mysql_bind_host: {get_input: mysql_network}
1361                 mysql_virtual_ip: {get_input: mysql_virtual_ip}
1362
1363                 # Neutron
1364                 neutron::bind_host: {get_input: neutron_api_network}
1365                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
1366                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
1367                 neutron::server::database_connection: {get_input: neutron_dsn}
1368                 neutron::server::api_workers: {get_input: neutron_workers}
1369                 neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
1370                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
1371                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
1372                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
1373                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
1374                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
1375                 neutron_agent_mode: {get_input: neutron_agent_mode}
1376                 neutron_router_distributed: {get_input: neutron_router_distributed}
1377                 neutron::core_plugin: {get_input: neutron_core_plugin}
1378                 neutron::service_plugins: {get_input: neutron_service_plugins}
1379                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
1380                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
1381                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
1382                 neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
1383                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
1384                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
1385                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
1386                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
1387                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
1388                 neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
1389                 neutron_public_interface: {get_input: neutron_public_interface}
1390                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
1391                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
1392                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
1393                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
1394                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
1395                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
1396                 neutron::server::auth_password: {get_input: neutron_password}
1397                 neutron_dsn: {get_input: neutron_dsn}
1398                 neutron::db::mysql::password: {get_input: neutron_password}
1399                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
1400                 neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
1401                 neutron::keystone::auth::admin_url: {get_input: neutron_admin_url }
1402                 neutron::keystone::auth::password: {get_input: neutron_password }
1403                 neutron::keystone::auth::region: {get_input: keystone_region}
1404                 neutron::server::notifications::nova_url: {get_input: nova_internal_url}
1405                 neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
1406                 neutron::server::notifications::tenant_name: 'service'
1407                 neutron::server::notifications::project_name: 'service'
1408                 neutron::server::notifications::password: {get_input: nova_password}
1409
1410                 # Ceilometer
1411                 ceilometer_backend: {get_input: ceilometer_backend}
1412                 ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
1413                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
1414                 ceilometer::rabbit_userid: {get_input: rabbit_username}
1415                 ceilometer::rabbit_password: {get_input: rabbit_password}
1416                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1417                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
1418                 ceilometer::debug: {get_input: debug}
1419                 ceilometer::api::host: {get_input: ceilometer_api_network}
1420                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
1421                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1422                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1423                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
1424                 ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
1425                 ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
1426                 ceilometer::agent::notification::store_events: {get_input: ceilometer_store_events}
1427                 ceilometer::db::mysql::password: {get_input: ceilometer_password}
1428                 ceilometer::collector::meter_dispatcher: {get_input: ceilometer_meter_dispatcher}
1429                 ceilometer::dispatcher::gnocchi::url: {get_input: gnocchi_internal_url }
1430                 ceilometer::dispatcher::gnocchi::filter_project: 'service'
1431                 ceilometer::dispatcher::gnocchi::archive_policy: 'low'
1432                 ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
1433                 ceilometer::keystone::auth::public_url: {get_input: ceilometer_public_url }
1434                 ceilometer::keystone::auth::internal_url: {get_input: ceilometer_internal_url }
1435                 ceilometer::keystone::auth::admin_url: {get_input: ceilometer_admin_url }
1436                 ceilometer::keystone::auth::password: {get_input: ceilometer_password }
1437                 ceilometer::keystone::auth::region: {get_input: keystone_region}
1438                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
1439                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
1440
1441                 # Aodh
1442                 aodh::rabbit_userid: {get_input: rabbit_username}
1443                 aodh::rabbit_password: {get_input: rabbit_password}
1444                 aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1445                 aodh::rabbit_port: {get_input: rabbit_client_port}
1446                 aodh::debug: {get_input: debug}
1447                 aodh::wsgi::apache::ssl: false
1448                 aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
1449                 aodh::api::service_name: 'httpd'
1450                 aodh::api::host: {get_input: aodh_api_network}
1451                 aodh::api::keystone_password: {get_input: aodh_password}
1452                 aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1453                 aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1454                 aodh::auth::auth_password: {get_input: aodh_password}
1455                 aodh::db::mysql::password: {get_input: aodh_password}
1456                 # for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
1457                 aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
1458                 aodh::keystone::auth::public_url: {get_input: aodh_public_url }
1459                 aodh::keystone::auth::internal_url: {get_input: aodh_internal_url }
1460                 aodh::keystone::auth::admin_url: {get_input: aodh_admin_url }
1461                 aodh::keystone::auth::password: {get_input: aodh_password }
1462                 aodh::keystone::auth::region: {get_input: keystone_region}
1463
1464                 # Gnocchi
1465                 gnocchi_backend: {get_input: gnocchi_backend}
1466                 gnocchi_indexer_backend: {get_input: gnocchi_indexer_backend}
1467                 gnocchi_mysql_conn_string: {get_input: gnocchi_dsn}
1468                 gnocchi::debug: {get_input: debug}
1469                 gnocchi::wsgi::apache::ssl: false
1470                 gnocchi::wsgi::apache::bind_host: {get_input: gnocchi_api_network}
1471                 gnocchi::api::service_name: 'httpd'
1472                 gnocchi::api::host: {get_input: gnocchi_api_network}
1473                 gnocchi::api::keystone_password: {get_input: gnocchi_password}
1474                 gnocchi::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1475                 gnocchi::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1476                 gnocchi::db::mysql::password: {get_input: gnocchi_password}
1477                 gnocchi::storage::swift::swift_authurl: {get_input: keystone_auth_uri}
1478                 gnocchi::storage::swift::swift_key: {get_input: gnocchi_password}
1479                 gnocchi::keystone::auth::public_url: {get_input: gnocchi_public_url }
1480                 gnocchi::keystone::auth::internal_url: {get_input: gnocchi_internal_url }
1481                 gnocchi::keystone::auth::admin_url: {get_input: gnocchi_admin_url }
1482                 gnocchi::keystone::auth::password: {get_input: gnocchi_password }
1483                 gnocchi::keystone::auth::region: {get_input: keystone_region}
1484
1485                 # Nova
1486                 nova::rabbit_userid: {get_input: rabbit_username}
1487                 nova::rabbit_password: {get_input: rabbit_password}
1488                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1489                 nova::rabbit_port: {get_input: rabbit_client_port}
1490                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
1491                 nova::debug: {get_input: debug}
1492                 nova::use_ipv6: {get_input: nova_ipv6}
1493                 nova::api::auth_uri: {get_input: keystone_auth_uri}
1494                 nova::api::identity_uri: {get_input: keystone_identity_uri}
1495                 nova::api::api_bind_address: {get_input: nova_api_network}
1496                 nova::api::metadata_listen: {get_input: nova_metadata_network}
1497                 nova::api::admin_password: {get_input: nova_password}
1498                 nova::api::osapi_compute_workers: {get_input: nova_workers}
1499                 nova::api::metadata_workers: {get_input: nova_workers}
1500                 nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
1501                 nova::database_connection: {get_input: nova_dsn}
1502                 nova::api_database_connection: {get_input: nova_api_dsn}
1503                 nova::glance_api_servers: {get_input: glance_api_servers}
1504                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1505                 nova::api::instance_name_template: {get_input: instance_name_template}
1506                 nova::network::neutron::neutron_password: {get_input: neutron_password}
1507                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
1508                 nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
1509                 nova::vncproxy::host: {get_input: nova_api_network}
1510                 nova::db::mysql::password: {get_input: nova_password}
1511                 nova::db::mysql_api::password: {get_input: nova_password}
1512                 nova_enable_db_purge: {get_input: nova_enable_db_purge}
1513                 nova::keystone::auth::public_url: {get_input: nova_public_url}
1514                 nova::keystone::auth::internal_url: {get_input: nova_internal_url}
1515                 nova::keystone::auth::admin_url: {get_input: nova_admin_url}
1516                 nova::keystone::auth::password: {get_input: nova_password }
1517                 nova::keystone::auth::region: {get_input: keystone_region}
1518
1519                 # Horizon
1520                 apache::mod::remoteip::proxy_ips: {get_input: horizon_subnet}
1521                 apache::ip: {get_input: horizon_network}
1522                 horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
1523                 horizon::django_debug: {get_input: debug}
1524                 horizon::secret_key: {get_input: horizon_secret}
1525                 horizon::bind_address: {get_input: horizon_network}
1526                 horizon::keystone_url: {get_input: keystone_auth_uri}
1527
1528                 # Sahara
1529                 sahara::host: {get_input: sahara_api_network}
1530                 sahara::plugins:
1531                   - cdh
1532                   - hdp
1533                   - mapr
1534                   - vanilla
1535                   - spark
1536                   - storm
1537                 sahara::admin_password: {get_input: sahara_password}
1538                 sahara::auth_uri: {get_input: keystone_auth_uri}
1539                 sahara::admin_user: sahara
1540                 sahara::identity_uri: {get_input: keystone_identity_uri}
1541                 sahara::use_neutron: true
1542                 sahara::database_connection: {get_input: sahara_dsn}
1543                 sahara::debug: {get_input: debug}
1544                 sahara::rpc_backend: rabbit
1545                 sahara::rabbit_userid: {get_input: rabbit_username}
1546                 sahara::rabbit_password: {get_input: rabbit_password}
1547                 sahara::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1548                 sahara::rabbit_port: {get_input: rabbit_client_port}
1549                 sahara::db::mysql::password: {get_input: sahara_password}
1550                 sahara::keystone::auth::public_url: {get_input: sahara_public_url }
1551                 sahara::keystone::auth::internal_url: {get_input: sahara_internal_url }
1552                 sahara::keystone::auth::admin_url: {get_input: sahara_admin_url }
1553                 sahara::keystone::auth::password: {get_input: sahara_password }
1554                 sahara::keystone::auth::region: {get_input: keystone_region}
1555                 # RabbitMQ
1556                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
1557                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
1558                 # Redis
1559                 redis::bind: {get_input: redis_network}
1560                 redis::requirepass: {get_input: redis_password}
1561                 redis::masterauth: {get_input: redis_password}
1562                 redis::sentinel_auth_pass: {get_input: redis_password}
1563                 redis_vip: {get_input: redis_vip}
1564                 # Firewall
1565                 tripleo::firewall::manage_firewall: {get_input: manage_firewall}
1566                 tripleo::firewall::purge_firewall_rules: {get_input: purge_firewall_rules}
1567                 # Misc
1568                 memcached_ipv6: {get_input: memcached_ipv6}
1569                 memcached::listen_ip: {get_input: memcached_network}
1570                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
1571                 ntp::servers: {get_input: ntp_servers}
1572                 timezone::timezone: {get_input: timezone}
1573                 control_virtual_interface: {get_input: control_virtual_interface}
1574                 public_virtual_interface: {get_input: public_virtual_interface}
1575                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
1576                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
1577                 tripleo::loadbalancer::haproxy_log_address: {get_input: haproxy_log_address}
1578                 tripleo::loadbalancer::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
1579                 tripleo::loadbalancer::haproxy_stats_user: {get_input: haproxy_stats_user}
1580                 tripleo::loadbalancer::haproxy_stats_password: {get_input: haproxy_stats_password}
1581                 tripleo::loadbalancer::redis_password: {get_input: redis_password}
1582                 tripleo::packages::enable_install: {get_input: enable_package_install}
1583                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
1584
1585   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
1586   ControllerExtraConfigPre:
1587     depends_on: ControllerDeployment
1588     type: OS::TripleO::ControllerExtraConfigPre
1589     properties:
1590         server: {get_resource: Controller}
1591
1592   # Hook for site-specific additional pre-deployment config,
1593   # applying to all nodes, e.g node registration/unregistration
1594   NodeExtraConfig:
1595     depends_on: [ControllerExtraConfigPre, NodeTLSData]
1596     type: OS::TripleO::NodeExtraConfig
1597     properties:
1598         server: {get_resource: Controller}
1599
1600   UpdateConfig:
1601     type: OS::TripleO::Tasks::PackageUpdate
1602
1603   UpdateDeployment:
1604     type: OS::Heat::SoftwareDeployment
1605     properties:
1606       name: UpdateDeployment
1607       config: {get_resource: UpdateConfig}
1608       server: {get_resource: Controller}
1609       input_values:
1610         update_identifier:
1611           get_param: UpdateIdentifier
1612
1613 outputs:
1614   ip_address:
1615     description: IP address of the server in the ctlplane network
1616     value: {get_attr: [Controller, networks, ctlplane, 0]}
1617   external_ip_address:
1618     description: IP address of the server in the external network
1619     value: {get_attr: [ExternalPort, ip_address]}
1620   internal_api_ip_address:
1621     description: IP address of the server in the internal_api network
1622     value: {get_attr: [InternalApiPort, ip_address]}
1623   storage_ip_address:
1624     description: IP address of the server in the storage network
1625     value: {get_attr: [StoragePort, ip_address]}
1626   storage_mgmt_ip_address:
1627     description: IP address of the server in the storage_mgmt network
1628     value: {get_attr: [StorageMgmtPort, ip_address]}
1629   tenant_ip_address:
1630     description: IP address of the server in the tenant network
1631     value: {get_attr: [TenantPort, ip_address]}
1632   management_ip_address:
1633     description: IP address of the server in the management network
1634     value: {get_attr: [ManagementPort, ip_address]}
1635   hostname:
1636     description: Hostname of the server
1637     value: {get_attr: [Controller, name]}
1638   hosts_entry:
1639     description: >
1640       Server's IP address and hostname in the /etc/hosts format
1641     value:
1642       str_replace:
1643         template: |
1644           PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
1645           EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
1646           INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
1647           STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
1648           STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
1649           TENANTIP TENANTHOST.DOMAIN TENANTHOST
1650           MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
1651         params:
1652           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
1653           DOMAIN: {get_param: CloudDomain}
1654           PRIMARYHOST: {get_attr: [Controller, name]}
1655           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
1656           EXTERNALHOST:
1657             list_join:
1658             - '.'
1659             - - {get_attr: [Controller, name]}
1660               - external
1661           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
1662           INTERNAL_APIHOST:
1663             list_join:
1664             - '.'
1665             - - {get_attr: [Controller, name]}
1666               - internalapi
1667           STORAGEIP: {get_attr: [StoragePort, ip_address]}
1668           STORAGEHOST:
1669             list_join:
1670             - '.'
1671             - - {get_attr: [Controller, name]}
1672               - storage
1673           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
1674           STORAGE_MGMTHOST:
1675             list_join:
1676             - '.'
1677             - - {get_attr: [Controller, name]}
1678               - storagemgmt
1679           TENANTIP: {get_attr: [TenantPort, ip_address]}
1680           TENANTHOST:
1681             list_join:
1682             - '.'
1683             - - {get_attr: [Controller, name]}
1684               - tenant
1685           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
1686           MANAGEMENTHOST:
1687             list_join:
1688             - '.'
1689             - - {get_attr: [Controller, name]}
1690               - management
1691   nova_server_resource:
1692     description: Heat resource handle for the Nova compute server
1693     value:
1694       {get_resource: Controller}
1695   swift_device:
1696     description: Swift device formatted for swift-ring-builder
1697     value:
1698       str_replace:
1699         template: 'r1z1-IP:%PORT%/d1'
1700         params:
1701           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1702   swift_proxy_memcache:
1703     description: Swift proxy-memcache value
1704     value:
1705       str_replace:
1706         template: "IP:11211"
1707         params:
1708           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1709   config_identifier:
1710     description: identifier which changes if the controller configuration may need re-applying
1711     value:
1712       list_join:
1713         - ','
1714         - - {get_attr: [ControllerDeployment, deploy_stdout]}
1715           - {get_attr: [NodeTLSCAData, deploy_stdout]}
1716           - {get_attr: [NodeTLSData, deploy_stdout]}
1717           - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
1718           - {get_param: UpdateIdentifier}
1719   tls_key_modulus_md5:
1720     description: MD5 checksum of the TLS Key Modulus
1721     value: {get_attr: [NodeTLSData, key_modulus_md5]}
1722   tls_cert_modulus_md5:
1723     description: MD5 checksum of the TLS Certificate Modulus
1724     value: {get_attr: [NodeTLSData, cert_modulus_md5]}