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