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