Files
openstack-ansible-ops/multi-node-aio/playbooks/pxe/configs/systemd-networkd/systemd-network.sh.j2
Dave Wilde 58c7890bfc MNAIO: flat networking fixes
With the switch to systemd-networkd the veth pairs for flat networking
and lbaas aren't created.  This creates veth pairs if the server has the
appropriate server_networks defined.

* Create the veth network files

With this simple Match directive networkd will bring the interface up.

Change-Id: I0ae4375be128594a861c18aa33a98378859dd9d3
2018-11-01 07:56:21 -05:00

104 lines
2.1 KiB
Django/Jinja

#!/bin/bash
# this script generates the networking using systemd-networkd
{% set server_networks = hostvars[item]['server_networks'] %}
mkdir -p /etc/systemd/network
systemctl disable network
systemctl disable NetworkManager
systemctl enable systemd-networkd
systemctl enable systemd-resolved
systemctl start systemd-resolved
rm -f /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
{% if hostvars[item]['server_hostname'] == 'loadbalancer1' %}
# set nonlocal binding for haproxy
echo "net.ipv4.ip_nonlocal_bind=1" >> /etc/sysctl.conf
sysctl -p
{% endif %}
{% for key, value in server_networks.items()|sort(attribute='1.iface') %}
# generate physical network devices
cat <<EOF >/etc/systemd/network/{{ value.iface }}.network
[Match]
Name={{ value.iface }}
[Network]
Bridge=br-{{ key }}
EOF
# generate bridge net devices
cat <<EOF >/etc/systemd/network/br-{{ key }}.netdev
[NetDev]
Name=br-{{ key }}
Kind=bridge
EOF
# generate network files
cat <<EOF >/etc/systemd/network/br-{{ key }}.network
[Match]
Name=br-{{ key }}
[Network]
{% if value.inet_type == 'dhcp' %}
DHCP=yes
[DHCP]
UseDNS=yes
UseNTP=yes
{% elif value.address is defined %}
Address={{ value.address }}
{% endif %}
EOF
# generate files for flat networking
{% if value.iface is defined and key == "flat" %}
cat <<EOF >/etc/systemd/network/br-veth-{{ key }}.netdev
[NetDev]
Name=v{{ value.iface }}
Kind=veth
[Peer]
Name=br-veth-{{ key }}
EOF
cat <<EOF >/etc/systemd/network/br-veth-{{ key }}.network
[Match]
Name=br-veth-{{ key }}
[Network]
Bridge=br-{{ key }}
ConfigureWithoutCarrier=yes
EOF
cat <<EOF >/etc/systemd/network/v{{ value.iface }}.network
[Match]
Name=v{{ value.iface }}
EOF
{% endif %}
# generate files for lbaas
{% if value.iface is defined and key == "lbaas" %}
cat <<EOF >/etc/systemd/network/br-veth-{{ key }}.netdev
[NetDev]
Name=v{{ value.iface }}
Kind=veth
[Peer]
Name=br-veth-{{ key }}
EOF
cat <<EOF >/etc/systemd/network/br-veth-{{ key }}.network
[Match]
Name=br-veth-{{ key }}
[Network]
Bridge=br-{{ key }}
ConfigureWithoutCarrier=yes
EOF
cat <<EOF >/etc/systemd/network/v{{ value.iface }}.network
[Match]
Name=v{{ value.iface }}
EOF
{% endif %}
{% endfor %}