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