puppet: wire in osfamily hieradata support
[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                 debug: {get_input: debug}
624                 bootstack_nodeid: {get_input: bootstack_nodeid}
625                 controller_host: {get_input: controller_host} #local-ipv4
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                 # Cinder
642                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
643                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
644                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
645                 cinder_iscsi_ip_address: {get_input: controller_host}
646                 cinder::database_connection: {get_input: cinder_dsn}
647                 cinder::api::keystone_password: {get_input: cinder_password}
648                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
649                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
650                 cinder::api::bind_host: {get_input: controller_host}
651                 cinder::rabbit_hosts: {get_input: rabbit_hosts}
652                 cinder::rabbit_userid: {get_input: rabbit_username}
653                 cinder::rabbit_password: {get_input: rabbit_password}
654                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
655                 cinder::rabbit_port: {get_input: rabbit_client_port}
656                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
657                 #cinder::debug: {get_input: debug}
658                 # Glance
659                 glance::api::bind_port: {get_input: glance_port}
660                 glance::api::bind_host: {get_input: controller_host}
661                 glance::api::auth_uri: {get_input: keystone_auth_uri}
662                 glance::api::identity_uri: {get_input: keystone_identity_uri}
663                 glance::api::registry_host: {get_input: controller_host}
664                 glance::api::keystone_password: {get_input: glance_password}
665                 # used to construct glance_api_servers
666                 glance_port: {get_input: glance_port}
667                 glance_protocol: {get_input: glance_protocol}
668                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
669                 glance_log_file: {get_input: glance_log_file}
670                 glance_log_file: {get_input: glance_log_file}
671                 glance::api::database_connection: {get_input: glance_dsn}
672                 glance::registry::keystone_password: {get_input: glance_password}
673                 glance::registry::database_connection: {get_input: glance_dsn}
674                 glance::registry::bind_host: {get_input: controller_host}
675                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
676                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
677                 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
678                 glance::backend::swift::swift_store_user: service:glance
679                 glance::backend::swift::swift_store_key: {get_input: glance_password}
680                 # Heat
681                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
682                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
683                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
684                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
685                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
686                 heat::rabbit_hosts: {get_input: rabbit_hosts}
687                 heat::rabbit_userid: {get_input: rabbit_username}
688                 heat::rabbit_password: {get_input: rabbit_password}
689                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
690                 heat::rabbit_port: {get_input: rabbit_client_port}
691                 heat::auth_uri: {get_input: keystone_auth_uri}
692                 heat::identity_uri: {get_input: keystone_identity_uri}
693                 heat::keystone_password: {get_input: heat_password}
694                 heat::api::bind_host: {get_input: controller_host}
695                 heat::api_cloudwatch::bind_host: {get_input: controller_host}
696                 heat::api_cfn::bind_host: {get_input: controller_host}
697                 heat::database_connection: {get_input: heat_dsn}
698                 heat::instance_user: heat-admin
699
700                 # Keystone
701                 keystone::admin_token: {get_input: admin_token}
702                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
703                 keystone_signing_key: {get_input: keystone_signing_key}
704                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
705                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
706                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
707                 keystone::database_connection: {get_input: keystone_dsn}
708                 keystone::public_bind_host: {get_input: controller_host}
709                 keystone::admin_bind_host: {get_input: controller_host}
710                 #keystone::debug: {get_input: debug}
711                 # MySQL
712                 admin_password: {get_input: admin_password}
713                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
714                 mysql::server::root_password: {get_input: mysql_root_password}
715                 mysql_cluster_name: {get_input: mysql_cluster_name}
716                 # Neutron
717                 neutron::bind_host: {get_input: controller_host}
718                 neutron::rabbit_hosts: {get_input: rabbit_hosts}
719                 neutron::rabbit_password: {get_input: rabbit_password}
720                 neutron::rabbit_user: {get_input: rabbit_user}
721                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
722                 neutron::rabbit_port: {get_input: rabbit_client_port}
723                 #neutron::debug: {get_input: debug}
724                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
725                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
726                 neutron::server::database_connection: {get_input: neutron_dsn}
727                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
728                 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
729                 neutron_flat_networks: {get_input: neutron_flat_networks}
730                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
731                 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
732                 neutron_agent_mode: {get_input: neutron_agent_mode}
733                 neutron_router_distributed: {get_input: neutron_router_distributed}
734                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
735                 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
736                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
737                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
738                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
739                 neutron_public_interface: {get_input: neutron_public_interface}
740                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
741                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
742                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
743                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
744                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
745                 neutron::server::auth_password: {get_input: neutron_password}
746                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
747                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
748                 neutron_dsn: {get_input: neutron_dsn}
749                 # Ceilometer
750                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
751                 ceilometer::rabbit_hosts: {get_input: rabbit_hosts}
752                 ceilometer::rabbit_userid: {get_input: rabbit_username}
753                 ceilometer::rabbit_password: {get_input: rabbit_password}
754                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
755                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
756                 ceilometer::api::host: {get_input: controller_host}
757                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
758                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
759                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
760                 ceilometer::db::database_connection: {get_input: ceilometer_dsn}
761                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
762                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
763                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
764                 # Nova
765                 nova::rabbit_hosts: {get_input: rabbit_hosts}
766                 nova::rabbit_userid: {get_input: rabbit_username}
767                 nova::rabbit_password: {get_input: rabbit_password}
768                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
769                 nova::rabbit_port: {get_input: rabbit_client_port}
770                 nova::api::auth_uri: {get_input: keystone_auth_uri}
771                 nova::api::identity_uri: {get_input: keystone_identity_uri}
772                 nova::api::api_bind_address: {get_input: controller_host}
773                 nova::api::metadata_listen: {get_input: controller_host}
774                 nova::api::admin_password: {get_input: nova_password}
775                 nova::database_connection: {get_input: nova_dsn}
776                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
777                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
778                 nova::network::neutron::neutron_url: {get_input: neutron_url}
779                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
780                 # Rabbit
781                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
782                 # Misc
783                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
784                 ntp::servers: {get_input: ntp_servers}
785                 control_virtual_interface: {get_input: control_virtual_interface}
786                 controller_virtual_ip: {get_input: controller_virtual_ip}
787                 public_virtual_interface: {get_input: public_virtual_interface}
788                 public_virtual_ip: {get_input: public_virtual_ip}
789                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
790                 tripleo::loadbalancer::controller_virtual_ip: {get_input: controller_virtual_ip}
791                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
792                 tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
793                 enable_package_install: {get_input: enable_package_install}
794
795 outputs:
796   ip_address:
797     description: IP address of the server in the ctlplane network
798     value: {get_attr: [Controller, networks, ctlplane, 0]}
799   hostname:
800     description: Hostname of the server
801     value: {get_attr: [Controller, name]}
802   corosync_node:
803     description: >
804       Node object in the format {ip: ..., name: ...} format that the corosync
805       element expects
806     value:
807       ip: {get_attr: [Controller, networks, ctlplane, 0]}
808       name: {get_attr: [Controller, name]}
809   hosts_entry:
810     description: >
811       Server's IP address and hostname in the /etc/hosts format
812     value:
813       str_replace:
814         template: IP HOST HOST.novalocal CLOUDNAME
815         params:
816           IP: {get_attr: [Controller, networks, ctlplane, 0]}
817           HOST: {get_attr: [Controller, name]}
818           CLOUDNAME: {get_param: CloudName}
819   nova_server_resource:
820     description: Heat resource handle for the Nova compute server
821     value:
822       {get_resource: Controller}
823   swift_device:
824     description: Swift device formatted for swift-ring-builder
825     value:
826       str_replace:
827         template: 'r1z1-IP:%PORT%/d1'
828         params:
829           IP: {get_attr: [Controller, networks, ctlplane, 0]}
830   swift_proxy_memcache:
831     description: Swift proxy-memcache value
832     value:
833       str_replace:
834         template: "IP:11211"
835         params:
836           IP: {get_attr: [Controller, networks, ctlplane, 0]}