Remove Nova EC2 deployment
[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         fencing_config: {get_param: FencingConfig}
1120         pcsd_password: {get_param: PcsdPassword}
1121         rabbit_username: {get_param: RabbitUserName}
1122         rabbit_password: {get_param: RabbitPassword}
1123         rabbit_cookie: {get_param: RabbitCookie}
1124         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
1125         rabbit_client_port: {get_param: RabbitClientPort}
1126         rabbit_ipv6: {get_param: RabbitIPv6}
1127         rabbit_fd_limit: {get_param: RabbitFDLimit}
1128         mongodb_no_journal: {get_param: MongoDbNoJournal}
1129         mongodb_ipv6: {get_param: MongoDbIPv6}
1130         ntp_servers: {get_param: NtpServer}
1131         timezone: {get_param: TimeZone}
1132         control_virtual_interface: {get_param: ControlVirtualInterface}
1133         public_virtual_interface: {get_param: PublicVirtualInterface}
1134         swift_hash_suffix: {get_param: SwiftHashSuffix}
1135         swift_password: {get_param: SwiftPassword}
1136         swift_part_power: {get_param: SwiftPartPower}
1137         swift_ring_build: {get_param: SwiftRingBuild}
1138         swift_replicas: {get_param: SwiftReplicas}
1139         swift_min_part_hours: {get_param: SwiftMinPartHours}
1140         swift_mount_check: {get_param: SwiftMountCheck}
1141         swift_public_url: {get_param: [EndpointMap, SwiftPublic, uri]}
1142         swift_internal_url: {get_param: [EndpointMap, SwiftInternal, uri]}
1143         swift_admin_url: {get_param: [EndpointMap, SwiftAdmin, uri]}
1144         swift_public_url_s3: {get_param: [EndpointMap, SwiftS3Public, uri]}
1145         swift_internal_url_s3: {get_param: [EndpointMap, SwiftS3Internal, uri]}
1146         swift_admin_url_s3: {get_param: [EndpointMap, SwiftS3Admin, uri]}
1147         enable_package_install: {get_param: EnablePackageInstall}
1148         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
1149         sahara_password: {get_param: SaharaPassword}
1150         sahara_public_url: {get_param: [EndpointMap, SaharaPublic, uri]}
1151         sahara_internal_url: {get_param: [EndpointMap, SaharaInternal, uri]}
1152         sahara_admin_url: {get_param: [EndpointMap, SaharaAdmin, uri]}
1153         sahara_dsn:
1154           list_join:
1155             - ''
1156             - - 'mysql://sahara:'
1157               - {get_param: SaharaPassword}
1158               - '@'
1159               - {get_param: MysqlVirtualIPUri}
1160               - '/sahara'
1161         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1162         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1163         cinder_iscsi_network:
1164           str_replace:
1165             template: "'IP'"
1166             params:
1167               IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
1168         cinder_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1169         glance_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1170         glance_registry_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1171         glance_api_servers: { get_param: [EndpointMap, GlanceInternal, uri]}
1172         heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1173         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1174         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1175         keystone_region: {get_param: KeystoneRegion}
1176         mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
1177         neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1178         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
1179         ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1180         aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1181         gnocchi_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1182         nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1183         nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1184         horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1185         horizon_subnet:
1186           str_replace:
1187             template: "['SUBNET']"
1188             params:
1189               SUBNET: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1190         rabbitmq_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1191         redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
1192         redis_password: {get_param: RedisPassword}
1193         redis_vip: {get_param: RedisVirtualIP}
1194         sahara_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1195         memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1196         mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1197         mysql_virtual_ip: {get_param: MysqlVirtualIP}
1198         ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
1199         ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1200         ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1201
1202   # Map heat metadata into hiera datafiles
1203   ControllerConfig:
1204     type: OS::Heat::StructuredConfig
1205     properties:
1206       group: os-apply-config
1207       config:
1208         hiera:
1209           hierarchy:
1210             - '"%{::uuid}"'
1211             - heat_config_%{::deploy_config_name}
1212             - controller_extraconfig
1213             - extraconfig
1214             - service_configs
1215             - controller
1216             - database
1217             - object
1218             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
1219             - ceph_cluster # provided by CephClusterConfig
1220             - ceph
1221             - bootstrap_node # provided by BootstrapNodeConfig
1222             - all_nodes # provided by allNodesConfig
1223             - vip_data # provided by vip-config
1224             - '"%{::osfamily}"'
1225             - common
1226             - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
1227             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
1228             - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
1229             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
1230             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
1231             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
1232             - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
1233             - midonet_data #Optionally provided by AllNodesExtraConfig
1234             - neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
1235             - neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
1236           merge_behavior: deeper
1237           datafiles:
1238             service_configs:
1239               mapped_data: {get_param: ServiceConfigSettings}
1240             controller_extraconfig:
1241               mapped_data:
1242                 map_merge:
1243                   - {get_param: controllerExtraConfig}
1244                   - {get_param: ControllerExtraConfig}
1245             extraconfig:
1246               mapped_data: {get_param: ExtraConfig}
1247             common:
1248               raw_data: {get_file: hieradata/common.yaml}
1249             ceph:
1250               raw_data: {get_file: hieradata/ceph.yaml}
1251               mapped_data:
1252                 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
1253                 ceph::profile::params::public_network: {get_input: ceph_public_network}
1254                 ceph::profile::params::public_addr: {get_input: ceph_public_ip}
1255             database:
1256               raw_data: {get_file: hieradata/database.yaml}
1257             object:
1258               raw_data: {get_file: hieradata/object.yaml}
1259             controller:
1260               raw_data: {get_file: hieradata/controller.yaml}
1261               mapped_data: # data supplied directly to this deployment configuration, etc
1262                 bootstack_nodeid: {get_input: bootstack_nodeid}
1263
1264                 # Pacemaker
1265                 enable_fencing: {get_input: enable_fencing}
1266                 enable_load_balancer: {get_input: enable_load_balancer}
1267                 hacluster_pwd: {get_input: pcsd_password}
1268                 corosync_ipv6: {get_input: corosync_ipv6}
1269                 tripleo::fencing::config: {get_input: fencing_config}
1270
1271                 # Swift
1272                 swift::proxy::proxy_local_net_ip: {get_input: swift_proxy_network}
1273                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
1274                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
1275                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
1276                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
1277                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
1278                 swift::proxy::workers: {get_input: swift_workers}
1279                 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
1280                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
1281                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
1282                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
1283                 swift_mount_check: {get_input: swift_mount_check}
1284                 swift::keystone::auth::public_url: {get_input: swift_public_url }
1285                 swift::keystone::auth::internal_url: {get_input: swift_internal_url }
1286                 swift::keystone::auth::admin_url: {get_input: swift_admin_url }
1287                 swift::keystone::auth::public_url_s3: {get_input: swift_public_url_v3 }
1288                 swift::keystone::auth::internal_url_s3: {get_input: swift_internal_url_v3 }
1289                 swift::keystone::auth::admin_url_s3: {get_input: swift_admin_url_v3 }
1290                 swift::keystone::auth::password: {get_input: swift_password }
1291                 swift::keystone::auth::region: {get_input: keystone_region}
1292
1293                 # Cinder
1294                 cinder_enable_db_purge: {get_input: cinder_enable_db_purge}
1295                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
1296                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
1297                 cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
1298                 cinder_nfs_servers: {get_input: cinder_nfs_servers}
1299                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
1300                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
1301                 cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
1302                 cinder::database_connection: {get_input: cinder_dsn}
1303                 cinder::api::keystone_password: {get_input: cinder_password}
1304                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
1305                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
1306                 cinder::api::bind_host: {get_input: cinder_api_network}
1307                 cinder::rabbit_userid: {get_input: rabbit_username}
1308                 cinder::rabbit_password: {get_input: rabbit_password}
1309                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1310                 cinder::rabbit_port: {get_input: rabbit_client_port}
1311                 cinder::debug: {get_input: debug}
1312                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
1313                 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
1314                 cinder_backend_config: {get_input: CinderBackendConfig}
1315                 cinder::db::mysql::password: {get_input: cinder_password}
1316                 cinder::keystone::auth::public_url: {get_input: cinder_public_url }
1317                 cinder::keystone::auth::internal_url: {get_input: cinder_internal_url }
1318                 cinder::keystone::auth::admin_url: {get_input: cinder_admin_url }
1319                 cinder::keystone::auth::public_url_v2: {get_input: cinder_public_url_v2 }
1320                 cinder::keystone::auth::internal_url_v2: {get_input: cinder_internal_url_v2 }
1321                 cinder::keystone::auth::admin_url_v2: {get_input: cinder_admin_url_v2 }
1322                 cinder::keystone::auth::password: {get_input: cinder_password }
1323                 cinder::keystone::auth::region: {get_input: keystone_region}
1324
1325                 # Glance
1326                 glance::api::bind_host: {get_input: glance_api_network}
1327                 glance::registry::bind_host: {get_input: glance_registry_network}
1328                 glance::keystone::auth::region: {get_input: keystone_region}
1329
1330                 # Heat
1331                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
1332                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
1333                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
1334                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
1335                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
1336                 heat::rabbit_userid: {get_input: rabbit_username}
1337                 heat::rabbit_password: {get_input: rabbit_password}
1338                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1339                 heat::rabbit_port: {get_input: rabbit_client_port}
1340                 heat::auth_uri: {get_input: keystone_auth_uri}
1341                 heat::keystone_ec2_uri: {get_input: keystone_ec2_uri}
1342                 heat::identity_uri: {get_input: keystone_identity_uri}
1343                 heat::keystone_password: {get_input: heat_password}
1344                 heat::api::bind_host: {get_input: heat_api_network}
1345                 heat::api::workers: {get_input: heat_workers}
1346                 heat::api_cloudwatch::bind_host: {get_input: heat_api_network}
1347                 heat::api_cloudwatch::workers: {get_input: heat_workers}
1348                 heat::api_cfn::bind_host: {get_input: heat_api_network}
1349                 heat::api_cfn::workers: {get_input: heat_workers}
1350                 heat::engine::num_engine_workers: {get_input: heat_workers}
1351                 heat::database_connection: {get_input: heat_dsn}
1352                 heat::debug: {get_input: debug}
1353                 heat::db::mysql::password: {get_input: heat_password}
1354                 heat_enable_db_purge: {get_input: heat_enable_db_purge}
1355                 heat::keystone::domain::domain_password: {get_input: heat_stack_domain_admin_password}
1356                 heat::keystone::auth::public_url: {get_input: heat_public_url }
1357                 heat::keystone::auth::internal_url: {get_input: heat_internal_url }
1358                 heat::keystone::auth::admin_url: {get_input: heat_admin_url }
1359                 heat::keystone::auth::password: {get_input: heat_password }
1360                 heat::keystone::auth::region: {get_input: keystone_region}
1361
1362                 # Keystone
1363                 keystone::admin_bind_host: {get_input: keystone_admin_api_network}
1364                 keystone::public_bind_host: {get_input: keystone_public_api_network}
1365                 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
1366                 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
1367                 # MongoDB
1368                 mongodb::server::bind_ip: {get_input: mongo_db_network}
1369                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
1370                 mongodb::server::ipv6: {get_input: mongodb_ipv6}
1371                 # MySQL
1372                 admin_password: {get_input: admin_password}
1373                 enable_galera: {get_input: enable_galera}
1374                 enable_ceph_storage: {get_input: enable_ceph_storage}
1375                 enable_swift_storage: {get_input: enable_swift_storage}
1376                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
1377                 mysql_max_connections: {get_input: mysql_max_connections}
1378                 mysql::server::root_password: {get_input: mysql_root_password}
1379                 mysql_cluster_name: {get_input: mysql_cluster_name}
1380                 mysql_bind_host: {get_input: mysql_network}
1381                 mysql_virtual_ip: {get_input: mysql_virtual_ip}
1382
1383                 # Neutron
1384                 neutron::bind_host: {get_input: neutron_api_network}
1385                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
1386                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
1387                 neutron::server::database_connection: {get_input: neutron_dsn}
1388                 neutron::server::api_workers: {get_input: neutron_workers}
1389                 neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
1390                 neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
1391                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
1392                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
1393                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
1394                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
1395                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1396                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
1397                 neutron::agents::metadata::metadata_workers: {get_input: neutron_workers}
1398                 neutron_agent_mode: {get_input: neutron_agent_mode}
1399                 neutron_router_distributed: {get_input: neutron_router_distributed}
1400                 neutron::core_plugin: {get_input: neutron_core_plugin}
1401                 neutron::service_plugins: {get_input: neutron_service_plugins}
1402                 neutron::enable_l3_agent: {get_input: neutron_enable_l3_agent}
1403                 neutron::enable_metadata_agent: {get_input: neutron_enable_metadata_agent}
1404                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
1405                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
1406                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
1407                 neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
1408                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
1409                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
1410                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
1411                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
1412                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
1413                 neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
1414                 neutron_public_interface: {get_input: neutron_public_interface}
1415                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
1416                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
1417                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
1418                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
1419                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
1420                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
1421                 neutron::server::auth_password: {get_input: neutron_password}
1422                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
1423                 neutron_dsn: {get_input: neutron_dsn}
1424                 neutron::agents::metadata::auth_url: {get_input: keystone_identity_uri}
1425                 neutron::db::mysql::password: {get_input: neutron_password}
1426                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
1427                 neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
1428                 neutron::keystone::auth::admin_url: {get_input: neutron_admin_url }
1429                 neutron::keystone::auth::password: {get_input: neutron_password }
1430                 neutron::keystone::auth::region: {get_input: keystone_region}
1431                 neutron::server::notifications::nova_url: {get_input: nova_internal_url}
1432                 neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
1433                 neutron::server::notifications::tenant_name: 'service'
1434                 neutron::server::notifications::project_name: 'service'
1435                 neutron::server::notifications::password: {get_input: nova_password}
1436
1437                 # Ceilometer
1438                 ceilometer_backend: {get_input: ceilometer_backend}
1439                 ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
1440                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
1441                 ceilometer::rabbit_userid: {get_input: rabbit_username}
1442                 ceilometer::rabbit_password: {get_input: rabbit_password}
1443                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1444                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
1445                 ceilometer::debug: {get_input: debug}
1446                 ceilometer::api::host: {get_input: ceilometer_api_network}
1447                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
1448                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1449                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1450                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
1451                 ceilometer::agent::auth::auth_url: {get_input: keystone_auth_uri}
1452                 ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
1453                 ceilometer::agent::notification::store_events: {get_input: ceilometer_store_events}
1454                 ceilometer::db::mysql::password: {get_input: ceilometer_password}
1455                 ceilometer::collector::meter_dispatcher: {get_input: ceilometer_meter_dispatcher}
1456                 ceilometer::dispatcher::gnocchi::url: {get_input: gnocchi_internal_url }
1457                 ceilometer::dispatcher::gnocchi::filter_project: 'service'
1458                 ceilometer::dispatcher::gnocchi::archive_policy: 'low'
1459                 ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
1460                 ceilometer::keystone::auth::public_url: {get_input: ceilometer_public_url }
1461                 ceilometer::keystone::auth::internal_url: {get_input: ceilometer_internal_url }
1462                 ceilometer::keystone::auth::admin_url: {get_input: ceilometer_admin_url }
1463                 ceilometer::keystone::auth::password: {get_input: ceilometer_password }
1464                 ceilometer::keystone::auth::region: {get_input: keystone_region}
1465                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
1466                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
1467
1468                 # Aodh
1469                 aodh::rabbit_userid: {get_input: rabbit_username}
1470                 aodh::rabbit_password: {get_input: rabbit_password}
1471                 aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1472                 aodh::rabbit_port: {get_input: rabbit_client_port}
1473                 aodh::debug: {get_input: debug}
1474                 aodh::wsgi::apache::ssl: false
1475                 aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
1476                 aodh::api::service_name: 'httpd'
1477                 aodh::api::host: {get_input: aodh_api_network}
1478                 aodh::api::keystone_password: {get_input: aodh_password}
1479                 aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1480                 aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1481                 aodh::auth::auth_password: {get_input: aodh_password}
1482                 aodh::db::mysql::password: {get_input: aodh_password}
1483                 # for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
1484                 aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
1485                 aodh::keystone::auth::public_url: {get_input: aodh_public_url }
1486                 aodh::keystone::auth::internal_url: {get_input: aodh_internal_url }
1487                 aodh::keystone::auth::admin_url: {get_input: aodh_admin_url }
1488                 aodh::keystone::auth::password: {get_input: aodh_password }
1489                 aodh::keystone::auth::region: {get_input: keystone_region}
1490
1491                 # Gnocchi
1492                 gnocchi_backend: {get_input: gnocchi_backend}
1493                 gnocchi_indexer_backend: {get_input: gnocchi_indexer_backend}
1494                 gnocchi_mysql_conn_string: {get_input: gnocchi_dsn}
1495                 gnocchi::debug: {get_input: debug}
1496                 gnocchi::wsgi::apache::ssl: false
1497                 gnocchi::wsgi::apache::bind_host: {get_input: gnocchi_api_network}
1498                 gnocchi::api::service_name: 'httpd'
1499                 gnocchi::api::host: {get_input: gnocchi_api_network}
1500                 gnocchi::api::keystone_password: {get_input: gnocchi_password}
1501                 gnocchi::api::keystone_auth_uri: {get_input: keystone_auth_uri}
1502                 gnocchi::api::keystone_identity_uri: {get_input: keystone_identity_uri}
1503                 gnocchi::db::mysql::password: {get_input: gnocchi_password}
1504                 gnocchi::storage::swift::swift_authurl: {get_input: keystone_auth_uri}
1505                 gnocchi::storage::swift::swift_key: {get_input: gnocchi_password}
1506                 gnocchi::keystone::auth::public_url: {get_input: gnocchi_public_url }
1507                 gnocchi::keystone::auth::internal_url: {get_input: gnocchi_internal_url }
1508                 gnocchi::keystone::auth::admin_url: {get_input: gnocchi_admin_url }
1509                 gnocchi::keystone::auth::password: {get_input: gnocchi_password }
1510                 gnocchi::keystone::auth::region: {get_input: keystone_region}
1511
1512                 # Nova
1513                 nova::rabbit_userid: {get_input: rabbit_username}
1514                 nova::rabbit_password: {get_input: rabbit_password}
1515                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1516                 nova::rabbit_port: {get_input: rabbit_client_port}
1517                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
1518                 nova::debug: {get_input: debug}
1519                 nova::use_ipv6: {get_input: nova_ipv6}
1520                 nova::api::auth_uri: {get_input: keystone_auth_uri}
1521                 nova::api::identity_uri: {get_input: keystone_identity_uri}
1522                 nova::api::api_bind_address: {get_input: nova_api_network}
1523                 nova::api::metadata_listen: {get_input: nova_metadata_network}
1524                 nova::api::admin_password: {get_input: nova_password}
1525                 nova::api::osapi_compute_workers: {get_input: nova_workers}
1526                 nova::api::metadata_workers: {get_input: nova_workers}
1527                 nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
1528                 nova::database_connection: {get_input: nova_dsn}
1529                 nova::api_database_connection: {get_input: nova_api_dsn}
1530                 nova::glance_api_servers: {get_input: glance_api_servers}
1531                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
1532                 nova::api::instance_name_template: {get_input: instance_name_template}
1533                 nova::network::neutron::neutron_password: {get_input: neutron_password}
1534                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
1535                 nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
1536                 nova::vncproxy::host: {get_input: nova_api_network}
1537                 nova::db::mysql::password: {get_input: nova_password}
1538                 nova::db::mysql_api::password: {get_input: nova_password}
1539                 nova_enable_db_purge: {get_input: nova_enable_db_purge}
1540                 nova::keystone::auth::public_url: {get_input: nova_public_url}
1541                 nova::keystone::auth::internal_url: {get_input: nova_internal_url}
1542                 nova::keystone::auth::admin_url: {get_input: nova_admin_url}
1543                 nova::keystone::auth::password: {get_input: nova_password }
1544                 nova::keystone::auth::region: {get_input: keystone_region}
1545
1546                 # Horizon
1547                 apache::mod::remoteip::proxy_ips: {get_input: horizon_subnet}
1548                 apache::ip: {get_input: horizon_network}
1549                 horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
1550                 horizon::django_debug: {get_input: debug}
1551                 horizon::secret_key: {get_input: horizon_secret}
1552                 horizon::bind_address: {get_input: horizon_network}
1553                 horizon::keystone_url: {get_input: keystone_auth_uri}
1554
1555                 # Sahara
1556                 sahara::host: {get_input: sahara_api_network}
1557                 sahara::plugins:
1558                   - cdh
1559                   - hdp
1560                   - mapr
1561                   - vanilla
1562                   - spark
1563                   - storm
1564                 sahara::admin_password: {get_input: sahara_password}
1565                 sahara::auth_uri: {get_input: keystone_auth_uri}
1566                 sahara::admin_user: sahara
1567                 sahara::identity_uri: {get_input: keystone_identity_uri}
1568                 sahara::use_neutron: true
1569                 sahara::database_connection: {get_input: sahara_dsn}
1570                 sahara::debug: {get_input: debug}
1571                 sahara::rpc_backend: rabbit
1572                 sahara::rabbit_userid: {get_input: rabbit_username}
1573                 sahara::rabbit_password: {get_input: rabbit_password}
1574                 sahara::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
1575                 sahara::rabbit_port: {get_input: rabbit_client_port}
1576                 sahara::db::mysql::password: {get_input: sahara_password}
1577                 sahara::keystone::auth::public_url: {get_input: sahara_public_url }
1578                 sahara::keystone::auth::internal_url: {get_input: sahara_internal_url }
1579                 sahara::keystone::auth::admin_url: {get_input: sahara_admin_url }
1580                 sahara::keystone::auth::password: {get_input: sahara_password }
1581                 sahara::keystone::auth::region: {get_input: keystone_region}
1582
1583                 # Rabbit
1584                 rabbitmq::node_ip_address: {get_input: rabbitmq_network}
1585                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
1586                 rabbitmq::file_limit: {get_input: rabbit_fd_limit}
1587                 rabbitmq::default_user: {get_input: rabbit_username}
1588                 rabbitmq::default_pass: {get_input: rabbit_password}
1589                 rabbit_ipv6: {get_input: rabbit_ipv6}
1590                 # Redis
1591                 redis::bind: {get_input: redis_network}
1592                 redis::requirepass: {get_input: redis_password}
1593                 redis::masterauth: {get_input: redis_password}
1594                 redis::sentinel_auth_pass: {get_input: redis_password}
1595                 redis_vip: {get_input: redis_vip}
1596                 # Firewall
1597                 tripleo::firewall::manage_firewall: {get_input: manage_firewall}
1598                 tripleo::firewall::purge_firewall_rules: {get_input: purge_firewall_rules}
1599                 # Misc
1600                 memcached_ipv6: {get_input: memcached_ipv6}
1601                 memcached::listen_ip: {get_input: memcached_network}
1602                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
1603                 ntp::servers: {get_input: ntp_servers}
1604                 timezone::timezone: {get_input: timezone}
1605                 control_virtual_interface: {get_input: control_virtual_interface}
1606                 public_virtual_interface: {get_input: public_virtual_interface}
1607                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
1608                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
1609                 tripleo::loadbalancer::haproxy_log_address: {get_input: haproxy_log_address}
1610                 tripleo::loadbalancer::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
1611                 tripleo::loadbalancer::haproxy_stats_user: {get_input: haproxy_stats_user}
1612                 tripleo::loadbalancer::haproxy_stats_password: {get_input: haproxy_stats_password}
1613                 tripleo::loadbalancer::redis_password: {get_input: redis_password}
1614                 tripleo::packages::enable_install: {get_input: enable_package_install}
1615                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
1616
1617   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
1618   ControllerExtraConfigPre:
1619     depends_on: ControllerDeployment
1620     type: OS::TripleO::ControllerExtraConfigPre
1621     properties:
1622         server: {get_resource: Controller}
1623
1624   # Hook for site-specific additional pre-deployment config,
1625   # applying to all nodes, e.g node registration/unregistration
1626   NodeExtraConfig:
1627     depends_on: [ControllerExtraConfigPre, NodeTLSData]
1628     type: OS::TripleO::NodeExtraConfig
1629     properties:
1630         server: {get_resource: Controller}
1631
1632   UpdateConfig:
1633     type: OS::TripleO::Tasks::PackageUpdate
1634
1635   UpdateDeployment:
1636     type: OS::Heat::SoftwareDeployment
1637     properties:
1638       name: UpdateDeployment
1639       config: {get_resource: UpdateConfig}
1640       server: {get_resource: Controller}
1641       input_values:
1642         update_identifier:
1643           get_param: UpdateIdentifier
1644
1645 outputs:
1646   ip_address:
1647     description: IP address of the server in the ctlplane network
1648     value: {get_attr: [Controller, networks, ctlplane, 0]}
1649   external_ip_address:
1650     description: IP address of the server in the external network
1651     value: {get_attr: [ExternalPort, ip_address]}
1652   internal_api_ip_address:
1653     description: IP address of the server in the internal_api network
1654     value: {get_attr: [InternalApiPort, ip_address]}
1655   storage_ip_address:
1656     description: IP address of the server in the storage network
1657     value: {get_attr: [StoragePort, ip_address]}
1658   storage_mgmt_ip_address:
1659     description: IP address of the server in the storage_mgmt network
1660     value: {get_attr: [StorageMgmtPort, ip_address]}
1661   tenant_ip_address:
1662     description: IP address of the server in the tenant network
1663     value: {get_attr: [TenantPort, ip_address]}
1664   management_ip_address:
1665     description: IP address of the server in the management network
1666     value: {get_attr: [ManagementPort, ip_address]}
1667   hostname:
1668     description: Hostname of the server
1669     value: {get_attr: [Controller, name]}
1670   corosync_node:
1671     description: >
1672       Node object in the format {ip: ..., name: ...} format that the corosync
1673       element expects
1674     value:
1675       ip: {get_attr: [Controller, networks, ctlplane, 0]}
1676       name: {get_attr: [Controller, name]}
1677   hosts_entry:
1678     description: >
1679       Server's IP address and hostname in the /etc/hosts format
1680     value:
1681       str_replace:
1682         template: |
1683           PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
1684           EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
1685           INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
1686           STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
1687           STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
1688           TENANTIP TENANTHOST.DOMAIN TENANTHOST
1689           MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
1690         params:
1691           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
1692           DOMAIN: {get_param: CloudDomain}
1693           PRIMARYHOST: {get_attr: [Controller, name]}
1694           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
1695           EXTERNALHOST:
1696             list_join:
1697             - '.'
1698             - - {get_attr: [Controller, name]}
1699               - external
1700           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
1701           INTERNAL_APIHOST:
1702             list_join:
1703             - '.'
1704             - - {get_attr: [Controller, name]}
1705               - internalapi
1706           STORAGEIP: {get_attr: [StoragePort, ip_address]}
1707           STORAGEHOST:
1708             list_join:
1709             - '.'
1710             - - {get_attr: [Controller, name]}
1711               - storage
1712           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
1713           STORAGE_MGMTHOST:
1714             list_join:
1715             - '.'
1716             - - {get_attr: [Controller, name]}
1717               - storagemgmt
1718           TENANTIP: {get_attr: [TenantPort, ip_address]}
1719           TENANTHOST:
1720             list_join:
1721             - '.'
1722             - - {get_attr: [Controller, name]}
1723               - tenant
1724           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
1725           MANAGEMENTHOST:
1726             list_join:
1727             - '.'
1728             - - {get_attr: [Controller, name]}
1729               - management
1730   nova_server_resource:
1731     description: Heat resource handle for the Nova compute server
1732     value:
1733       {get_resource: Controller}
1734   swift_device:
1735     description: Swift device formatted for swift-ring-builder
1736     value:
1737       str_replace:
1738         template: 'r1z1-IP:%PORT%/d1'
1739         params:
1740           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
1741   swift_proxy_memcache:
1742     description: Swift proxy-memcache value
1743     value:
1744       str_replace:
1745         template: "IP:11211"
1746         params:
1747           IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1748   config_identifier:
1749     description: identifier which changes if the controller configuration may need re-applying
1750     value:
1751       list_join:
1752         - ','
1753         - - {get_attr: [ControllerDeployment, deploy_stdout]}
1754           - {get_attr: [NodeTLSCAData, deploy_stdout]}
1755           - {get_attr: [NodeTLSData, deploy_stdout]}
1756           - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
1757           - {get_param: UpdateIdentifier}
1758   tls_key_modulus_md5:
1759     description: MD5 checksum of the TLS Key Modulus
1760     value: {get_attr: [NodeTLSData, key_modulus_md5]}
1761   tls_cert_modulus_md5:
1762     description: MD5 checksum of the TLS Certificate Modulus
1763     value: {get_attr: [NodeTLSData, cert_modulus_md5]}