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