Merge "Deprecate Role and ImageBuilder metadata handling"
[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                   - get_attr:
234                     - undercloud
235                     - name
236           nodeid: {get_input: bootstack_nodeid}
237         bootstack:
238           public_interface_ip:
239             get_param: NeutronPublicInterfaceIP
240         controller-address:
241           get_input: controller_host
242         corosync:
243           bindnetaddr: {get_input: controller_host}
244           mcastport: 5577
245           nodes:
246             Merge::Map:
247               controller0:
248                 ip: {get_attr: [undercloud, networks, ctlplane, 0]}
249         pacemaker:
250           stonith_enabled : false
251           recheck_interval : 5
252           quorum_policy : ignore
253         ceilometer:
254           db: mysql://ceilometer:unset@localhost/ceilometer
255           debug: {get_param: Debug}
256           metering_secret: {get_param: CeilometerMeteringSecret}
257           snmpd_readonly_user_name:
258             get_param: SnmpdReadonlyUserName
259           snmpd_readonly_user_password:
260             get_param: SnmpdReadonlyUserPassword
261           service-password:
262             get_param: CeilometerPassword
263         db-password: unset
264         glance:
265           backend: file
266           db: mysql://glance:unset@localhost/glance
267           debug: {get_param: Debug}
268           host: 127.0.0.1
269           port:
270             get_param: GlancePort
271           protocol:
272             get_param: GlanceProtocol
273           service-password:
274             get_param: GlancePassword
275           notifier-strategy:
276             get_param: GlanceNotifierStrategy
277           log-file:
278             get_param: GlanceLogFile
279         heat:
280           admin_password:
281             get_param: HeatPassword
282           admin_tenant_name: service
283           admin_user: heat
284           auth_encryption_key: unset___________
285           db: mysql://heat:unset@localhost/heat
286           debug: {get_param: Debug}
287           stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
288           watch_server_url: {get_input: heat.watch_server_url}
289           metadata_server_url: {get_input: heat.metadata_server_url}
290           waitcondition_server_url: {get_input: heat.waitcondition_server_url}
291         keystone:
292           db: mysql://keystone:unset@localhost/keystone
293           debug: {get_param: Debug}
294           host: 127.0.0.1
295           ca_certificate: {get_param: KeystoneCACertificate}
296           signing_key: {get_param: KeystoneSigningKey}
297           signing_certificate: {get_param: KeystoneSigningCertificate}
298         mysql:
299           innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
300           root-password: {get_resource: MysqlRootPassword}
301         neutron:
302           debug: {get_param: Debug}
303           host: 127.0.0.1
304           ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
305           ovs:
306             public_interface:
307               get_param: NeutronPublicInterface
308             public_interface_raw_device:
309               get_param: NeutronPublicInterfaceRawDevice
310             public_interface_route:
311               get_param: NeutronPublicInterfaceDefaultRoute
312             public_interface_tag:
313               get_param: NeutronPublicInterfaceTag
314             physical_bridge: br-ctlplane
315             physical_network: ctlplane
316             network_vlan_ranges: ctlplane
317             bridge_mappings: ctlplane:br-ctlplane
318             tenant_network_type: vlan
319             enable_tunneling: 'False'
320           service-password:
321             get_param: NeutronPassword
322         rabbit:
323           host: 127.0.0.1
324           username:
325             get_param: RabbitUserName
326           password:
327             get_param: RabbitPassword
328           cookie:
329             get_attr:
330             - RabbitCookie
331             - value
332         ntp:
333           servers:
334             - {server: {get_param: NtpServer}, fudge: "stratum 0"}
335   undercloudPassthroughConfig:
336     type: OS::Heat::StructuredConfig
337     properties:
338       config: {get_input: passthrough_config}
339   undercloud:
340     type: OS::Nova::Server
341     properties:
342       image:
343         get_param: undercloudImage
344       flavor:
345         get_param: Flavor
346       key_name:
347         get_param: KeyName
348       image_update_policy:
349         get_param: ImageUpdatePolicy
350       networks:
351         - network: ctlplane
352       user_data_format: SOFTWARE_CONFIG
353   undercloudDeployment:
354     depends_on: [undercloudPassthroughDeployment]
355     type: OS::Heat::StructuredDeployment
356     properties:
357       config: {get_resource: undercloudConfig}
358       server: {get_resource: undercloud}
359       signal_transport: {get_param: DefaultSignalTransport}
360       input_values:
361         bootstack_nodeid:
362           get_attr:
363           - undercloud
364           - name
365         controller_host:
366           get_attr:
367           - undercloud
368           - networks
369           - ctlplane
370           - 0
371         heat.watch_server_url:
372           Fn::Join:
373             - ''
374             - - 'http://'
375               - get_attr: [undercloud, networks, ctlplane, 0]
376               - ':8003'
377         heat.metadata_server_url:
378           Fn::Join:
379             - ''
380             - - 'http://'
381               - {get_attr: [undercloud, networks, ctlplane, 0]}
382               - ':8000'
383         heat.waitcondition_server_url:
384           Fn::Join:
385             - ''
386             - - 'http://'
387               - {get_attr: [undercloud, networks, ctlplane, 0]}
388               - ':8000/v1/waitcondition'
389   undercloudPassthroughDeployment:
390     depends_on: [undercloudNovaDeployment]
391     type: OS::Heat::StructuredDeployment
392     properties:
393       config: {get_resource: undercloudPassthroughConfig}
394       server: {get_resource: undercloud}
395       signal_transport: NO_SIGNAL
396       input_values:
397         passthrough_config: {get_param: ExtraConfig}