[ha] Run OpenDaylight in cluster mode
[fuel.git] / mcp / reclass / classes / cluster / mcp-common-ha / openstack_init.yml.j2
1 ##############################################################################
2 # Copyright (c) 2018 Mirantis Inc., Enea AB and others.
3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
7 ##############################################################################
8 {%- import 'net_map.j2' as nm with context %}
9 ---
10 classes:
11   - cluster.all-mcp-arch-common.uca_repo
12 parameters:
13   _param:
14     # openstack service addresses
15 {%- if conf.MCP_VCP %}
16     openstack_proxy_control_address: ${_param:opnfv_openstack_proxy_control_address}
17     openstack_proxy_node01_control_address: ${_param:opnfv_openstack_proxy_node01_control_address}
18     openstack_proxy_node02_control_address: ${_param:opnfv_openstack_proxy_node02_control_address}
19 {%- else %}
20     openstack_proxy_control_address: ${_param:opnfv_openstack_control_address}
21     openstack_proxy_node01_control_address: ${_param:opnfv_openstack_control_node01_address}
22     openstack_proxy_node02_control_address: ${_param:opnfv_openstack_control_node03_address}
23 {%- endif %}
24
25     openstack_proxy_address: ${_param:opnfv_openstack_proxy_address}
26     openstack_proxy_node01_address: ${_param:opnfv_openstack_proxy_node01_address}
27     openstack_proxy_node02_address: ${_param:opnfv_openstack_proxy_node02_address}
28
29     openstack_control_address: ${_param:opnfv_openstack_control_address}
30     openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address}
31     openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address}
32     openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address}
33
34 {%- if conf.MCP_VCP %}
35     openstack_database_address: ${_param:opnfv_openstack_database_address}
36     openstack_database_node01_address: ${_param:opnfv_openstack_database_node01_address}
37     openstack_database_node02_address: ${_param:opnfv_openstack_database_node02_address}
38     openstack_database_node03_address: ${_param:opnfv_openstack_database_node03_address}
39
40     openstack_message_queue_address: ${_param:opnfv_openstack_message_queue_address}
41     openstack_message_queue_node01_address: ${_param:opnfv_openstack_message_queue_node01_address}
42     openstack_message_queue_node02_address: ${_param:opnfv_openstack_message_queue_node02_address}
43     openstack_message_queue_node03_address: ${_param:opnfv_openstack_message_queue_node03_address}
44
45     openstack_telemetry_address: ${_param:opnfv_openstack_telemetry_address}
46     openstack_telemetry_node01_address: ${_param:opnfv_openstack_telemetry_node01_address}
47     openstack_telemetry_node02_address: ${_param:opnfv_openstack_telemetry_node02_address}
48     openstack_telemetry_node03_address: ${_param:opnfv_openstack_telemetry_node03_address}
49 {%- else %}
50     openstack_database_address: ${_param:openstack_control_address}
51     openstack_database_node01_address: ${_param:openstack_control_node01_address}
52     openstack_database_node02_address: ${_param:openstack_control_node02_address}
53     openstack_database_node03_address: ${_param:openstack_control_node03_address}
54
55     openstack_message_queue_address: ${_param:openstack_control_address}
56     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
57     openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
58     openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
59
60     openstack_telemetry_address: ${_param:openstack_control_address}
61     openstack_telemetry_node01_address: ${_param:openstack_control_node01_address}
62     openstack_telemetry_node02_address: ${_param:openstack_control_node02_address}
63     openstack_telemetry_node03_address: ${_param:openstack_control_node03_address}
64 {%- endif %}
65
66     # openstack service hostnames
67 {%- if conf.MCP_VCP %}
68     openstack_proxy_hostname: prx
69     openstack_proxy_node01_hostname: prx01
70     openstack_proxy_node02_hostname: prx02
71     openstack_control_hostname: ctl
72     openstack_control_node01_hostname: ctl01
73     openstack_control_node02_hostname: ctl02
74     openstack_control_node03_hostname: ctl03
75     openstack_database_hostname: dbs
76     openstack_database_node01_hostname: dbs01
77     openstack_database_node02_hostname: dbs02
78     openstack_database_node03_hostname: dbs03
79     openstack_message_queue_hostname: msg
80     openstack_message_queue_node01_hostname: msg01
81     openstack_message_queue_node02_hostname: msg02
82     openstack_message_queue_node03_hostname: msg03
83     openstack_telemetry_hostname: mdb
84     openstack_telemetry_node01_hostname: mdb01
85     openstack_telemetry_node02_hostname: mdb02
86     openstack_telemetry_node03_hostname: mdb03
87 {%- else %}
88     openstack_proxy_hostname: ${_param:openstack_control_hostname}
89     openstack_proxy_node01_hostname: ${_param:openstack_control_node01_hostname}
90     openstack_proxy_node02_hostname: ${_param:openstack_control_node03_hostname}
91     openstack_control_hostname: kvm
92     openstack_control_node01_hostname: kvm01
93     openstack_control_node02_hostname: kvm02
94     openstack_control_node03_hostname: kvm03
95     openstack_database_hostname: ${_param:openstack_control_hostname}
96     openstack_database_node01_hostname: ${_param:openstack_control_node01_hostname}
97     openstack_database_node02_hostname: ${_param:openstack_control_node02_hostname}
98     openstack_database_node03_hostname: ${_param:openstack_control_node03_hostname}
99     openstack_message_queue_hostname: ${_param:openstack_control_hostname}
100     openstack_message_queue_node01_hostname: ${_param:openstack_control_node01_hostname}
101     openstack_message_queue_node02_hostname: ${_param:openstack_control_node02_hostname}
102     openstack_message_queue_node03_hostname: ${_param:openstack_control_node03_hostname}
103     openstack_telemetry_hostname: ${_param:openstack_control_hostname}
104     openstack_telemetry_node01_hostname: ${_param:openstack_control_node01_hostname}
105     openstack_telemetry_node02_hostname: ${_param:openstack_control_node02_hostname}
106     openstack_telemetry_node03_hostname: ${_param:openstack_control_node03_hostname}
107 {%- endif %}
108
109     # openstack compute
110     openstack_compute_node01_hostname: cmp001
111     openstack_compute_node02_hostname: cmp002
112
113     openstack_region: RegionOne
114     admin_email: root@localhost
115     db_connection_recycle_time: 300
116     # Neutron osv/nodvr
117     neutron_control_dvr: 'False'
118     neutron_global_physnet_mtu: 1500
119     neutron_external_mtu: 1500
120     neutron_gateway_dvr: 'False'
121     neutron_gateway_agent_mode: legacy
122     neutron_compute_dvr: 'False'
123     neutron_compute_agent_mode: legacy
124     neutron_compute_external_access: 'True'
125     galera_server_cluster_name: openstack_cluster
126     glance_version: ${_param:openstack_version}
127     glance_service_host: ${_param:openstack_control_address}
128     keystone_version: ${_param:openstack_version}
129     keystone_service_host: ${_param:openstack_control_address}
130     heat_version: ${_param:openstack_version}
131     heat_service_host: ${_param:openstack_control_address}
132     cinder_version: ${_param:openstack_version}
133     cinder_service_host: ${_param:openstack_control_address}
134     ceilometer_version: ${_param:openstack_version}
135     ceilometer_service_host: ${_param:openstack_telemetry_address}
136     nova_version: ${_param:openstack_version}
137     nova_service_host: ${_param:openstack_control_address}
138     neutron_version: ${_param:openstack_version}
139     neutron_service_host: ${_param:openstack_control_address}
140 {%- if conf.MCP_VCP %}
141     glusterfs_service_host: ${_param:infra_kvm_address}
142 {%- else %}
143     glusterfs_service_host: ${_param:openstack_control_address}
144 {%- endif %}
145     mysql_admin_user: root
146     aodh_version: ${_param:openstack_version}
147     barbican_version: ${_param:openstack_version}
148     barbican_service_host: ${_param:openstack_control_address}
149     barbican_integration_enabled: true
150     horizon_version: ${_param:openstack_version}
151     horizon_identity_host: ${_param:openstack_control_address}
152     horizon_identity_encryption: none
153     horizon_identity_version: 3
154     aodh_service_host: ${_param:openstack_telemetry_address}
155     gnocchi_version: 4.2
156     gnocchi_service_host: ${_param:openstack_telemetry_address}
157     panko_version: ${_param:openstack_version}
158     panko_service_host: ${_param:openstack_telemetry_address}
159     ceilometer_agent_default_polling_interval: 180
160     ceilometer_agent_default_polling_meters:
161       - "*"
162     designate_service_host: ${_param:openstack_control_address}
163     designate_domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
164     designate_pool_ns_records:
165       - hostname: 'ns1.example.org.'
166         priority: 10
167     designate_pool_nameservers:
168       - host: ${_param:openstack_control_node01_address}
169         port: 53
170       - host: ${_param:openstack_control_node02_address}
171         port: 53
172       - host: ${_param:openstack_control_node03_address}
173         port: 53
174     designate_pool_target_type: bind9
175     designate_pool_target_masters:
176       - host: ${_param:openstack_control_node01_address}
177         port: 5354
178       - host: ${_param:openstack_control_node02_address}
179         port: 5354
180       - host: ${_param:openstack_control_node03_address}
181         port: 5354
182     designate_pool_target_options:
183       host: ${_param:openstack_control_node01_address}
184       port: 53
185       rndc_host: ${_param:openstack_control_node01_address}
186       rndc_port: 953
187       rndc_key_file: /etc/designate/rndc.key
188     designate_version: ${_param:openstack_version}
189     # Billing
190     # keystone_billometer_password: opnfv_secret
191     # keystone_billometer_address: ${_param:billometer_service_host}
192     # billometer_service_host: ${_param:openstack_billing_address}
193     # billometer_version: ${_param:openstack_version}
194     # billometer_secret_key: opnfv_secretpasswordpasswordpassword
195     # billometer_identity_password: ${_param:keystone_billometer_password}
196     # billometer_identity_host: ${_param:openstack_control_address}
197     # billometer_identity_token: ${_param:keystone_service_token}
198   linux:
199     system:
200       repo:
201         uca:
202           pin:
203             - pin: 'release o=Canonical'
204               priority: 1200
205               package: 'libvirt* qemu* openvswitch* python-openvswitch ovn* dpdk* libdpdk*'
206 {%- if 'aarch64' in nm.cluster.arch %}
207         armband_3:  # Should be in sync with the repo config generated via curtin/MaaS
208           source: "deb http://linux.enea.com/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-armband main"
209           key: ${_param:armband_key}
210           pin:
211             - pin: 'release a=${_param:openstack_version}-armband'
212               priority: 1201
213               package: '*'
214 {%- endif %}
215       kernel:
216         sysctl:
217           net.ipv4.tcp_congestion_control: yeah
218           net.ipv4.tcp_slow_start_after_idle: 0
219           net.ipv4.tcp_fin_timeout: 30
220       package:
221         python-tornado:
222           version: latest
223     network:
224       host:
225 {%- if conf.MCP_VCP %}
226         prx:
227           address: ${_param:openstack_proxy_control_address}
228           names:
229             - ${_param:openstack_proxy_hostname}
230             - ${_param:openstack_proxy_hostname}.${_param:cluster_domain}
231         prx01:
232           address: ${_param:openstack_proxy_node01_control_address}
233           names:
234             - ${_param:openstack_proxy_node01_hostname}
235             - ${_param:openstack_proxy_node01_hostname}.${_param:cluster_domain}
236         prx02:
237           address: ${_param:openstack_proxy_node02_control_address}
238           names:
239             - ${_param:openstack_proxy_node02_hostname}
240             - ${_param:openstack_proxy_node02_hostname}.${_param:cluster_domain}
241         ctl:
242           address: ${_param:openstack_control_address}
243           names:
244             - ${_param:openstack_control_hostname}
245             - ${_param:openstack_control_hostname}.${_param:cluster_domain}
246         ctl01:
247           address: ${_param:openstack_control_node01_address}
248           names:
249             - ${_param:openstack_control_node01_hostname}
250             - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
251         ctl02:
252           address: ${_param:openstack_control_node02_address}
253           names:
254             - ${_param:openstack_control_node02_hostname}
255             - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
256         ctl03:
257           address: ${_param:openstack_control_node03_address}
258           names:
259             - ${_param:openstack_control_node03_hostname}
260             - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
261         msg:
262           address: ${_param:openstack_message_queue_address}
263           names:
264             - ${_param:openstack_message_queue_hostname}
265             - ${_param:openstack_message_queue_hostname}.${_param:cluster_domain}
266         msg01:
267           address: ${_param:openstack_message_queue_node01_address}
268           names:
269             - ${_param:openstack_message_queue_node01_hostname}
270             - ${_param:openstack_message_queue_node01_hostname}.${_param:cluster_domain}
271         msg02:
272           address: ${_param:openstack_message_queue_node02_address}
273           names:
274             - ${_param:openstack_message_queue_node02_hostname}
275             - ${_param:openstack_message_queue_node02_hostname}.${_param:cluster_domain}
276         msg03:
277           address: ${_param:openstack_message_queue_node03_address}
278           names:
279             - ${_param:openstack_message_queue_node03_hostname}
280             - ${_param:openstack_message_queue_node03_hostname}.${_param:cluster_domain}
281         dbs:
282           address: ${_param:openstack_database_address}
283           names:
284             - ${_param:openstack_database_hostname}
285             - ${_param:openstack_database_hostname}.${_param:cluster_domain}
286         dbs01:
287           address: ${_param:openstack_database_node01_address}
288           names:
289             - ${_param:openstack_database_node01_hostname}
290             - ${_param:openstack_database_node01_hostname}.${_param:cluster_domain}
291         dbs02:
292           address: ${_param:openstack_database_node02_address}
293           names:
294             - ${_param:openstack_database_node02_hostname}
295             - ${_param:openstack_database_node02_hostname}.${_param:cluster_domain}
296         dbs03:
297           address: ${_param:openstack_database_node03_address}
298           names:
299             - ${_param:openstack_database_node03_hostname}
300             - ${_param:openstack_database_node03_hostname}.${_param:cluster_domain}
301         mdb:
302           address: ${_param:openstack_telemetry_address}
303           names:
304             - ${_param:openstack_telemetry_hostname}
305             - ${_param:openstack_telemetry_hostname}.${_param:cluster_domain}
306         mdb01:
307           address: ${_param:openstack_telemetry_node01_address}
308           names:
309             - ${_param:openstack_telemetry_node01_hostname}
310             - ${_param:openstack_telemetry_node01_hostname}.${_param:cluster_domain}
311         mdb02:
312           address: ${_param:openstack_telemetry_node02_address}
313           names:
314             - ${_param:openstack_telemetry_node02_hostname}
315             - ${_param:openstack_telemetry_node02_hostname}.${_param:cluster_domain}
316         mdb03:
317           address: ${_param:openstack_telemetry_node03_address}
318           names:
319             - ${_param:openstack_telemetry_node03_hostname}
320             - ${_param:openstack_telemetry_node03_hostname}.${_param:cluster_domain}
321 {%- else %}
322         kvm:
323           address: ${_param:openstack_control_address}
324           names:
325             - ${_param:openstack_control_hostname}
326             - ${_param:openstack_control_hostname}.${_param:cluster_domain}
327         kvm01:
328           address: ${_param:openstack_control_node01_address}
329           names:
330             - ${_param:openstack_control_node01_hostname}
331             - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
332         kvm02:
333           address: ${_param:openstack_control_node02_address}
334           names:
335             - ${_param:openstack_control_node02_hostname}
336             - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
337         kvm03:
338           address: ${_param:openstack_control_node03_address}
339           names:
340             - ${_param:openstack_control_node03_hostname}
341             - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
342 {%- endif %}
343 {#- For compute nodes, expand values in-place, bypassing reclass param expansion #}
344 {%- for cmp in range(1, nm.cmp_nodes + 1) %}
345   {%- set h = 'cmp%03d' | format(cmp) %}
346   {%- set mgmt = nm.net_mgmt_hosts | length + nm.start_ip[nm.net_mgmt] + loop.index %}
347         {{ h }}:
348           address: {{ nm.net_mgmt | ipnet_hostaddr(mgmt) }}
349           names:
350             - {{ h }}
351             - {{ h }}.${_param:cluster_domain}
352 {%- endfor %}