3c29989571597947bb16e91a8e4e532b8fe6d01c
[apex-tripleo-heat-templates.git] / puppet / controller-puppet.yaml
1 heat_template_version: 2014-10-16
2
3 description: >
4   OpenStack controller node configured by Puppet.
5
6 parameters:
7   AdminPassword:
8     default: unset
9     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
10     type: string
11     hidden: true
12   AdminToken:
13     default: unset
14     description: The keystone auth secret.
15     type: string
16     hidden: true
17   CeilometerMeteringSecret:
18     default: unset
19     description: Secret shared by the ceilometer services.
20     type: string
21     hidden: true
22   CeilometerPassword:
23     default: unset
24     description: The password for the ceilometer service account.
25     type: string
26     hidden: true
27   CinderEnableIscsiBackend:
28     default: true
29     description: Whether to enable or not the Iscsi backend for Cinder
30     type: boolean
31   CinderEnableRbdBackend:
32     default: false
33     description: Whether to enable or not the Rbd backend for Cinder
34     type: boolean
35   CinderISCSIHelper:
36     default: tgtadm
37     description: The iSCSI helper to use with cinder.
38     type: string
39   CinderLVMLoopDeviceSize:
40     default: 5000
41     description: The size of the loopback file used by the cinder LVM driver.
42     type: number
43   CinderPassword:
44     default: unset
45     description: The password for the cinder service account, used by cinder-api.
46     type: string
47     hidden: true
48   CloudName:
49     default: ''
50     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
51     type: string
52   ControllerExtraConfig:
53     default: {}
54     description: |
55       Controller specific configuration to inject into the cluster. Same
56       structure as ExtraConfig.
57     type: json
58   ControlVirtualInterface:
59     default: 'br-ex'
60     description: Interface where virtual ip will be assigned.
61     type: string
62   Debug:
63     default: ''
64     description: Set to True to enable debugging on all services.
65     type: string
66   ExtraConfig:
67     default: {}
68     description: |
69       Additional configuration to inject into the cluster. The JSON should have
70       the following structure:
71         {"FILEKEY":
72           {"config":
73             [{"section": "SECTIONNAME",
74               "values":
75                 [{"option": "OPTIONNAME",
76                   "value": "VALUENAME"
77                  }
78                 ]
79              }
80             ]
81           }
82         }
83       For instance:
84         {"nova":
85           {"config":
86             [{"section": "default",
87               "values":
88                 [{"option": "compute_manager",
89                   "value": "ironic.nova.compute.manager.ClusterComputeManager"
90                  }
91                 ]
92              },
93              {"section": "cells",
94               "values":
95                 [{"option": "driver",
96                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
97                  }
98                 ]
99              }
100             ]
101           }
102         }
103     type: json
104   Flavor:
105     description: Flavor for control nodes to request when deploying.
106     type: string
107     constraints:
108       - custom_constraint: nova.flavor
109   GlanceNotifierStrategy:
110     description: Strategy to use for Glance notification queue
111     type: string
112     default: noop
113   GlanceLogFile:
114     description: The filepath of the file to use for logging messages from Glance.
115     type: string
116     default: ''
117   GlancePassword:
118     default: unset
119     description: The password for the glance service account, used by the glance services.
120     type: string
121     hidden: true
122   GlancePort:
123     default: "9292"
124     description: Glance port.
125     type: string
126   GlanceProtocol:
127     default: http
128     description: Protocol to use when connecting to glance, set to https for SSL.
129     type: string
130   HeatPassword:
131     default: unset
132     description: The password for the Heat service account, used by the Heat services.
133     type: string
134     hidden: true
135   HeatStackDomainAdminPassword:
136     description: Password for heat_domain_admin user.
137     type: string
138     default: ''
139     hidden: true
140   HeatAuthEncryptionKey:
141     description: Auth encryption key for heat-engine
142     type: string
143   Image:
144     type: string
145     default: overcloud-control
146     constraints:
147       - custom_constraint: glance.image
148   ImageUpdatePolicy:
149     default: 'REBUILD_PRESERVE_EPHEMERAL'
150     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
151     type: string
152   KeyName:
153     default: default
154     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
155     type: string
156     constraints:
157       - custom_constraint: nova.keypair
158   KeystoneCACertificate:
159     default: ''
160     description: Keystone self-signed certificate authority certificate.
161     type: string
162   KeystoneSigningCertificate:
163     default: ''
164     description: Keystone certificate for verifying token validity.
165     type: string
166   KeystoneSigningKey:
167     default: ''
168     description: Keystone key for signing tokens.
169     type: string
170     hidden: true
171   KeystoneSSLCertificate:
172     default: ''
173     description: Keystone certificate for verifying token validity.
174     type: string
175   KeystoneSSLCertificateKey:
176     default: ''
177     description: Keystone key for signing tokens.
178     type: string
179     hidden: true
180   MysqlClusterUniquePart:
181     description: A unique identifier of the MySQL cluster the controller is in.
182     type: string
183     default: 'unset'  # Has to be here because of the ignored empty value bug
184     # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446
185     # constraints:
186     # - length: {min: 4, max: 10}
187   MysqlInnodbBufferPoolSize:
188     description: >
189         Specifies the size of the buffer pool in megabytes. Setting to
190         zero should be interpreted as "no value" and will defer to the
191         lower level default.
192     type: number
193     default: 0
194   MysqlRootPassword:
195     type: string
196     hidden: true
197     default: ''  # Has to be here because of the ignored empty value bug
198   NeutronBridgeMappings:
199     description: >
200       The OVS logical->physical bridge mappings to use. See the Neutron
201       documentation for details. Defaults to mapping br-ex - the external
202       bridge on hosts - to a physical name 'datacentre' which can be used
203       to create provider networks (and we use this for the default floating
204       network) - if changing this either use different post-install network
205       scripts or be sure to keep 'datacentre' as a mapping network name.
206     type: string
207     default: ""
208   NeutronDnsmasqOptions:
209     default: 'dhcp-option-force=26,1400'
210     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.
211     type: string
212   NeutronAgentMode:
213     default: 'dvr_snat'
214     description: Agent mode for the neutron-l3-agent on the controller hosts
215     type: string
216   NeutronL3HA: #FIXME this isn't wired in
217     default: 'False'
218     description: Whether to enable l3-agent HA
219     type: string
220   NeutronDVR:
221     default: 'False'
222     description: Whether to configure Neutron Distributed Virtual Routers
223     type: string
224   NeutronMetadataProxySharedSecret:
225     default: 'unset'
226     description: Shared secret to prevent spoofing
227     type: string
228   NeutronMechanismDrivers:
229     default: 'openvswitch'
230     description: |
231         The mechanism drivers for the Neutron tenant network. To specify multiple
232         values, use a comma separated string, like so: 'openvswitch,l2_population'
233     type: string
234   NeutronAllowL3AgentFailover:
235     default: 'True'
236     description: Allow automatic l3-agent failover
237     type: string
238   NeutronEnableTunnelling:
239     type: string
240     default: "True"
241   NeutronFlatNetworks:
242     type: string
243     default: ''
244     description: If set, flat networks to configure in neutron plugins.
245   NeutronL3HA:
246     default: 'False'
247     description: Whether to enable l3-agent HA
248     type: string
249   NeutronNetworkType:
250     default: 'gre'
251     description: The tenant network type for Neutron, either gre or vxlan.
252     type: string
253   NeutronNetworkVLANRanges:
254     default: 'datacentre'
255     description: >
256       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
257       Neutron documentation for permitted values. Defaults to permitting any
258       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
259     type: string
260   NeutronPassword:
261     default: unset
262     description: The password for the neutron service account, used by neutron agents.
263     type: string
264     hidden: true
265   NeutronPublicInterface:
266     default: nic1
267     description: What interface to bridge onto br-ex for network nodes.
268     type: string
269   NeutronPublicInterfaceTag:
270     default: ''
271     description: >
272       VLAN tag for creating a public VLAN. The tag will be used to
273       create an access port on the exterior bridge for each control plane node,
274       and that port will be given the IP address returned by neutron from the
275       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
276       overcloud.yaml to include the deployment of VLAN ports to the control
277       plane.
278     type: string
279   NeutronPublicInterfaceDefaultRoute:
280     default: ''
281     description: A custom default route for the NeutronPublicInterface.
282     type: string
283   NeutronPublicInterfaceIP:
284     default: ''
285     description: A custom IP address to put onto the NeutronPublicInterface.
286     type: string
287   NeutronPublicInterfaceRawDevice:
288     default: ''
289     description: If set, the public interface is a vlan with this device as the raw device.
290     type: string
291   NeutronTunnelTypes:
292     default: 'gre'
293     description: |
294         The tunnel types for the Neutron tenant network. To specify multiple
295         values, use a comma separated string, like so: 'gre,vxlan'
296     type: string
297   NovaPassword:
298     default: unset
299     description: The password for the nova service account, used by nova-api.
300     type: string
301     hidden: true
302   NtpServer:
303     type: string
304     default: ''
305   PublicVirtualInterface:
306     default: 'br-ex'
307     description: >
308         Specifies the interface where the public-facing virtual ip will be assigned.
309         This should be int_public when a VLAN is being used.
310     type: string
311   PublicVirtualIP:
312     type: string
313     default: ''  # Has to be here because of the ignored empty value bug
314   RabbitCookie:
315     type: string
316     default: ''  # Has to be here because of the ignored empty value bug
317     hidden: true
318   RabbitPassword:
319     default: guest
320     description: The password for RabbitMQ
321     type: string
322     hidden: true
323   RabbitUserName:
324     default: guest
325     description: The username for RabbitMQ
326     type: string
327   RabbitClientUseSSL:
328     default: false
329     description: >
330         Rabbit client subscriber parameter to specify
331         an SSL connection to the RabbitMQ host.
332     type: string
333   RabbitClientPort:
334     default: 5672
335     description: Set rabbit subscriber port, change this if using SSL
336     type: number
337   SnmpdReadonlyUserName:
338     default: ro_snmp_user
339     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
340     type: string
341   SnmpdReadonlyUserPassword:
342     default: unset
343     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
344     type: string
345     hidden: true
346   SSLCACertificate:
347     default: ''
348     description: If set, the contents of an SSL certificate authority file.
349     type: string
350   SSLCertificate:
351     default: ''
352     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
353     type: string
354     hidden: true
355   SSLKey:
356     default: ''
357     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
358     type: string
359     hidden: true
360   SwiftHashSuffix:
361     default: unset
362     description: A random string to be used as a salt when hashing to determine mappings
363       in the ring.
364     hidden: true
365     type: string
366   SwiftMountCheck:
367     default: 'false'
368     description: Value of mount_check in Swift account/container/object -server.conf
369     type: boolean
370   SwiftMinPartHours:
371     type: number
372     default: 1
373     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
374   SwiftPartPower:
375     default: 10
376     description: Partition Power to use when building Swift rings
377     type: number
378   SwiftPassword:
379     default: unset
380     description: The password for the swift service account, used by the swift proxy
381       services.
382     hidden: true
383     type: string
384   SwiftReplicas:
385     type: number
386     default: 3
387     description: How many replicas to use in the swift rings.
388   VirtualIP:
389     type: string
390     default: ''  # Has to be here because of the ignored empty value bug
391   EnablePackageInstall:
392     default: 'false'
393     description: Set to true to enable package installation via Puppet
394     type: boolean
395
396 resources:
397
398   Controller:
399     type: OS::Nova::Server
400     properties:
401       image: {get_param: Image}
402       image_update_policy: {get_param: ImageUpdatePolicy}
403       flavor: {get_param: Flavor}
404       key_name: {get_param: KeyName}
405       networks:
406         - network: ctlplane
407       user_data_format: SOFTWARE_CONFIG
408
409   NetworkConfig:
410     type: OS::TripleO::Net::SoftwareConfig
411
412   NetworkDeployment:
413     type: OS::TripleO::SoftwareDeployment
414     properties:
415       signal_transport: NO_SIGNAL
416       config: {get_attr: [NetworkConfig, config_id]}
417       server: {get_resource: Controller}
418       input_values:
419         bridge_name: br-ex
420         interface_name: {get_param: NeutronPublicInterface}
421
422   ControllerDeployment:
423     type: OS::TripleO::SoftwareDeployment
424     properties:
425       signal_transport: NO_SIGNAL
426       config: {get_resource: ControllerConfig}
427       server: {get_resource: Controller}
428       input_values:
429         bootstack_nodeid: {get_attr: [Controller, name]}
430         controller_host: {get_attr: [Controller, networks, ctlplane, 0]}
431         controller_virtual_ip: {get_param: VirtualIP}
432         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
433         heat.watch_server_url:
434           list_join:
435             - ''
436             - - 'http://'
437               - {get_param: VirtualIP}
438               - ':8003'
439         heat.metadata_server_url:
440           list_join:
441             - ''
442             - - 'http://'
443               - {get_param: VirtualIP}
444               - ':8000'
445         heat.waitcondition_server_url:
446           list_join:
447             - ''
448             - - 'http://'
449               - {get_param: VirtualIP}
450               - ':8000/v1/waitcondition'
451         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
452         admin_password: {get_param: AdminPassword}
453         admin_token: {get_param: AdminToken}
454         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
455         debug: {get_param: Debug}
456         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
457         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
458         cinder_password: {get_param: CinderPassword}
459         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
460         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
461         cinder_dsn:
462           list_join:
463             - ''
464             - - 'mysql://cinder:unset@'
465               - {get_param: VirtualIP}
466               - '/cinder'
467         glance_port: {get_param: GlancePort}
468         glance_protocol: {get_param: GlanceProtocol}
469         glance_password: {get_param: GlancePassword}
470         glance_swift_store_auth_address: {list_join: ['', ['http://', {get_param: VirtualIP} , ':5000/v2.0']]}
471         glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
472         glance_log_file: {get_param: GlanceLogFile}
473         glance_dsn:
474           list_join:
475             - ''
476             - - 'mysql://glance:unset@'
477               - {get_param: VirtualIP}
478               - '/glance'
479         heat_password: {get_param: HeatPassword}
480         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
481         heat_dsn:
482           list_join:
483             - ''
484             - - 'mysql://heat:unset@'
485               - {get_param: VirtualIP}
486               - '/heat'
487         keystone_ca_certificate: {get_param: KeystoneCACertificate}
488         keystone_signing_key: {get_param: KeystoneSigningKey}
489         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
490         keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
491         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
492         keystone_dsn:
493           list_join:
494             - ''
495             - - 'mysql://keystone:unset@'
496               - {get_param: VirtualIP}
497               - '/keystone'
498         keystone_identity_uri:
499           list_join:
500             - ''
501             - - 'http://'
502               - {get_param: VirtualIP}
503               - ':35357/'
504         keystone_auth_uri:
505           list_join:
506             - ''
507             - - 'http://'
508               - {get_param: VirtualIP}
509               - ':5000/v2.0/'
510         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
511         mysql_root_password: {get_param: MysqlRootPassword}
512         mysql_cluster_name:
513           str_replace:
514             template: tripleo-CLUSTER
515             params:
516               CLUSTER: {get_param: MysqlClusterUniquePart}
517         neutron_flat_networks: {get_param: NeutronFlatNetworks}
518         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
519         neutron_agent_mode: {get_param: NeutronAgentMode}
520         neutron_router_distributed: {get_param: NeutronDVR}
521         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
522         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
523         neutron_l3_ha: {get_param: NeutronL3HA}
524         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
525         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
526         neutron_public_interface: {get_param: NeutronPublicInterface}
527         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
528         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
529         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
530         neutron_tenant_network_type: {get_param: NeutronNetworkType}
531         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
532         neutron_password: {get_param: NeutronPassword}
533         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
534         neutron_dsn:
535           list_join:
536             - ''
537             - - 'mysql://neutron:unset@'
538               - {get_param: VirtualIP}
539               - '/ovs_neutron?charset=utf8'
540         neutron_url:
541           list_join:
542             - ''
543             - - 'http://'
544               - {get_param: VirtualIP}
545               - ':9696'
546         neutron_admin_auth_url:
547           list_join:
548             - ''
549             - - 'http://'
550               - {get_param: VirtualIP}
551               - ':35357/v2.0'
552         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
553         ceilometer_password: {get_param: CeilometerPassword}
554         ceilometer_dsn:
555           list_join:
556             - ''
557             - - 'mysql://ceilometer:unset@'
558               - {get_param: VirtualIP}
559               - '/ceilometer'
560         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
561         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
562         nova_password: {get_param: NovaPassword}
563         nova_dsn:
564           list_join:
565             - ''
566             - - 'mysql://nova:unset@'
567               - {get_param: VirtualIP}
568               - '/nova'
569         rabbit_hosts:
570           str_replace:
571             template: '["host"]'
572             params:
573               host: {get_param: VirtualIP}
574         rabbit_username: {get_param: RabbitUserName}
575         rabbit_password: {get_param: RabbitPassword}
576         rabbit_cookie: {get_param: RabbitCookie}
577         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
578         rabbit_client_port: {get_param: RabbitClientPort}
579         ntp_servers:
580           str_replace:
581             template: '["server"]'
582             params:
583               server: {get_param: NtpServer}
584         control_virtual_interface: {get_param: ControlVirtualInterface}
585         public_virtual_interface: {get_param: PublicVirtualInterface}
586         public_virtual_ip: {get_param: PublicVirtualIP}
587         swift_hash_suffix: {get_param: SwiftHashSuffix}
588         swift_password: {get_param: SwiftPassword}
589         swift_part_power: {get_param: SwiftPartPower}
590         swift_replicas: {get_param: SwiftReplicas}
591         swift_min_part_hours: {get_param: SwiftMinPartHours}
592         swift_mount_check: {get_param: SwiftMountCheck}
593         enable_package_install: {get_param: EnablePackageInstall}
594
595   # Map heat metadata into hiera datafiles
596   ControllerConfig:
597     type: OS::Heat::StructuredConfig
598     properties:
599       group: os-apply-config
600       config:
601         hiera:
602           hierarchy:
603             - heat_config_%{::deploy_config_name}
604             - controller
605             - object
606             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
607             - ceph_cluster # provided by CephClusterConfig
608             - ceph
609             - bootstrap_node # provided by BootstrapNodeConfig
610             - all_nodes # provided by allNodesConfig
611             - '"%{::osfamily}"'
612             - common
613           datafiles:
614             common:
615               raw_data: {get_file: hieradata/common.yaml}
616             ceph:
617               raw_data: {get_file: hieradata/ceph.yaml}
618             object:
619               raw_data: {get_file: hieradata/object.yaml}
620             controller:
621               raw_data: {get_file: hieradata/controller.yaml}
622               mapped_data: # data supplied directly to this deployment configuration, etc
623                 bootstack_nodeid: {get_input: bootstack_nodeid}
624                 controller_host: {get_input: controller_host} #local-ipv4
625
626                 # Swift
627                 swift::proxy::proxy_local_net_ip: {get_input: controller_host}
628                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
629                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
630                 swift::storage::all::storage_local_net_ip: {get_input: controller_host}
631                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
632                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
633                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
634                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
635                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
636                 swift_mount_check: {get_input: swift_mount_check}
637
638                 # NOTE(dprince): build_ring support is currently not wired in.
639                 # See: https://review.openstack.org/#/c/109225/
640                 tripleo::ringbuilder::build_ring: True
641
642                 # Cinder
643                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
644                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
645                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
646                 cinder_iscsi_ip_address: {get_input: controller_host}
647                 cinder::database_connection: {get_input: cinder_dsn}
648                 cinder::api::keystone_password: {get_input: cinder_password}
649                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
650                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
651                 cinder::api::bind_host: {get_input: controller_host}
652                 cinder::rabbit_hosts: {get_input: rabbit_hosts}
653                 cinder::rabbit_userid: {get_input: rabbit_username}
654                 cinder::rabbit_password: {get_input: rabbit_password}
655                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
656                 cinder::rabbit_port: {get_input: rabbit_client_port}
657                 cinder::debug: {get_input: debug}
658                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
659
660                 # Glance
661                 glance::api::bind_port: {get_input: glance_port}
662                 glance::api::bind_host: {get_input: controller_host}
663                 glance::api::auth_uri: {get_input: keystone_auth_uri}
664                 glance::api::identity_uri: {get_input: keystone_identity_uri}
665                 glance::api::registry_host: {get_input: controller_host}
666                 glance::api::keystone_password: {get_input: glance_password}
667                 glance::api::debug: {get_input: debug}
668                 # used to construct glance_api_servers
669                 glance_port: {get_input: glance_port}
670                 glance_protocol: {get_input: glance_protocol}
671                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
672                 glance_log_file: {get_input: glance_log_file}
673                 glance_log_file: {get_input: glance_log_file}
674                 glance::api::database_connection: {get_input: glance_dsn}
675                 glance::registry::keystone_password: {get_input: glance_password}
676                 glance::registry::database_connection: {get_input: glance_dsn}
677                 glance::registry::bind_host: {get_input: controller_host}
678                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
679                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
680                 glance::registry::debug: {get_input: debug}
681                 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
682                 glance::backend::swift::swift_store_user: service:glance
683                 glance::backend::swift::swift_store_key: {get_input: glance_password}
684
685                 # Heat
686                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
687                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
688                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
689                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
690                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
691                 heat::rabbit_hosts: {get_input: rabbit_hosts}
692                 heat::rabbit_userid: {get_input: rabbit_username}
693                 heat::rabbit_password: {get_input: rabbit_password}
694                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
695                 heat::rabbit_port: {get_input: rabbit_client_port}
696                 heat::auth_uri: {get_input: keystone_auth_uri}
697                 heat::identity_uri: {get_input: keystone_identity_uri}
698                 heat::keystone_password: {get_input: heat_password}
699                 heat::api::bind_host: {get_input: controller_host}
700                 heat::api_cloudwatch::bind_host: {get_input: controller_host}
701                 heat::api_cfn::bind_host: {get_input: controller_host}
702                 heat::database_connection: {get_input: heat_dsn}
703                 heat::instance_user: heat-admin
704                 heat::debug: {get_input: debug}
705
706                 # Keystone
707                 keystone::admin_token: {get_input: admin_token}
708                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
709                 keystone_signing_key: {get_input: keystone_signing_key}
710                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
711                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
712                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
713                 keystone::database_connection: {get_input: keystone_dsn}
714                 keystone::public_bind_host: {get_input: controller_host}
715                 keystone::admin_bind_host: {get_input: controller_host}
716                 keystone::debug: {get_input: debug}
717
718                 # MySQL
719                 admin_password: {get_input: admin_password}
720                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
721                 mysql::server::root_password: {get_input: mysql_root_password}
722                 mysql_cluster_name: {get_input: mysql_cluster_name}
723
724                 # Neutron
725                 neutron::bind_host: {get_input: controller_host}
726                 neutron::rabbit_hosts: {get_input: rabbit_hosts}
727                 neutron::rabbit_password: {get_input: rabbit_password}
728                 neutron::rabbit_user: {get_input: rabbit_user}
729                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
730                 neutron::rabbit_port: {get_input: rabbit_client_port}
731                 neutron::debug: {get_input: debug}
732                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
733                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
734                 neutron::server::database_connection: {get_input: neutron_dsn}
735                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
736                 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
737                 neutron_flat_networks: {get_input: neutron_flat_networks}
738                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
739                 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
740                 neutron_agent_mode: {get_input: neutron_agent_mode}
741                 neutron_router_distributed: {get_input: neutron_router_distributed}
742                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
743                 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
744                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
745                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
746                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
747                 neutron_public_interface: {get_input: neutron_public_interface}
748                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
749                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
750                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
751                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
752                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
753                 neutron::server::auth_password: {get_input: neutron_password}
754                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
755                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
756                 neutron_dsn: {get_input: neutron_dsn}
757
758                 # Ceilometer
759                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
760                 ceilometer::rabbit_hosts: {get_input: rabbit_hosts}
761                 ceilometer::rabbit_userid: {get_input: rabbit_username}
762                 ceilometer::rabbit_password: {get_input: rabbit_password}
763                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
764                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
765                 ceilometer::debug: {get_input: debug}
766                 ceilometer::api::host: {get_input: controller_host}
767                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
768                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
769                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
770                 ceilometer::db::database_connection: {get_input: ceilometer_dsn}
771                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
772                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
773                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
774
775                 # Nova
776                 nova::rabbit_hosts: {get_input: rabbit_hosts}
777                 nova::rabbit_userid: {get_input: rabbit_username}
778                 nova::rabbit_password: {get_input: rabbit_password}
779                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
780                 nova::rabbit_port: {get_input: rabbit_client_port}
781                 nova::debug: {get_input: debug}
782                 nova::api::auth_uri: {get_input: keystone_auth_uri}
783                 nova::api::identity_uri: {get_input: keystone_identity_uri}
784                 nova::api::api_bind_address: {get_input: controller_host}
785                 nova::api::metadata_listen: {get_input: controller_host}
786                 nova::api::admin_password: {get_input: nova_password}
787                 nova::database_connection: {get_input: nova_dsn}
788                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
789                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
790                 nova::network::neutron::neutron_url: {get_input: neutron_url}
791                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
792                 # Rabbit
793                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
794
795                 # Misc
796                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
797                 ntp::servers: {get_input: ntp_servers}
798                 control_virtual_interface: {get_input: control_virtual_interface}
799                 controller_virtual_ip: {get_input: controller_virtual_ip}
800                 public_virtual_interface: {get_input: public_virtual_interface}
801                 public_virtual_ip: {get_input: public_virtual_ip}
802                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
803                 tripleo::loadbalancer::controller_virtual_ip: {get_input: controller_virtual_ip}
804                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
805                 tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
806                 enable_package_install: {get_input: enable_package_install}
807
808 outputs:
809   ip_address:
810     description: IP address of the server in the ctlplane network
811     value: {get_attr: [Controller, networks, ctlplane, 0]}
812   hostname:
813     description: Hostname of the server
814     value: {get_attr: [Controller, name]}
815   corosync_node:
816     description: >
817       Node object in the format {ip: ..., name: ...} format that the corosync
818       element expects
819     value:
820       ip: {get_attr: [Controller, networks, ctlplane, 0]}
821       name: {get_attr: [Controller, name]}
822   hosts_entry:
823     description: >
824       Server's IP address and hostname in the /etc/hosts format
825     value:
826       str_replace:
827         template: IP HOST HOST.novalocal CLOUDNAME
828         params:
829           IP: {get_attr: [Controller, networks, ctlplane, 0]}
830           HOST: {get_attr: [Controller, name]}
831           CLOUDNAME: {get_param: CloudName}
832   nova_server_resource:
833     description: Heat resource handle for the Nova compute server
834     value:
835       {get_resource: Controller}
836   swift_device:
837     description: Swift device formatted for swift-ring-builder
838     value:
839       str_replace:
840         template: 'r1z1-IP:%PORT%/d1'
841         params:
842           IP: {get_attr: [Controller, networks, ctlplane, 0]}
843   swift_proxy_memcache:
844     description: Swift proxy-memcache value
845     value:
846       str_replace:
847         template: "IP:11211"
848         params:
849           IP: {get_attr: [Controller, networks, ctlplane, 0]}