############################################################################## # Copyright (c) 2018 Mirantis Inc., Enea AB and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## {%- set net = conf.idf.net_config %} {%- set net_admin = [net.admin.network, net.admin.mask] | join("/") %} {%- set net_mgmt = [net.mgmt.network, net.mgmt.mask] | join("/") %} {%- set net_private = [net.private.network, net.private.mask] | join("/") %} {%- set net_public = [net.public.network, net.public.mask] | join("/") %} {%- set networks = [net_admin, net_mgmt, net_private, net_public] %} {%- set vlan_mgmt = net.mgmt.vlan %} {%- set vlan_private = net.private.vlan %} {%- set pxe_interface = net.admin.interface %} {%- if net.public.dns is defined %} {%- set dns_public = net.public.dns %} {%- else %} {%- set dns_public = [ '8.8.8.8', '8.8.4.4' ] %} {%- endif %} {%- if net.public.gateway is defined %} {%- set net_public_gw = net.public.gateway %} {%- endif %} {%- if conf.idf.fuel.network.public_pool is defined %} {%- set net_public_pool_start = conf.idf.fuel.network.public_pool.start_ip %} {%- set net_public_pool_end = conf.idf.fuel.network.public_pool.end_ip %} {%- endif %} {%- if conf.idf.fuel.maas is defined %} {%- set maas_timeout_comissioning = conf.idf.fuel.maas.timeout_comissioning %} {%- set maas_timeout_deploying = conf.idf.fuel.maas.timeout_deploying %} {%- else %} {%- set maas_timeout_comissioning = 10 %} {%- set maas_timeout_deploying = 15 %} {%- endif %} {%- set cmp_nodes = 3 %} {%- set net_admin_hosts = [ 'opnfv_infra_config_pxe_address', 'opnfv_infra_maas_node01_deploy_address', 'opnfv_infra_maas_pxe_start_address'] %} {%- set net_mgmt_hosts = [ 'opnfv_infra_config_address', 'opnfv_infra_maas_node01_address', 'opnfv_openstack_proxy_control_address', 'opnfv_openstack_proxy_node01_control_address', 'opnfv_openstack_proxy_node02_control_address', 'opnfv_openstack_gateway_node01_address', 'opnfv_openstack_gateway_node02_address', 'opnfv_openstack_gateway_node03_address', 'opnfv_infra_kvm_address', 'opnfv_infra_kvm_node01_address', 'opnfv_infra_kvm_node02_address', 'opnfv_infra_kvm_node03_address', 'opnfv_openstack_database_address', 'opnfv_openstack_database_node01_address', 'opnfv_openstack_database_node02_address', 'opnfv_openstack_database_node03_address', 'opnfv_openstack_message_queue_address', 'opnfv_openstack_message_queue_node01_address', 'opnfv_openstack_message_queue_node02_address', 'opnfv_openstack_message_queue_node03_address', 'opnfv_openstack_telemetry_address', 'opnfv_openstack_telemetry_node01_address', 'opnfv_openstack_telemetry_node02_address', 'opnfv_openstack_telemetry_node03_address', 'opnfv_openstack_control_address', 'opnfv_openstack_control_node01_address', 'opnfv_openstack_control_node02_address', 'opnfv_openstack_control_node03_address', 'opnfv_opendaylight_server_node01_single_address', 'opnfv_stacklight_monitor_address', 'opnfv_stacklight_monitor_node01_address', 'opnfv_stacklight_monitor_node02_address', 'opnfv_stacklight_monitor_node03_address', 'opnfv_stacklight_log_address', 'opnfv_stacklight_log_node01_address', 'opnfv_stacklight_log_node02_address', 'opnfv_stacklight_log_node03_address', 'opnfv_stacklight_telemetry_address', 'opnfv_stacklight_telemetry_node01_address', 'opnfv_stacklight_telemetry_node02_address', 'opnfv_stacklight_telemetry_node03_address'] %} {%- set net_public_hosts = [ 'opnfv_openstack_proxy_address', 'opnfv_openstack_proxy_node01_address', 'opnfv_openstack_proxy_node02_address', 'opnfv_openstack_gateway_node01_external_address', 'opnfv_openstack_gateway_node02_external_address', 'opnfv_openstack_gateway_node03_external_address', 'opnfv_openstack_control_node01_external_address', 'opnfv_openstack_control_node02_external_address', 'opnfv_openstack_control_node03_external_address'] %} {%- set net_private_hosts = [ 'opnfv_openstack_gateway_node01_tenant_address', 'opnfv_openstack_gateway_node02_tenant_address', 'opnfv_openstack_gateway_node03_tenant_address'] %} {%- set hosts = { net_admin: net_admin_hosts, net_mgmt: net_mgmt_hosts, net_private: net_private_hosts, net_public: net_public_hosts } %} {%- set start_ip = { net_admin: 1, net_mgmt: 1, net_private: 1, net_public: 1 } %} {%- for nn, nd in net.items() %} {%- if 'ip-range' in nd and 'network' in nd and 'mask' in nd %} {%- set net_nd = [nd.network, nd.mask] | join('/') %} {%- if net_nd in start_ip %} {%- set nd_start_ip = nd['ip-range'].split('-')[0] %} {%- set nd_start = net_nd | ipnet_range_size(net_nd | ipnet_hostmin, nd_start_ip) %} {%- do start_ip.update({net_nd: nd_start}) %} {%- endif %} {%- endif %} {%- endfor %} {%- set total_public_hosts = net_public_hosts | length + cmp_nodes %} {%- if net_public_pool_start is not defined or net_public_pool_end is not defined %} {%- set net_public_pool_start = net_public | ipnet_hostaddr(total_public_hosts + start_ip[net_public] +1) %} {%- set net_public_pool_end = net_public | ipnet_hostmax -1 %} {%- endif %} --- parameters: _param: opnfv_maas_timeout_comissioning: {{ maas_timeout_comissioning }} opnfv_maas_timeout_deploying: {{ maas_timeout_deploying }} opnfv_jump_bridge_admin: {{ conf.idf.fuel.jumphost.bridges.admin }} opnfv_jump_bridge_mgmt: {{ conf.idf.fuel.jumphost.bridges.mgmt }} opnfv_jump_bridge_private: {{ conf.idf.fuel.jumphost.bridges.private }} opnfv_jump_bridge_public: {{ conf.idf.fuel.jumphost.bridges.public }} opnfv_infra_maas_pxe_network_address: {{ net.admin.network }} opnfv_infra_maas_pxe_end_address: {{ net_admin | ipnet_hostmax }} opnfv_net_public: {{ net_public }} opnfv_net_public_mask: {{ net_public | ipnet_netmask }} opnfv_net_public_gw: {{ net_public_gw }} opnfv_net_public_pool_start: {{ net_public_pool_start }} opnfv_net_public_pool_end: {{ net_public_pool_end }} opnfv_name_servers: {{ dns_public }} opnfv_dns_server01: '{{ dns_public[0] }}' opnfv_net_mgmt_vlan: {{ vlan_mgmt }} opnfv_net_tenant_vlan: "{{ vlan_private | string | replace('-', ':') }}" {%- for network in networks %} {%- for key in hosts[network] %} {%- set i = loop.index + start_ip[network] %} {{key}}: {{ network | ipnet_hostaddr(i) }} {%- endfor %} {%- endfor %} {%- for cmp in range(1, cmp_nodes +1) %} {%- set n = '%02d' | format(cmp) %} {%- set mgmt = net_mgmt_hosts | length + start_ip[net_mgmt] + loop.index %} {%- set pub = net_public_hosts | length + start_ip[net_public] + loop.index %} {%- set pri = net_private_hosts | length + start_ip[net_private] + loop.index %} opnfv_openstack_compute_node{{n}}_single_address: {{ net_mgmt | ipnet_hostaddr(mgmt) }} opnfv_openstack_compute_node{{n}}_control_address: {{ net_mgmt | ipnet_hostaddr(mgmt) }} opnfv_openstack_compute_node{{n}}_tenant_address: {{ net_private | ipnet_hostaddr(pri) }} opnfv_openstack_compute_node{{n}}_external_address: {{ net_public | ipnet_hostaddr(pub) }} {%- endfor %} {%- for node in conf.nodes %} {%- set n = '%02d' | format(loop.index) %} opnfv_maas_node{{n}}_architecture: '{{ node.node.arch | dpkg_arch }}/generic' opnfv_maas_node{{n}}_power_address: {{ node.remote_management.address.rsplit('/')[0] }} opnfv_maas_node{{n}}_power_type: {{ node.remote_management.type }} opnfv_maas_node{{n}}_power_user: {{ node.remote_management.user }} opnfv_maas_node{{n}}_power_password: {{ node.remote_management.pass }} opnfv_maas_node{{n}}_interface_mac: '{{ node.interfaces[pxe_interface].mac_address }}' {%- endfor %}