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