Merge "Set shared secrets, keys and passwords as hidden"
[apex-tripleo-heat-templates.git] / puppet / controller.yaml
1 heat_template_version: 2015-04-30
2
3 description: >
4   OpenStack controller node configured by Puppet.
5
6 parameters:
7   AdminPassword:
8     default: unset
9     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
10     type: string
11     hidden: true
12   AdminToken:
13     default: unset
14     description: The keystone auth secret and db password.
15     type: string
16     hidden: true
17   CeilometerApiVirtualIP:
18     type: string
19     default: ''
20   CeilometerBackend:
21     default: 'mongodb'
22     description: The ceilometer backend type.
23     type: string
24   CeilometerMeteringSecret:
25     default: unset
26     description: Secret shared by the ceilometer services.
27     type: string
28     hidden: true
29   CeilometerPassword:
30     default: unset
31     description: The password for the ceilometer service  and db account.
32     type: string
33     hidden: true
34   CinderApiVirtualIP:
35     type: string
36     default: ''
37   CinderEnableNfsBackend:
38     default: false
39     description: Whether to enable or not the NFS backend for Cinder
40     type: boolean
41   CinderEnableIscsiBackend:
42     default: true
43     description: Whether to enable or not the Iscsi backend for Cinder
44     type: boolean
45   CinderEnableRbdBackend:
46     default: false
47     description: Whether to enable or not the Rbd backend for Cinder
48     type: boolean
49   CinderISCSIHelper:
50     default: tgtadm
51     description: The iSCSI helper to use with cinder.
52     type: string
53   CinderLVMLoopDeviceSize:
54     default: 5000
55     description: The size of the loopback file used by the cinder LVM driver.
56     type: number
57   CinderNfsMountOptions:
58     default: ''
59     description: >
60       Mount options for NFS mounts used by Cinder NFS backend. Effective
61       when CinderEnableNfsBackend is true.
62     type: string
63   CinderNfsServers:
64     default: ''
65     description: >
66       NFS servers used by Cinder NFS backend. Effective when
67       CinderEnableNfsBackend is true.
68     type: comma_delimited_list
69   CinderPassword:
70     default: unset
71     description: The password for the cinder service and db account, used by cinder-api.
72     type: string
73     hidden: true
74   CinderBackendConfig:
75     default: {}
76     description: Contains parameters to configure Cinder backends. Typically
77                  set via parameter_defaults in the resource registry.
78     type: json
79   CloudName:
80     default: ''
81     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
82     type: string
83   ControllerExtraConfig:
84     default: {}
85     description: |
86       Controller specific hiera configuration data to inject into the cluster.
87     type: json
88   ControlVirtualInterface:
89     default: 'br-ex'
90     description: Interface where virtual ip will be assigned.
91     type: string
92   Debug:
93     default: ''
94     description: Set to True to enable debugging on all services.
95     type: string
96   EnableFencing:
97     default: false
98     description: Whether to enable fencing in Pacemaker or not.
99     type: boolean
100   EnableGalera:
101     default: true
102     description: Whether to use Galera instead of regular MariaDB.
103     type: boolean
104   EnableCephStorage:
105     default: false
106     description: Whether to deploy Ceph Storage (OSD) on the Controller
107     type: boolean
108   EnableSwiftStorage:
109     default: true
110     description: Whether to enable Swift Storage on the Controller
111     type: boolean
112   ExtraConfig:
113     default: {}
114     description: |
115       Additional hieradata to inject into the cluster, note that
116       ControllerExtraConfig takes precedence over ExtraConfig.
117     type: json
118   FencingConfig:
119     default: {}
120     description: |
121       Pacemaker fencing configuration. The JSON should have
122       the following structure:
123         {
124           "devices": [
125             {
126               "agent": "AGENT_NAME",
127               "host_mac": "HOST_MAC_ADDRESS",
128               "params": {"PARAM_NAME": "PARAM_VALUE"}
129             }
130           ]
131         }
132       For instance:
133         {
134           "devices": [
135             {
136               "agent": "fence_xvm",
137               "host_mac": "52:54:00:aa:bb:cc",
138               "params": {
139                 "multicast_address": "225.0.0.12",
140                 "port": "baremetal_0",
141                 "manage_fw": true,
142                 "manage_key_file": true,
143                 "key_file": "/etc/fence_xvm.key",
144                 "key_file_password": "abcdef"
145               }
146             }
147           ]
148         }
149     type: json
150   Flavor:
151     description: Flavor for control nodes to request when deploying.
152     type: string
153     constraints:
154       - custom_constraint: nova.flavor
155   GlanceNotifierStrategy:
156     description: Strategy to use for Glance notification queue
157     type: string
158     default: noop
159   GlanceLogFile:
160     description: The filepath of the file to use for logging messages from Glance.
161     type: string
162     default: ''
163   GlancePassword:
164     default: unset
165     description: The password for the glance service and db account, used by the glance services.
166     type: string
167     hidden: true
168   GlancePort:
169     default: "9292"
170     description: Glance port.
171     type: string
172   GlanceProtocol:
173     default: http
174     description: Protocol to use when connecting to glance, set to https for SSL.
175     type: string
176   GlanceBackend:
177     default: swift
178     description: The short name of the Glance backend to use. Should be one
179       of swift, rbd, or file
180     type: string
181     constraints:
182     - allowed_values: ['swift', 'file', 'rbd']
183   HeatPassword:
184     default: unset
185     description: The password for the Heat service and db account, used by the Heat services.
186     type: string
187     hidden: true
188   HeatStackDomainAdminPassword:
189     description: Password for heat_domain_admin user.
190     type: string
191     default: ''
192     hidden: true
193   HeatAuthEncryptionKey:
194     description: Auth encryption key for heat-engine
195     type: string
196     hidden: true
197   HorizonAllowedHosts:
198     default: '*'
199     description: A list of IP/Hostname allowed to connect to horizon
200     type: comma_delimited_list
201   HorizonSecret:
202     description: Secret key for Django
203     type: string
204     hidden: true
205   Image:
206     type: string
207     default: overcloud-control
208     constraints:
209       - custom_constraint: glance.image
210   ImageUpdatePolicy:
211     default: 'REBUILD_PRESERVE_EPHEMERAL'
212     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
213     type: string
214   KeyName:
215     default: default
216     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
217     type: string
218     constraints:
219       - custom_constraint: nova.keypair
220   KeystoneCACertificate:
221     default: ''
222     description: Keystone self-signed certificate authority certificate.
223     type: string
224   KeystoneSigningCertificate:
225     default: ''
226     description: Keystone certificate for verifying token validity.
227     type: string
228   KeystoneSigningKey:
229     default: ''
230     description: Keystone key for signing tokens.
231     type: string
232     hidden: true
233   KeystoneSSLCertificate:
234     default: ''
235     description: Keystone certificate for verifying token validity.
236     type: string
237   KeystoneSSLCertificateKey:
238     default: ''
239     description: Keystone key for signing tokens.
240     type: string
241     hidden: true
242   KeystoneNotificationDriver:
243     description: Comma-separated list of Oslo notification drivers used by Keystone
244     default: ['messaging']
245     type: comma_delimited_list
246   KeystoneNotificationFormat:
247     description: The Keystone notification format
248     default: 'basic'
249     type: string
250     constraints:
251       - allowed_values: [ 'basic', 'cadf' ]
252   MysqlClusterUniquePart:
253     description: A unique identifier of the MySQL cluster the controller is in.
254     type: string
255     default: 'unset'  # Has to be here because of the ignored empty value bug
256     # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446
257     # constraints:
258     # - length: {min: 4, max: 10}
259   MysqlInnodbBufferPoolSize:
260     description: >
261         Specifies the size of the buffer pool in megabytes. Setting to
262         zero should be interpreted as "no value" and will defer to the
263         lower level default.
264     type: number
265     default: 0
266   MysqlMaxConnections:
267     description: Configures MySQL max_connections config setting
268     type: number
269     default: 4096
270   MysqlRootPassword:
271     type: string
272     hidden: true
273     default: ''  # Has to be here because of the ignored empty value bug
274   NeutronExternalNetworkBridge:
275     description: Name of bridge used for external network traffic.
276     type: string
277     default: 'br-ex'
278   NeutronBridgeMappings:
279     description: >
280       The OVS logical->physical bridge mappings to use. See the Neutron
281       documentation for details. Defaults to mapping br-ex - the external
282       bridge on hosts - to a physical name 'datacentre' which can be used
283       to create provider networks (and we use this for the default floating
284       network) - if changing this either use different post-install network
285       scripts or be sure to keep 'datacentre' as a mapping network name.
286     type: string
287     default: "datacentre:br-ex"
288   NeutronDnsmasqOptions:
289     default: 'dhcp-option-force=26,1400'
290     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.
291     type: string
292   NeutronAgentMode:
293     default: 'dvr_snat'
294     description: Agent mode for the neutron-l3-agent on the controller hosts
295     type: string
296   NeutronL3HA:
297     default: 'False'
298     description: Whether to enable l3-agent HA
299     type: string
300   NeutronDhcpAgentsPerNetwork:
301     type: number
302     default: 3
303     description: The number of neutron dhcp agents to schedule per network
304   NeutronDVR:
305     default: 'False'
306     description: Whether to configure Neutron Distributed Virtual Routers
307     type: string
308   NeutronMetadataProxySharedSecret:
309     default: 'unset'
310     description: Shared secret to prevent spoofing
311     type: string
312     hidden: true
313   NeutronCorePlugin:
314     default: 'ml2'
315     description: |
316         The core plugin for Neutron. The value should be the entrypoint to be loaded
317         from neutron.core_plugins namespace.
318     type: string
319   NeutronServicePlugins:
320     default: "router"
321     description: |
322         Comma-separated list of service plugin entrypoints to be loaded from the
323         neutron.service_plugins namespace.
324     type: comma_delimited_list
325   NeutronTypeDrivers:
326     default: "vxlan,vlan,flat,gre"
327     description: |
328         Comma-separated list of network type driver entrypoints to be loaded.
329     type: comma_delimited_list
330   NeutronMechanismDrivers:
331     default: 'openvswitch'
332     description: |
333         The mechanism drivers for the Neutron tenant network. To specify multiple
334         values, use a comma separated string, like so: 'openvswitch,l2_population'
335     type: string
336   NeutronAllowL3AgentFailover:
337     default: 'True'
338     description: Allow automatic l3-agent failover
339     type: string
340   NeutronEnableTunnelling:
341     type: string
342     default: "True"
343   NeutronFlatNetworks:
344     type: string
345     default: 'datacentre'
346     description: If set, flat networks to configure in neutron plugins.
347   NeutronL3HA:
348     default: 'False'
349     description: Whether to enable l3-agent HA
350     type: string
351   NeutronNetworkType:
352     default: 'vxlan'
353     description: The tenant network type for Neutron, either gre or vxlan.
354     type: string
355   NeutronNetworkVLANRanges:
356     default: 'datacentre'
357     description: >
358       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
359       Neutron documentation for permitted values. Defaults to permitting any
360       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
361     type: comma_delimited_list
362   NeutronPassword:
363     default: unset
364     description: The password for the neutron service and db account, used by neutron agents.
365     type: string
366     hidden: true
367   NeutronPublicInterface:
368     default: nic1
369     description: What interface to bridge onto br-ex for network nodes.
370     type: string
371   NeutronPublicInterfaceTag:
372     default: ''
373     description: >
374       VLAN tag for creating a public VLAN. The tag will be used to
375       create an access port on the exterior bridge for each control plane node,
376       and that port will be given the IP address returned by neutron from the
377       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
378       overcloud.yaml to include the deployment of VLAN ports to the control
379       plane.
380     type: string
381   NeutronPublicInterfaceDefaultRoute:
382     default: ''
383     description: A custom default route for the NeutronPublicInterface.
384     type: string
385   NeutronPublicInterfaceIP:
386     default: ''
387     description: A custom IP address to put onto the NeutronPublicInterface.
388     type: string
389   NeutronPublicInterfaceRawDevice:
390     default: ''
391     description: If set, the public interface is a vlan with this device as the raw device.
392     type: string
393   NeutronTunnelTypes:
394     default: 'vxlan'
395     description: |
396         The tunnel types for the Neutron tenant network. To specify multiple
397         values, use a comma separated string, like so: 'gre,vxlan'
398     type: string
399   NeutronTunnelIdRanges:
400     description: |
401         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
402         of GRE tunnel IDs that are available for tenant network allocation
403     default: ["1:1000", ]
404     type: comma_delimited_list
405   NeutronVniRanges:
406     description: |
407         Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
408         of VXLAN VNI IDs that are available for tenant network allocation
409     default: ["1:1000", ]
410     type: comma_delimited_list
411   NovaApiVirtualIP:
412     type: string
413     default: ''
414   NovaPassword:
415     default: unset
416     description: The password for the nova service and db account, used by nova-api.
417     type: string
418     hidden: true
419   MongoDbNoJournal:
420     default: false
421     description: Should MongoDb journaling be disabled
422     type: boolean
423   NtpServer:
424     type: string
425     default: ''
426   PcsdPassword:
427     type: string
428     description: The password for the 'pcsd' user.
429     hidden: true
430   PublicVirtualInterface:
431     default: 'br-ex'
432     description: >
433         Specifies the interface where the public-facing virtual ip will be assigned.
434         This should be int_public when a VLAN is being used.
435     type: string
436   PublicVirtualIP: # DEPRECATED: use per service settings instead
437     type: string
438     default: ''  # Has to be here because of the ignored empty value bug
439   RabbitCookie:
440     type: string
441     default: ''  # Has to be here because of the ignored empty value bug
442     hidden: true
443   RabbitPassword:
444     default: guest
445     description: The password for RabbitMQ
446     type: string
447     hidden: true
448   RabbitUserName:
449     default: guest
450     description: The username for RabbitMQ
451     type: string
452   RabbitClientUseSSL:
453     default: false
454     description: >
455         Rabbit client subscriber parameter to specify
456         an SSL connection to the RabbitMQ host.
457     type: string
458   RabbitClientPort:
459     default: 5672
460     description: Set rabbit subscriber port, change this if using SSL
461     type: number
462   RabbitFDLimit:
463     default: 16384
464     description: Configures RabbitMQ FD limit
465     type: string
466   RedisVirtualIP:
467     type: string
468     default: ''  # Has to be here because of the ignored empty value bug
469   SnmpdReadonlyUserName:
470     default: ro_snmp_user
471     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
472     type: string
473   SnmpdReadonlyUserPassword:
474     default: unset
475     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
476     type: string
477     hidden: true
478   SSLCACertificate:
479     default: ''
480     description: If set, the contents of an SSL certificate authority file.
481     type: string
482   SSLCertificate:
483     default: ''
484     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
485     type: string
486     hidden: true
487   SSLKey:
488     default: ''
489     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
490     type: string
491     hidden: true
492   SwiftHashSuffix:
493     default: unset
494     description: A random string to be used as a salt when hashing to determine mappings
495       in the ring.
496     hidden: true
497     type: string
498   SwiftMountCheck:
499     default: 'false'
500     description: Value of mount_check in Swift account/container/object -server.conf
501     type: boolean
502   SwiftMinPartHours:
503     type: number
504     default: 1
505     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
506   SwiftPartPower:
507     default: 10
508     description: Partition Power to use when building Swift rings
509     type: number
510   SwiftPassword:
511     default: unset
512     description: The password for the swift service account, used by the swift proxy
513       services.
514     hidden: true
515     type: string
516   SwiftProxyVirtualIP:
517     type: string
518     default: ''
519   SwiftReplicas:
520     type: number
521     default: 3
522     description: How many replicas to use in the swift rings.
523   VirtualIP: # DEPRECATED: use per service settings instead
524     type: string
525     default: ''  # Has to be here because of the ignored empty value bug
526   HeatApiVirtualIP:
527     type: string
528     default: ''
529   GlanceApiVirtualIP:
530     type: string
531     default: ''
532   GlanceRegistryVirtualIP:
533     type: string
534     default: ''
535   MysqlVirtualIP:
536     type: string
537     default: ''
538   KeystoneAdminApiVirtualIP:
539     type: string
540     default: ''
541   KeystonePublicApiVirtualIP:
542     type: string
543     default: ''
544   NeutronApiVirtualIP:
545     type: string
546     default: ''
547   EnablePackageInstall:
548     default: 'false'
549     description: Set to true to enable package installation via Puppet
550     type: boolean
551   ServiceNetMap:
552     default: {}
553     description: Mapping of service_name -> network name. Typically set
554                  via parameter_defaults in the resource registry.
555     type: json
556   UpdateIdentifier:
557     default: ''
558     type: string
559     description: >
560       Setting to a previously unused value during stack-update will trigger
561       package update on all nodes
562   Hostname:
563     type: string
564     default: '' # Defaults to Heat created hostname
565
566 resources:
567
568   Controller:
569     type: OS::Nova::Server
570     properties:
571       image: {get_param: Image}
572       image_update_policy: {get_param: ImageUpdatePolicy}
573       flavor: {get_param: Flavor}
574       key_name: {get_param: KeyName}
575       networks:
576         - network: ctlplane
577       user_data_format: SOFTWARE_CONFIG
578       user_data: {get_resource: UserData}
579       name: {get_param: Hostname}
580
581   # Combine the NodeAdminUserData and NodeUserData mime archives
582   UserData:
583     type: OS::Heat::MultipartMime
584     properties:
585       parts:
586       - config: {get_resource: NodeAdminUserData}
587         type: multipart
588       - config: {get_resource: NodeUserData}
589         type: multipart
590
591   # Creates the "heat-admin" user if configured via the environment
592   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
593   NodeAdminUserData:
594     type: OS::TripleO::NodeAdminUserData
595
596   # For optional operator additional userdata
597   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
598   NodeUserData:
599     type: OS::TripleO::NodeUserData
600
601   ExternalPort:
602     type: OS::TripleO::Controller::Ports::ExternalPort
603     properties:
604       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
605
606   InternalApiPort:
607     type: OS::TripleO::Controller::Ports::InternalApiPort
608     properties:
609       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
610
611   StoragePort:
612     type: OS::TripleO::Controller::Ports::StoragePort
613     properties:
614       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
615
616   StorageMgmtPort:
617     type: OS::TripleO::Controller::Ports::StorageMgmtPort
618     properties:
619       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
620
621   TenantPort:
622     type: OS::TripleO::Controller::Ports::TenantPort
623     properties:
624       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
625
626   NetIpMap:
627     type: OS::TripleO::Network::Ports::NetIpMap
628     properties:
629       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
630       ExternalIp: {get_attr: [ExternalPort, ip_address]}
631       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
632       StorageIp: {get_attr: [StoragePort, ip_address]}
633       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
634       TenantIp: {get_attr: [TenantPort, ip_address]}
635
636   NetIpSubnetMap:
637     type: OS::TripleO::Network::Ports::NetIpSubnetMap
638     properties:
639       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
640       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
641       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
642       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
643       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
644       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
645
646   NetworkConfig:
647     type: OS::TripleO::Controller::Net::SoftwareConfig
648     properties:
649       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
650       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
651       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
652       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
653       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
654       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
655
656   NetworkDeployment:
657     type: OS::TripleO::SoftwareDeployment
658     properties:
659       config: {get_resource: NetworkConfig}
660       server: {get_resource: Controller}
661       input_values:
662         bridge_name: br-ex
663         interface_name: {get_param: NeutronPublicInterface}
664
665   ControllerDeployment:
666     type: OS::TripleO::SoftwareDeployment
667     depends_on: NetworkDeployment
668     properties:
669       config: {get_resource: ControllerConfig}
670       server: {get_resource: Controller}
671       input_values:
672         bootstack_nodeid: {get_attr: [Controller, name]}
673         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
674         heat.watch_server_url:
675           list_join:
676             - ''
677             - - 'http://'
678               - {get_param: HeatApiVirtualIP}
679               - ':8003'
680         heat.metadata_server_url:
681           list_join:
682             - ''
683             - - 'http://'
684               - {get_param: HeatApiVirtualIP}
685               - ':8000'
686         heat.waitcondition_server_url:
687           list_join:
688             - ''
689             - - 'http://'
690               - {get_param: HeatApiVirtualIP}
691               - ':8000/v1/waitcondition'
692         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
693         horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
694         horizon_secret: {get_param: HorizonSecret}
695         admin_password: {get_param: AdminPassword}
696         admin_token: {get_param: AdminToken}
697         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
698         debug: {get_param: Debug}
699         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
700         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
701         cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
702         cinder_nfs_servers:
703           str_replace:
704             template: "['SERVERS']"
705             params:
706               SERVERS:
707                 list_join:
708                 - "','"
709                 - {get_param: CinderNfsServers}
710         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
711         cinder_password: {get_param: CinderPassword}
712         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
713         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
714         cinder_backend_config: {get_param: CinderBackendConfig}
715         cinder_dsn:
716           list_join:
717             - ''
718             - - 'mysql://cinder:'
719               - {get_param: CinderPassword}
720               - '@'
721               - {get_param: MysqlVirtualIP}
722               - '/cinder'
723         glance_port: {get_param: GlancePort}
724         glance_password: {get_param: GlancePassword}
725         glance_backend: {get_param: GlanceBackend}
726         glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
727         glance_log_file: {get_param: GlanceLogFile}
728         glance_dsn:
729           list_join:
730             - ''
731             - - 'mysql://glance:'
732               - {get_param: GlancePassword}
733               - '@'
734               - {get_param: MysqlVirtualIP}
735               - '/glance'
736         heat_password: {get_param: HeatPassword}
737         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
738         heat_dsn:
739           list_join:
740             - ''
741             - - 'mysql://heat:'
742               - {get_param: HeatPassword}
743               - '@'
744               - {get_param: MysqlVirtualIP}
745               - '/heat'
746         keystone_auth_address: {list_join: ['', ['http://', {get_param: KeystonePublicApiVirtualIP} , ':5000/v2.0']]}
747         keystone_ca_certificate: {get_param: KeystoneCACertificate}
748         keystone_signing_key: {get_param: KeystoneSigningKey}
749         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
750         keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
751         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
752         keystone_notification_driver: {get_param: KeystoneNotificationDriver}
753         keystone_notification_format: {get_param: KeystoneNotificationFormat}
754         keystone_dsn:
755           list_join:
756             - ''
757             - - 'mysql://keystone:'
758               - {get_param: AdminToken}
759               - '@'
760               - {get_param: MysqlVirtualIP}
761               - '/keystone'
762         keystone_identity_uri:
763           list_join:
764             - ''
765             - - 'http://'
766               - {get_param: KeystoneAdminApiVirtualIP}
767               - ':35357/'
768         keystone_auth_uri:
769           list_join:
770             - ''
771             - - 'http://'
772               - {get_param: KeystonePublicApiVirtualIP}
773               - ':5000/v2.0/'
774         keystone_ec2_uri:
775           list_join:
776             - ''
777             - - 'http://'
778               - {get_param: KeystonePublicApiVirtualIP}
779               - ':5000/v2.0/ec2tokens'
780         enable_fencing: {get_param: EnableFencing}
781         enable_galera: {get_param: EnableGalera}
782         enable_ceph_storage: {get_param: EnableCephStorage}
783         enable_swift_storage: {get_param: EnableSwiftStorage}
784         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
785         mysql_max_connections: {get_param: MysqlMaxConnections}
786         mysql_root_password: {get_param: MysqlRootPassword}
787         mysql_cluster_name:
788           str_replace:
789             template: tripleo-CLUSTER
790             params:
791               CLUSTER: {get_param: MysqlClusterUniquePart}
792         neutron_flat_networks: {get_param: NeutronFlatNetworks}
793         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
794         neutron_agent_mode: {get_param: NeutronAgentMode}
795         neutron_router_distributed: {get_param: NeutronDVR}
796         neutron_core_plugin: {get_param: NeutronCorePlugin}
797         neutron_service_plugins:
798           str_replace:
799             template: "['PLUGINS']"
800             params:
801               PLUGINS:
802                 list_join:
803                 - "','"
804                 - {get_param: NeutronServicePlugins}
805         neutron_type_drivers:
806           str_replace:
807             template: "['DRIVERS']"
808             params:
809               DRIVERS:
810                 list_join:
811                 - "','"
812                 - {get_param: NeutronTypeDrivers}
813         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
814         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
815         neutron_l3_ha: {get_param: NeutronL3HA}
816         neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
817         neutron_network_vlan_ranges:
818           str_replace:
819             template: "['RANGES']"
820             params:
821               RANGES:
822                 list_join:
823                 - "','"
824                 - {get_param: NeutronNetworkVLANRanges}
825         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
826         neutron_external_network_bridge: {get_param: NeutronExternalNetworkBridge}
827         neutron_public_interface: {get_param: NeutronPublicInterface}
828         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
829         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
830         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
831         neutron_tenant_network_type: {get_param: NeutronNetworkType}
832         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
833         neutron_tunnel_id_ranges:
834           str_replace:
835             template: "['RANGES']"
836             params:
837               RANGES:
838                 list_join:
839                 - "','"
840                 - {get_param: NeutronTunnelIdRanges}
841         neutron_vni_ranges:
842           str_replace:
843             template: "['RANGES']"
844             params:
845               RANGES:
846                 list_join:
847                 - "','"
848                 - {get_param: NeutronVniRanges}
849         neutron_password: {get_param: NeutronPassword}
850         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
851         neutron_dsn:
852           list_join:
853             - ''
854             - - 'mysql://neutron:'
855               - {get_param: NeutronPassword}
856               - '@'
857               - {get_param: MysqlVirtualIP}
858               - '/ovs_neutron?charset=utf8'
859         neutron_url:
860           list_join:
861             - ''
862             - - 'http://'
863               - {get_param: NeutronApiVirtualIP}
864               - ':9696'
865         neutron_admin_auth_url:
866           list_join:
867             - ''
868             - - 'http://'
869               - {get_param: KeystoneAdminApiVirtualIP}
870               - ':35357/v2.0'
871         ceilometer_backend: {get_param: CeilometerBackend}
872         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
873         ceilometer_password: {get_param: CeilometerPassword}
874         ceilometer_coordination_url:
875           list_join:
876             - ''
877             - - 'redis://'
878               - {get_param: RedisVirtualIP}
879               - ':6379'
880         ceilometer_dsn:
881           list_join:
882             - ''
883             - - 'mysql://ceilometer:unset@'
884               - {get_param: MysqlVirtualIP}
885               - '/ceilometer'
886         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
887         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
888         nova_password: {get_param: NovaPassword}
889         nova_dsn:
890           list_join:
891             - ''
892             - - 'mysql://nova:'
893               - {get_param: NovaPassword}
894               - '@'
895               - {get_param: MysqlVirtualIP}
896               - '/nova'
897         fencing_config: {get_param: FencingConfig}
898         pcsd_password: {get_param: PcsdPassword}
899         rabbit_username: {get_param: RabbitUserName}
900         rabbit_password: {get_param: RabbitPassword}
901         rabbit_cookie: {get_param: RabbitCookie}
902         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
903         rabbit_client_port: {get_param: RabbitClientPort}
904         mongodb_no_journal: {get_param: MongoDbNoJournal}
905         # We need to force this into quotes or hiera will return integer causing
906         # the puppet module validation regexp to fail.
907         # Remove when: https://github.com/puppetlabs/puppetlabs-rabbitmq/pull/401
908         rabbit_fd_limit:
909           str_replace:
910             template: "'LIMIT'"
911             params:
912               LIMIT: {get_param: RabbitFDLimit}
913         ntp_servers:
914           str_replace:
915             template: '["server"]'
916             params:
917               server: {get_param: NtpServer}
918         control_virtual_interface: {get_param: ControlVirtualInterface}
919         public_virtual_interface: {get_param: PublicVirtualInterface}
920         swift_hash_suffix: {get_param: SwiftHashSuffix}
921         swift_password: {get_param: SwiftPassword}
922         swift_part_power: {get_param: SwiftPartPower}
923         swift_replicas: {get_param: SwiftReplicas}
924         swift_min_part_hours: {get_param: SwiftMinPartHours}
925         swift_mount_check: {get_param: SwiftMountCheck}
926         enable_package_install: {get_param: EnablePackageInstall}
927         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
928         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
929         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
930         cinder_iscsi_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
931         cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
932         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
933         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
934         glance_api_servers:
935           list_join:
936             - ''
937             - - {get_param: GlanceProtocol}
938               - '://'
939               - {get_param: GlanceApiVirtualIP}
940               - ':'
941               - {get_param: GlancePort}
942         glance_registry_host: {get_param: GlanceRegistryVirtualIP}
943         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
944         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
945         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
946         mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
947         neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
948         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
949         ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
950         nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
951         nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
952         horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
953         rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
954         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
955         redis_vip: {get_param: RedisVirtualIP}
956         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
957         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
958         mysql_virtual_ip: {get_param: MysqlVirtualIP}
959         ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
960         ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
961         ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
962
963   # Map heat metadata into hiera datafiles
964   ControllerConfig:
965     type: OS::Heat::StructuredConfig
966     properties:
967       group: os-apply-config
968       config:
969         hiera:
970           hierarchy:
971             - '"%{::uuid}"'
972             - heat_config_%{::deploy_config_name}
973             - controller_extraconfig
974             - extraconfig
975             - controller
976             - database
977             - object
978             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
979             - ceph_cluster # provided by CephClusterConfig
980             - ceph
981             - bootstrap_node # provided by BootstrapNodeConfig
982             - all_nodes # provided by allNodesConfig
983             - vip_data # provided by vip-config
984             - '"%{::osfamily}"'
985             - common
986             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
987             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
988             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
989             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
990           datafiles:
991             controller_extraconfig:
992               mapped_data: {get_param: ControllerExtraConfig}
993             extraconfig:
994               mapped_data: {get_param: ExtraConfig}
995             common:
996               raw_data: {get_file: hieradata/common.yaml}
997             ceph:
998               raw_data: {get_file: hieradata/ceph.yaml}
999               mapped_data:
1000                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
1001                 ceph::profile::params::public_network: {get_input: ceph_public_network}
1002                 ceph::mon::public_addr: {get_input: ceph_public_ip}
1003             database:
1004               raw_data: {get_file: hieradata/database.yaml}
1005             object:
1006               raw_data: {get_file: hieradata/object.yaml}
1007             controller:
1008               raw_data: {get_file: hieradata/controller.yaml}
1009               mapped_data: # data supplied directly to this deployment configuration, etc
1010                 bootstack_nodeid: {get_input: bootstack_nodeid}
1011
1012                 # Pacemaker
1013                 enable_fencing: {get_input: enable_fencing}
1014                 hacluster_pwd: {get_input: pcsd_password}
1015                 tripleo::fencing::config: {get_input: fencing_config}
1016
1017                 # Swift
1018                 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
1019                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
1020                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
1021                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
1022                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
1023                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
1024                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
1025                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
1026                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
1027                 swift_mount_check: {get_input: swift_mount_check}
1028
1029                 # NOTE(dprince): build_ring support is currently not wired in.
1030                 # See: https://review.openstack.org/#/c/109225/
1031                 tripleo::ringbuilder::build_ring: True
1032
1033                 # Cinder
1034                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
1035                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
1036                 cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
1037                 cinder_nfs_servers: {get_input: cinder_nfs_servers}
1038                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
1039                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
1040                 cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
1041                 cinder::database_connection: {get_input: cinder_dsn}
1042                 cinder::api::keystone_password: {get_input: cinder_password}
1043                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
1044                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
1045                 cinder::api::bind_host: {get_input: cinder_api_network}
1046                 cinder::rabbit_userid: {get_input: rabbit_username}
1047                 cinder::rabbit_password: {get_input: rabbit_password}
1048                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1049                 cinder::rabbit_port: {get_input: rabbit_client_port}
1050                 cinder::debug: {get_input: debug}
1051                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
1052                 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
1053                 cinder_backend_config: {get_input: CinderBackendConfig}
1054                 cinder::db::mysql::password: {get_input: cinder_password}
1055
1056                 # Glance
1057                 glance::api::bind_port: {get_input: glance_port}
1058                 glance::api::bind_host: {get_input: glance_api_network}
1059                 glance::api::auth_uri: {get_input: keystone_auth_uri}
1060                 glance::api::identity_uri: {get_input: keystone_identity_uri}
1061                 glance::api::registry_host: {get_input: glance_registry_host}
1062                 glance::api::keystone_password: {get_input: glance_password}
1063                 glance::api::debug: {get_input: debug}
1064                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
1065                 glance_log_file: {get_input: glance_log_file}
1066                 glance_log_file: {get_input: glance_log_file}
1067                 glance::api::database_connection: {get_input: glance_dsn}
1068                 glance::registry::keystone_password: {get_input: glance_password}
1069                 glance::registry::database_connection: {get_input: glance_dsn}
1070                 glance::registry::bind_host: {get_input: glance_registry_network}
1071                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
1072                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
1073                 glance::registry::debug: {get_input: debug}
1074                 glance::backend::swift::swift_store_auth_address: {get_input: keystone_auth_address}
1075                 glance::backend::swift::swift_store_user: service:glance
1076                 glance::backend::swift::swift_store_key: {get_input: glance_password}
1077                 glance_backend: {get_input: glance_backend}
1078                 glance::db::mysql::password: {get_input: glance_password}
1079
1080                 # Heat
1081                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
1082                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
1083                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
1084                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
1085                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
1086                 heat::rabbit_userid: {get_input: rabbit_username}
1087                 heat::rabbit_password: {get_input: rabbit_password}
1088                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1089                 heat::rabbit_port: {get_input: rabbit_client_port}
1090                 heat::auth_uri: {get_input: keystone_auth_uri}
1091                 heat::keystone_ec2_uri: {get_input: keystone_ec2_uri}
1092                 heat::identity_uri: {get_input: keystone_identity_uri}
1093                 heat::keystone_password: {get_input: heat_password}
1094                 heat::api::bind_host: {get_input: heat_api_network}
1095                 heat::api_cloudwatch::bind_host: {get_input: heat_api_network}
1096                 heat::api_cfn::bind_host: {get_input: heat_api_network}
1097                 heat::database_connection: {get_input: heat_dsn}
1098                 heat::debug: {get_input: debug}
1099                 heat::db::mysql::password: {get_input: heat_password}
1100
1101                 # Keystone
1102                 keystone::admin_token: {get_input: admin_token}
1103                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
1104                 keystone_signing_key: {get_input: keystone_signing_key}
1105                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
1106                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
1107                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
1108                 keystone::database_connection: {get_input: keystone_dsn}
1109                 keystone::public_bind_host: {get_input: keystone_public_api_network}
1110                 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
1111                 keystone::debug: {get_input: debug}
1112                 keystone::db::mysql::password: {get_input: admin_token}
1113                 keystone::rabbit_userid: {get_input: rabbit_username}
1114                 keystone::rabbit_password: {get_input: rabbit_password}
1115                 keystone::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1116                 keystone::rabbit_port: {get_input: rabbit_client_port}
1117                 keystone::notification_driver: {get_input: keystone_notification_driver}
1118                 keystone::notification_format: {get_input: keystone_notification_format}
1119                 # MongoDB
1120                 mongodb::server::bind_ip: {get_input: mongo_db_network}
1121                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
1122                 # MySQL
1123                 admin_password: {get_input: admin_password}
1124                 enable_galera: {get_input: enable_galera}
1125                 enable_ceph_storage: {get_input: enable_ceph_storage}
1126                 enable_swift_storage: {get_input: enable_swift_storage}
1127                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
1128                 mysql_max_connections: {get_input: mysql_max_connections}
1129                 mysql::server::root_password: {get_input: mysql_root_password}
1130                 mysql_cluster_name: {get_input: mysql_cluster_name}
1131                 mysql_bind_host: {get_input: mysql_network}
1132                 mysql_virtual_ip: {get_input: mysql_virtual_ip}
1133
1134                 # Neutron
1135                 neutron::bind_host: {get_input: neutron_api_network}
1136                 neutron::rabbit_password: {get_input: rabbit_password}
1137                 neutron::rabbit_user: {get_input: rabbit_user}
1138                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1139                 neutron::rabbit_port: {get_input: rabbit_client_port}
1140                 neutron::debug: {get_input: debug}
1141                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
1142                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
1143                 neutron::server::database_connection: {get_input: neutron_dsn}
1144                 neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
1145                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
1146                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
1147                 neutron_flat_networks: {get_input: neutron_flat_networks}
1148                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1149                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
1150                 neutron_agent_mode: {get_input: neutron_agent_mode}
1151                 neutron_router_distributed: {get_input: neutron_router_distributed}
1152                 neutron::core_plugin: {get_input: neutron_core_plugin}
1153                 neutron::service_plugins: {get_input: neutron_service_plugins}
1154                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
1155                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
1156                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
1157                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
1158                 neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
1159                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
1160                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
1161                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
1162                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
1163                 neutron_public_interface: {get_input: neutron_public_interface}
1164                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
1165                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
1166                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
1167                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
1168                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
1169                 neutron::server::auth_password: {get_input: neutron_password}
1170                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
1171                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
1172                 neutron_dsn: {get_input: neutron_dsn}
1173                 neutron::agents::metadata::auth_url: {get_input: keystone_identity_uri}
1174                 neutron::db::mysql::password: {get_input: neutron_password}
1175
1176                 # Ceilometer
1177                 ceilometer_backend: {get_input: ceilometer_backend}
1178                 ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
1179                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
1180                 ceilometer::rabbit_userid: {get_input: rabbit_username}
1181                 ceilometer::rabbit_password: {get_input: rabbit_password}
1182                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1183                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
1184                 ceilometer::debug: {get_input: debug}
1185                 ceilometer::api::host: {get_input: ceilometer_api_network}
1186                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
1187                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1188                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1189                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
1190                 ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address}
1191                 ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
1192                 ceilometer::db::mysql::password: {get_input: ceilometer_password}
1193                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
1194                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
1195
1196                 # Nova
1197                 nova::rabbit_userid: {get_input: rabbit_username}
1198                 nova::rabbit_password: {get_input: rabbit_password}
1199                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1200                 nova::rabbit_port: {get_input: rabbit_client_port}
1201                 nova::debug: {get_input: debug}
1202                 nova::api::auth_uri: {get_input: keystone_auth_uri}
1203                 nova::api::identity_uri: {get_input: keystone_identity_uri}
1204                 nova::api::api_bind_address: {get_input: nova_api_network}
1205                 nova::api::metadata_listen: {get_input: nova_metadata_network}
1206                 nova::api::admin_password: {get_input: nova_password}
1207                 nova::database_connection: {get_input: nova_dsn}
1208                 nova::glance_api_servers: {get_input: glance_api_servers}
1209                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1210                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
1211                 nova::network::neutron::neutron_url: {get_input: neutron_url}
1212                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
1213                 nova::vncproxy::host: {get_input: nova_api_network}
1214                 nova::db::mysql::password: {get_input: nova_password}
1215
1216                 # Horizon
1217                 apache::ip: {get_input: horizon_network}
1218                 horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
1219                 horizon::django_debug: {get_input: debug}
1220                 horizon::secret_key: {get_input: horizon_secret}
1221                 horizon::bind_address: {get_input: horizon_network}
1222                 horizon::keystone_url: {get_input: keystone_auth_uri}
1223
1224                 # Rabbit
1225                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
1226                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
1227                 rabbitmq::file_limit: {get_input: rabbit_fd_limit}
1228                 # Redis
1229                 redis::bind: {get_input: redis_network}
1230                 redis_vip: {get_input: redis_vip}
1231                 # Misc
1232                 memcached::listen_ip: {get_input: memcached_network}
1233                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
1234                 ntp::servers: {get_input: ntp_servers}
1235                 control_virtual_interface: {get_input: control_virtual_interface}
1236                 public_virtual_interface: {get_input: public_virtual_interface}
1237                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
1238                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
1239                 tripleo::packages::enable_install: {get_input: enable_package_install}
1240                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
1241
1242   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
1243   ControllerExtraConfigPre:
1244     depends_on: ControllerDeployment
1245     type: OS::TripleO::ControllerExtraConfigPre
1246     properties:
1247         server: {get_resource: Controller}
1248
1249   # Hook for site-specific additional pre-deployment config,
1250   # applying to all nodes, e.g node registration/unregistration
1251   NodeExtraConfig:
1252     depends_on: ControllerExtraConfigPre
1253     type: OS::TripleO::NodeExtraConfig
1254     properties:
1255         server: {get_resource: Controller}
1256
1257   UpdateConfig:
1258     type: OS::TripleO::Tasks::PackageUpdate
1259
1260   UpdateDeployment:
1261     type: OS::Heat::SoftwareDeployment
1262     properties:
1263       config: {get_resource: UpdateConfig}
1264       server: {get_resource: Controller}
1265       input_values:
1266         update_identifier:
1267           get_param: UpdateIdentifier
1268
1269 outputs:
1270   ip_address:
1271     description: IP address of the server in the ctlplane network
1272     value: {get_attr: [Controller, networks, ctlplane, 0]}
1273   external_ip_address:
1274     description: IP address of the server in the external network
1275     value: {get_attr: [ExternalPort, ip_address]}
1276   internal_api_ip_address:
1277     description: IP address of the server in the internal_api network
1278     value: {get_attr: [InternalApiPort, ip_address]}
1279   storage_ip_address:
1280     description: IP address of the server in the storage network
1281     value: {get_attr: [StoragePort, ip_address]}
1282   storage_mgmt_ip_address:
1283     description: IP address of the server in the storage_mgmt network
1284     value: {get_attr: [StorageMgmtPort, ip_address]}
1285   tenant_ip_address:
1286     description: IP address of the server in the tenant network
1287     value: {get_attr: [TenantPort, ip_address]}
1288   hostname:
1289     description: Hostname of the server
1290     value: {get_attr: [Controller, name]}
1291   corosync_node:
1292     description: >
1293       Node object in the format {ip: ..., name: ...} format that the corosync
1294       element expects
1295     value:
1296       ip: {get_attr: [Controller, networks, ctlplane, 0]}
1297       name: {get_attr: [Controller, name]}
1298   hosts_entry:
1299     description: >
1300       Server's IP address and hostname in the /etc/hosts format
1301     value:
1302       str_replace:
1303         template: IP HOST.localdomain HOST CLOUDNAME
1304         params:
1305           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
1306           HOST: {get_attr: [Controller, name]}
1307           CLOUDNAME: {get_param: CloudName}
1308   nova_server_resource:
1309     description: Heat resource handle for the Nova compute server
1310     value:
1311       {get_resource: Controller}
1312   swift_device:
1313     description: Swift device formatted for swift-ring-builder
1314     value:
1315       str_replace:
1316         template: 'r1z1-IP:%PORT%/d1'
1317         params:
1318           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1319   swift_proxy_memcache:
1320     description: Swift proxy-memcache value
1321     value:
1322       str_replace:
1323         template: "IP:11211"
1324         params:
1325           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1326   config_identifier:
1327     description: identifier which changes if the controller configuration may need re-applying
1328     value:
1329       list_join:
1330         - ','
1331         - - {get_attr: [ControllerDeployment, deploy_stdout]}
1332           - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
1333           - {get_param: UpdateIdentifier}