Parameterize network type and tunnel types
[apex-tripleo-heat-templates.git] / undercloud-source.yaml
1 description: All-in-one baremetal OpenStack and all dependencies.
2 heat_template_version: 2013-05-23
3 parameters:
4   AdminPassword:
5     default: unset
6     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
7     type: string
8     hidden: true
9   AdminToken:
10     default: unset
11     description: The keystone auth secret.
12     type: string
13     hidden: true
14   CinderLVMLoopDeviceSize:
15     default: 5000
16     description: The size of the loopback file used by the cinder LVM driver.
17     type: number
18   BaremetalArch:
19     default: i386
20     description: The architecture to use in Nova-BM - i386 or amd64.
21     type: string
22   CeilometerMeteringSecret:
23     default: unset
24     description: Secret shared by the ceilometer services.
25     type: string
26     hidden: true
27   CeilometerPassword:
28     default: unset
29     description: The password for the ceilometer service account.
30     type: string
31     hidden: true
32   Debug:
33     default: ''
34     description: Set to True to enable debugging on all services.
35     type: string
36   SnmpdReadonlyUserName:
37     default: ro_snmp_user
38     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
39     type: string
40   SnmpdReadonlyUserPassword:
41     default: unset
42     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
43     type: string
44     hidden: true
45   ExtraConfig:
46     default: {}
47     description: |
48       Additional configuration to inject into the cluster. The JSON should have
49       the following structure:
50         {"FILEKEY":
51           {"config:
52             [{"section": "SECTIONNAME",
53               "values":
54                [{"option": "OPTIONNAME",
55                   "value": "VALUENAME"
56                 }
57                ]
58              }
59             ]
60           }
61         }
62       For instance:
63         {"nova":
64           {"config":
65             [{"section": "default",
66               "values":
67                 [{"option": "compute_manager",
68                   "value": "ironic.nova.compute.manager.ClusterComputeManager"
69                  }
70                 ]
71              },
72              {"section": "cells",
73               "values":
74                 [{"option": "driver",
75                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
76                  }
77                 ]
78              }
79             ]
80           }
81         }
82     type: json
83   Flavor:
84     default: baremetal
85     description: Flavor to request when deploying.
86     type: string
87   GlancePort:
88    default: 9292
89    description: Glance port.
90    type: string
91   GlanceProtocol:
92    default: http
93    description: Protocol to use when connecting to glance, set to https for SSL.
94    type: string
95   GlancePassword:
96     default: unset
97     description: The password for the glance service account, used by the glance services.
98     type: string
99     hidden: true
100   GlanceNotifierStrategy:
101     description: Strategy to use for Glance notification queue
102     type: string
103     default: noop
104   GlanceLogFile:
105     description: The filepath of the file to use for logging messages from Glance.
106     type: string
107     default: ''
108   KeyName:
109     default: default
110     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
111     type: string
112   HeatPassword:
113     default: unset
114     description: The password for the Heat service account, used by the Heat services.
115     type: string
116     hidden: true
117   ImageUpdatePolicy:
118     default: REBUILD_PRESERVE_EPHEMERAL
119     description: What policy to use when reconstructing instances. REBUILD for rebuilds,
120       REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
121     type: string
122   undercloudImage:
123     default: undercloud
124     type: string
125   NeutronPassword:
126     default: unset
127     description: The password for the neutron service account, used by neutron agents.
128     type: string
129     hidden: true
130   NovaPassword:
131     default: unset
132     description: The password for the nova service account, used by nova-api.
133     type: string
134     hidden: true
135   NeutronPublicInterfaceDefaultRoute:
136     default: ''
137     description: A custom default route for the NeutronPublicInterface.
138     type: string
139   NeutronPublicInterfaceIP:
140     default: ''
141     description: >
142       A custom IP address to put onto the NeutronPublicInterface bridge.
143       See also NeutronPublicInterfaceTagIP for adding a VLAN tagging IP.
144       NeutronPublicInterfaceIP is deprecated in the context of deploying
145       underclouds - its only needed for the seed bootstrap process.
146     type: string
147   NeutronPublicInterfaceTag:
148     default: ''
149     description: >
150       VLAN tag for creating a public VLAN. The tag will be used to
151       create an access port on the exterior bridge, and that port will be
152       given the IP address returned by neutron from the public network.
153     type: string
154   NeutronPublicInterfaceRawDevice:
155     default: ''
156     description: If set, the public interface is a vlan with this device as the raw device.
157     type: string
158   NtpServer:
159     type: string
160     default: ''
161   RabbitUserName:
162     default: guest
163     description: The username for RabbitMQ
164     type: string
165   RabbitPassword:
166     default: guest
167     description: The password for RabbitMQ
168     type: string
169     hidden: true
170   RabbitCookieSalt:
171     type: string
172     default: unset
173     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
174   HeatStackDomainAdminPassword:
175     description: Password for heat_domain_admin user.
176     type: string
177     default: ''
178     hidden: true
179   MysqlInnodbBufferPoolSize:
180     description: >
181         Specifies the size of the buffer pool in megabytes. Setting to
182         zero should be interpreted as "no value" and will defer to the
183         lower level default.
184     type: number
185     default: 0
186   KeystoneCACertificate:
187     default: ''
188     description: Keystone self-signed certificate authority certificate.
189     type: string
190   KeystoneSigningCertificate:
191     default: ''
192     description: Keystone certificate for verifying token validity.
193     type: string
194   KeystoneSigningKey:
195     default: ''
196     description: Keystone key for signing tokens.
197     type: string
198     hidden: true
199   DefaultSignalTransport:
200     default: CFN_SIGNAL
201     description: Transport to use for software-config signals.
202     type: string
203     constraints:
204       - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
205 resources:
206   RabbitCookie:
207     type: OS::Heat::RandomString
208     properties:
209       length: 20
210       salt:
211         get_param: RabbitCookieSalt
212   MysqlRootPassword:
213     type: OS::Heat::RandomString
214     properties:
215       length: 10
216   undercloudConfig:
217     type: OS::Heat::StructuredConfig
218     properties:
219       config:
220         completion-signal: {get_input: deploy_signal_id}
221         admin-password:
222           get_param: AdminPassword
223         admin-token:
224           get_param: AdminToken
225         bootstrap_host:
226           bootstrap_nodeid:
227             Fn::Select:
228             - 0
229             - Fn::Select:
230               - 0
231               - Merge::Map:
232                   undercloud:
233                   - Fn::Select:
234                     - name
235                     - get_attr:
236                       - undercloud
237                       - show
238           nodeid: {get_input: bootstack_nodeid}
239         bootstack:
240           public_interface_ip:
241             get_param: NeutronPublicInterfaceIP
242         controller-address:
243           get_input: controller_host
244         corosync:
245           bindnetaddr: {get_input: controller_host}
246           mcastport: 5577
247           nodes:
248             Merge::Map:
249               controller0:
250                 ip: {get_attr: [undercloud, networks, ctlplane, 0]}
251         pacemaker:
252           stonith_enabled : false
253           recheck_interval : 5
254           quorum_policy : ignore
255         ceilometer:
256           db: mysql://ceilometer:unset@localhost/ceilometer
257           debug: {get_param: Debug}
258           metering_secret: {get_param: CeilometerMeteringSecret}
259           snmpd_readonly_user_name:
260             get_param: SnmpdReadonlyUserName
261           snmpd_readonly_user_password:
262             get_param: SnmpdReadonlyUserPassword
263           service-password:
264             get_param: CeilometerPassword
265         db-password: unset
266         glance:
267           backend: file
268           db: mysql://glance:unset@localhost/glance
269           debug: {get_param: Debug}
270           host: 127.0.0.1
271           port:
272             get_param: GlancePort
273           protocol:
274             get_param: GlanceProtocol
275           service-password:
276             get_param: GlancePassword
277           notifier-strategy:
278             get_param: GlanceNotifierStrategy
279           log-file:
280             get_param: GlanceLogFile
281         heat:
282           admin_password:
283             get_param: HeatPassword
284           admin_tenant_name: service
285           admin_user: heat
286           auth_encryption_key: unset___________
287           db: mysql://heat:unset@localhost/heat
288           debug: {get_param: Debug}
289           stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
290           watch_server_url: {get_input: heat.watch_server_url}
291           metadata_server_url: {get_input: heat.metadata_server_url}
292           waitcondition_server_url: {get_input: heat.waitcondition_server_url}
293         keystone:
294           db: mysql://keystone:unset@localhost/keystone
295           debug: {get_param: Debug}
296           host: 127.0.0.1
297           ca_certificate: {get_param: KeystoneCACertificate}
298           signing_key: {get_param: KeystoneSigningKey}
299           signing_certificate: {get_param: KeystoneSigningCertificate}
300         mysql:
301           innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
302           root-password: {get_resource: MysqlRootPassword}
303         neutron:
304           debug: {get_param: Debug}
305           host: 127.0.0.1
306           ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
307           ovs:
308             public_interface:
309               get_param: NeutronPublicInterface
310             public_interface_raw_device:
311               get_param: NeutronPublicInterfaceRawDevice
312             public_interface_route:
313               get_param: NeutronPublicInterfaceDefaultRoute
314             public_interface_tag:
315               get_param: NeutronPublicInterfaceTag
316             physical_bridge: br-ctlplane
317             physical_network: ctlplane
318             network_vlan_ranges: ctlplane
319             bridge_mappings: ctlplane:br-ctlplane
320             tenant_network_type: vlan
321             enable_tunneling: 'False'
322           service-password:
323             get_param: NeutronPassword
324         rabbit:
325           host: 127.0.0.1
326           username:
327             get_param: RabbitUserName
328           password:
329             get_param: RabbitPassword
330           cookie:
331             get_attr:
332             - RabbitCookie
333             - value
334         ntp:
335           servers:
336             - {server: {get_param: NtpServer}, fudge: "stratum 0"}
337   undercloudPassthroughConfig:
338     type: OS::Heat::StructuredConfig
339     properties:
340       config: {get_input: passthrough_config}
341   undercloud:
342     type: OS::Nova::Server
343     properties:
344       image:
345         get_param: undercloudImage
346       flavor:
347         get_param: Flavor
348       key_name:
349         get_param: KeyName
350       image_update_policy:
351         get_param: ImageUpdatePolicy
352       networks:
353         - network: ctlplane
354       user_data_format: SOFTWARE_CONFIG
355   undercloudDeployment:
356     depends_on: [undercloudPassthroughDeployment]
357     type: OS::Heat::StructuredDeployment
358     properties:
359       config: {get_resource: undercloudConfig}
360       server: {get_resource: undercloud}
361       signal_transport: {get_param: DefaultSignalTransport}
362       input_values:
363         bootstack_nodeid:
364           get_attr:
365           - undercloud
366           - show
367           - name
368         controller_host:
369           get_attr:
370           - undercloud
371           - networks
372           - ctlplane
373           - 0
374         heat.watch_server_url:
375           Fn::Join:
376             - ''
377             - - 'http://'
378               - get_attr: [undercloud, networks, ctlplane, 0]
379               - ':8003'
380         heat.metadata_server_url:
381           Fn::Join:
382             - ''
383             - - 'http://'
384               - {get_attr: [undercloud, networks, ctlplane, 0]}
385               - ':8000'
386         heat.waitcondition_server_url:
387           Fn::Join:
388             - ''
389             - - 'http://'
390               - {get_attr: [undercloud, networks, ctlplane, 0]}
391               - ':8000/v1/waitcondition'
392   undercloudPassthroughDeployment:
393     depends_on: [undercloudNovaDeployment]
394     type: OS::Heat::StructuredDeployment
395     properties:
396       config: {get_resource: undercloudPassthroughConfig}
397       server: {get_resource: undercloud}
398       signal_transport: NO_SIGNAL
399       input_values:
400         passthrough_config: {get_param: ExtraConfig}