3292b7705070aeee3188aab6ea32ac78d4ad5556
[pharos.git] / config / installers / fuel / pod_config.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 {%- set net = conf.idf.net_config %}
9 {%- set net_admin = [net.admin.network, net.admin.mask] | join("/")  %}
10 {%- set net_mgmt = [net.mgmt.network, net.mgmt.mask] | join("/")  %}
11 {%- set net_private = [net.private.network, net.private.mask] | join("/")  %}
12 {%- set net_public =  [net.public.network, net.public.mask] | join("/")  %}
13 {%- set networks = [net_admin, net_mgmt, net_private, net_public] %}
14
15 {%- set vlan_mgmt = net.mgmt.vlan %}
16 {%- set vlan_private = net.private.vlan %}
17 {%- set pxe_interface = net.admin.interface %}
18
19 {%- if net.public.dns is defined %}
20     {%- set dns_public = net.public.dns %}
21 {%- else %}
22     {%- set dns_public = [ '8.8.8.8', '8.8.4.4' ] %}
23 {%- endif %}
24
25 {%- if net.public.gateway is defined %}
26     {%- set net_public_gw = net.public.gateway %}
27 {%- endif %}
28 {%- if conf.idf.fuel.network.public_pool is defined %}
29     {%- set net_public_pool_start = conf.idf.fuel.network.public_pool.start_ip %}
30     {%- set net_public_pool_end = conf.idf.fuel.network.public_pool.end_ip %}
31 {%- endif %}
32
33 {%- if conf.idf.fuel.maas is defined %}
34     {%- set maas_timeout_comissioning = conf.idf.fuel.maas.timeout_comissioning %}
35     {%- set maas_timeout_deploying = conf.idf.fuel.maas.timeout_deploying %}
36 {%- else %}
37     {%- set maas_timeout_comissioning = 10 %}
38     {%- set maas_timeout_deploying = 15 %}
39 {%- endif %}
40
41 {%- set cmp_nodes =  3 %}
42
43 {%- set net_admin_hosts = [
44     'opnfv_infra_config_pxe_address',
45     'opnfv_infra_maas_node01_deploy_address',
46     'opnfv_infra_maas_pxe_start_address'] %}
47
48 {%- set net_mgmt_hosts = [
49     'opnfv_infra_config_address',
50     'opnfv_infra_maas_node01_address',
51     'opnfv_openstack_proxy_control_address',
52     'opnfv_openstack_proxy_node01_control_address',
53     'opnfv_openstack_proxy_node02_control_address',
54     'opnfv_openstack_gateway_node01_address',
55     'opnfv_openstack_gateway_node02_address',
56     'opnfv_openstack_gateway_node03_address',
57     'opnfv_infra_kvm_address',
58     'opnfv_infra_kvm_node01_address',
59     'opnfv_infra_kvm_node02_address',
60     'opnfv_infra_kvm_node03_address',
61     'opnfv_openstack_database_address',
62     'opnfv_openstack_database_node01_address',
63     'opnfv_openstack_database_node02_address',
64     'opnfv_openstack_database_node03_address',
65     'opnfv_openstack_message_queue_address',
66     'opnfv_openstack_message_queue_node01_address',
67     'opnfv_openstack_message_queue_node02_address',
68     'opnfv_openstack_message_queue_node03_address',
69     'opnfv_openstack_telemetry_address',
70     'opnfv_openstack_telemetry_node01_address',
71     'opnfv_openstack_telemetry_node02_address',
72     'opnfv_openstack_telemetry_node03_address',
73     'opnfv_openstack_control_address',
74     'opnfv_openstack_control_node01_address',
75     'opnfv_openstack_control_node02_address',
76     'opnfv_openstack_control_node03_address',
77     'opnfv_opendaylight_server_node01_single_address',
78     'opnfv_stacklight_monitor_address',
79     'opnfv_stacklight_monitor_node01_address',
80     'opnfv_stacklight_monitor_node02_address',
81     'opnfv_stacklight_monitor_node03_address',
82     'opnfv_stacklight_log_address',
83     'opnfv_stacklight_log_node01_address',
84     'opnfv_stacklight_log_node02_address',
85     'opnfv_stacklight_log_node03_address',
86     'opnfv_stacklight_telemetry_address',
87     'opnfv_stacklight_telemetry_node01_address',
88     'opnfv_stacklight_telemetry_node02_address',
89     'opnfv_stacklight_telemetry_node03_address'] %}
90
91 {%- set net_public_hosts = [
92     'opnfv_openstack_proxy_address',
93     'opnfv_openstack_proxy_node01_address',
94     'opnfv_openstack_proxy_node02_address',
95     'opnfv_openstack_gateway_node01_external_address',
96     'opnfv_openstack_gateway_node02_external_address',
97     'opnfv_openstack_gateway_node03_external_address',
98     'opnfv_openstack_control_node01_external_address',
99     'opnfv_openstack_control_node02_external_address',
100     'opnfv_openstack_control_node03_external_address'] %}
101
102 {%- set net_private_hosts = [
103     'opnfv_openstack_gateway_node01_tenant_address',
104     'opnfv_openstack_gateway_node02_tenant_address',
105     'opnfv_openstack_gateway_node03_tenant_address'] %}
106
107 {%- set hosts = {
108     net_admin: net_admin_hosts,
109     net_mgmt: net_mgmt_hosts,
110     net_private: net_private_hosts,
111     net_public: net_public_hosts } %}
112
113 {%- set start_ip = {
114     net_admin: 1,
115     net_mgmt: 1,
116     net_private: 1,
117     net_public: 1 } %}
118
119 {%- for nn, nd in net.items() %}
120   {%- if 'ip-range' in nd and 'network' in nd and 'mask' in nd %}
121     {%- set net_nd = [nd.network, nd.mask] | join('/')  %}
122     {%- if net_nd in start_ip %}
123       {%- set nd_start_ip = nd['ip-range'].split('-')[0] %}
124       {%- set nd_start = net_nd | ipnet_range_size(net_nd | ipnet_hostmin, nd_start_ip) %}
125       {%- do start_ip.update({net_nd: nd_start}) %}
126     {%- endif %}
127   {%- endif %}
128 {%- endfor %}
129
130 {%- set total_public_hosts = net_public_hosts | length + cmp_nodes  %}
131 {%- if net_public_pool_start is not defined or net_public_pool_end is not defined %}
132     {%- set net_public_pool_start = net_public | ipnet_hostaddr(total_public_hosts + start_ip[net_public] +1) %}
133     {%- set net_public_pool_end = net_public | ipnet_hostmax -1  %}
134 {%- endif %}
135
136 ---
137 parameters:
138   _param:
139
140     opnfv_maas_timeout_comissioning: {{ maas_timeout_comissioning }}
141     opnfv_maas_timeout_deploying: {{ maas_timeout_deploying }}
142
143     opnfv_jump_bridge_admin: {{ conf.idf.fuel.jumphost.bridges.admin }}
144     opnfv_jump_bridge_mgmt: {{ conf.idf.fuel.jumphost.bridges.mgmt }}
145     opnfv_jump_bridge_private: {{ conf.idf.fuel.jumphost.bridges.private }}
146     opnfv_jump_bridge_public: {{ conf.idf.fuel.jumphost.bridges.public }}
147
148     opnfv_infra_maas_pxe_network_address: {{ net.admin.network }}
149     opnfv_infra_maas_pxe_end_address: {{ net_admin | ipnet_hostmax }}
150     opnfv_net_public: {{ net_public }}
151     opnfv_net_public_mask: {{ net_public | ipnet_netmask }}
152     opnfv_net_public_gw: {{ net_public_gw }}
153     opnfv_net_public_pool_start: {{ net_public_pool_start }}
154     opnfv_net_public_pool_end: {{ net_public_pool_end }}
155     opnfv_name_servers: {{ dns_public }}
156     opnfv_dns_server01: '{{ dns_public[0] }}'
157     opnfv_net_mgmt_vlan: {{ vlan_mgmt }}
158     opnfv_net_tenant_vlan: "{{ vlan_private | string | replace('-', ':') }}"
159
160 {%- for network in networks %}
161 {%- for key in hosts[network] %}
162 {%- set i = loop.index  + start_ip[network] %}
163     {{key}}: {{ network | ipnet_hostaddr(i) }}
164 {%- endfor %}
165 {%- endfor %}
166
167 {%- for cmp in range(1, cmp_nodes +1) %}
168   {%- set n = '%02d' | format(cmp) %}
169     {%- set mgmt = net_mgmt_hosts | length + start_ip[net_mgmt] + loop.index %}
170     {%- set pub = net_public_hosts | length + start_ip[net_public] + loop.index %}
171     {%- set pri = net_private_hosts | length + start_ip[net_private] + loop.index %}
172     opnfv_openstack_compute_node{{n}}_single_address: {{ net_mgmt | ipnet_hostaddr(mgmt) }}
173     opnfv_openstack_compute_node{{n}}_control_address: {{ net_mgmt | ipnet_hostaddr(mgmt) }}
174     opnfv_openstack_compute_node{{n}}_tenant_address: {{ net_private | ipnet_hostaddr(pri) }}
175     opnfv_openstack_compute_node{{n}}_external_address: {{ net_public | ipnet_hostaddr(pub) }}
176 {%- endfor %}
177
178 {%- for node in conf.nodes %}
179   {%- set n = '%02d' | format(loop.index) %}
180     opnfv_maas_node{{n}}_architecture: '{{ node.node.arch | dpkg_arch }}/generic'
181     opnfv_maas_node{{n}}_power_address: {{ node.remote_management.address.rsplit('/')[0] }}
182     opnfv_maas_node{{n}}_power_type: {{ node.remote_management.type }}
183     opnfv_maas_node{{n}}_power_user: {{ node.remote_management.user }}
184     opnfv_maas_node{{n}}_power_password: {{ node.remote_management.pass }}
185     opnfv_maas_node{{n}}_interface_mac: '{{ node.interfaces[pxe_interface].mac_address }}'
186 {%- endfor %}