aa0c9eed811ea5b7c5a2b5a8f7050369934c20fd
[apex-tripleo-heat-templates.git] / undercloud-source.yaml
1 Description: All-in-one baremetal OpenStack and all dependencies.
2 HeatTemplateFormatVersion: '2012-12-12'
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     NoEcho: true
9   AdminToken:
10     Default: unset
11     Description: The keystone auth secret.
12     Type: String
13     NoEcho: 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     NoEcho: true
27   CeilometerPassword:
28     Default: unset
29     Description: The password for the ceilometer service account.
30     Type: String
31     NoEcho: 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     NoEcho: 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     NoEcho: 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     NoEcho: 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     NoEcho: true
126   NovaPassword:
127     Default: unset
128     Description: The password for the nova service account, used by nova-api.
129     Type: String
130     NoEcho: true
131   NeutronPublicInterfaceDefaultRoute:
132     Default: ''
133     Description: A custom default route for the NeutronPublicInterface.
134     Type: String
135   NeutronPublicInterfaceIP:
136     Default: ''
137     Description: A custom IP address to put onto the NeutronPublicInterface.
138     Type: String
139   NeutronPublicInterfaceRawDevice:
140     Default: ''
141     Description: If set, the public interface is a vlan with this device as the raw device.
142     Type: String
143   NtpServer:
144     Type: String
145     Default: ''
146   RabbitUserName:
147     Default: guest
148     Description: The username for RabbitMQ
149     Type: String
150   RabbitPassword:
151     Default: guest
152     Description: The password for RabbitMQ
153     Type: String
154     NoEcho: true
155   RabbitCookieSalt:
156     Type: String
157     Default: unset
158     Description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
159   HeatStackDomainAdminPassword:
160     Description: Password for heat_domain_admin user.
161     Type: String
162     Default: ''
163     NoEcho: true
164   MysqlInnodbBufferPoolSize:
165     Description: >
166         Specifies the size of the buffer pool in megabytes. Setting to
167         zero should be interpreted as "no value" and will defer to the
168         lower level default.
169     Type: Number
170     Default: 0
171   KeystoneCACertificate:
172     Default: ''
173     Description: Keystone self-signed certificate authority certificate.
174     Type: String
175   KeystoneSigningCertificate:
176     Default: ''
177     Description: Keystone certificate for verifying token validity.
178     Type: String
179   KeystoneSigningKey:
180     Default: ''
181     Description: Keystone key for signing tokens.
182     Type: String
183     NoEcho: true
184 Resources:
185   RabbitCookie:
186     Type: OS::Heat::RandomString
187     Properties:
188       length: 20
189       salt:
190         Ref: RabbitCookieSalt
191   undercloudConfig:
192     Type: OS::Heat::StructuredConfig
193     Properties:
194       config:
195         completion-signal: {get_input: deploy_signal_id}
196         admin-password:
197           Ref: AdminPassword
198         admin-token:
199           Ref: AdminToken
200         bootstrap_host:
201           bootstrap_nodeid:
202             Fn::Select:
203             - 0
204             - Fn::Select:
205               - 0
206               - Merge::Map:
207                   undercloud:
208                   - Fn::Select:
209                     - name
210                     - Fn::GetAtt:
211                       - undercloud
212                       - show
213           nodeid: {get_input: bootstack_nodeid}
214         bootstack:
215           public_interface_ip:
216             Ref: NeutronPublicInterfaceIP
217         controller-address:
218           get_input: controller_host
219         ceilometer:
220           db: mysql://ceilometer:unset@localhost/ceilometer
221           metering_secret: {Ref: CeilometerMeteringSecret}
222           snmpd_readonly_user_name:
223             Ref: SnmpdReadonlyUserName
224           snmpd_readonly_user_password:
225             Ref: SnmpdReadonlyUserPassword
226           service-password:
227             Ref: CeilometerPassword
228         db-password: unset
229         glance:
230           backend: file
231           db: mysql://glance:unset@localhost/glance
232           host: 127.0.0.1
233           port:
234             Ref: GlancePort
235           protocol:
236             Ref: GlanceProtocol
237           service-password:
238             Ref: GlancePassword
239           notifier-strategy:
240             Ref: GlanceNotifierStrategy
241           log-file:
242             Ref: GlanceLogFile
243         heat:
244           admin_password:
245             Ref: HeatPassword
246           admin_tenant_name: service
247           admin_user: heat
248           auth_encryption_key: unset___________
249           db: mysql://heat:unset@localhost/heat
250           stack_domain_admin_password: {Ref: HeatStackDomainAdminPassword}
251           watch_server_url: {get_input: heat.watch_server_url}
252           metadata_server_url: {get_input: heat.metadata_server_url}
253           waitcondition_server_url: {get_input: heat.waitcondition_server_url}
254         keystone:
255           db: mysql://keystone:unset@localhost/keystone
256           host: 127.0.0.1
257           ca_certificate: {Ref: KeystoneCACertificate}
258           signing_key: {Ref: KeystoneSigningKey}
259           signing_certificate: {Ref: KeystoneSigningCertificate}
260         mysql:
261           innodb_buffer_pool_size: {Ref: MysqlInnodbBufferPoolSize}
262         neutron:
263           host: 127.0.0.1
264           ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
265           ovs:
266             public_interface:
267               Ref: NeutronPublicInterface
268             public_interface_raw_device:
269               Ref: NeutronPublicInterfaceRawDevice
270             public_interface_route:
271               Ref: NeutronPublicInterfaceDefaultRoute
272             physical_bridge: br-ctlplane
273             physical_network: ctlplane
274             network_vlan_ranges: ctlplane
275             bridge_mappings: ctlplane:br-ctlplane
276             tenant_network_type: vlan
277             enable_tunneling: 'False'
278           service-password:
279             Ref: NeutronPassword
280         rabbit:
281           host: 127.0.0.1
282           username:
283             Ref: RabbitUserName
284           password:
285             Ref: RabbitPassword
286           cookie:
287             Fn::GetAtt:
288             - RabbitCookie
289             - value
290         ntp:
291           servers:
292             - {server: {Ref: NtpServer}, fudge: "stratum 0"}
293   undercloudPassthroughConfig:
294     Type: OS::Heat::StructuredConfig
295     Properties:
296       config: {get_input: passthrough_config}
297   undercloud:
298     Type: OS::Nova::Server
299     Properties:
300       image:
301         Ref: undercloudImage
302       flavor:
303         Ref: Flavor
304       key_name:
305         Ref: KeyName
306       image_update_policy:
307         Ref: ImageUpdatePolicy
308       networks:
309         - network: ctlplane
310       user_data_format: SOFTWARE_CONFIG
311   99_undercloudDeployment:
312     Type: OS::Heat::StructuredDeployment
313     Properties:
314       config: {Ref: undercloudConfig}
315       server: {Ref: undercloud}
316       input_values:
317         bootstack_nodeid:
318           Fn::Select:
319             - name
320             - Fn::GetAtt:
321               - undercloud
322               - show
323         controller_host:
324           Fn::Select:
325             - 0
326             - Fn::Select:
327               - ctlplane
328               - Fn::GetAtt:
329                 - undercloud
330                 - networks
331         heat.watch_server_url:
332           Fn::Join:
333             - ''
334             - - 'http://'
335               - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { "Fn::GetAtt": [ undercloud, networks ]}]]}
336               - ':8003'
337         heat.metadata_server_url:
338           Fn::Join:
339             - ''
340             - - 'http://'
341               - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { "Fn::GetAtt": [ undercloud, networks ]}]]}
342               - ':8000'
343         heat.waitcondition_server_url:
344           Fn::Join:
345             - ''
346             - - 'http://'
347               - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { "Fn::GetAtt": [ undercloud, networks ]}]]}
348               - ':8000/v1/waitcondition'
349   00_undercloudPassthroughDeployment:
350     Type: OS::Heat::StructuredDeployment
351     Properties:
352       config: {Ref: undercloudPassthroughConfig}
353       server: {Ref: undercloud}
354       signal_transport: NO_SIGNAL
355       input_values:
356         passthrough_config: {Ref: ExtraConfig}