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