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