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