Merge "Tuneup prep and local routing when running w/out bridges"

This commit is contained in:
Zuul 2018-08-10 05:21:33 +00:00 committed by Gerrit Code Review
commit 4d40aa71cc
3 changed files with 27 additions and 19 deletions

View File

@ -86,23 +86,25 @@
{%- if interface_data['type'] == 'bridge' %} {%- if interface_data['type'] == 'bridge' %}
{%- set _ = start_commands.append('-/sbin/ip link add dev veth-' + interface + '1 type veth peer name veth-' + interface + '2') %} {%- set _ = start_commands.append('-/sbin/ip link add dev veth-' + interface + '1 type veth peer name veth-' + interface + '2') %}
{%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 up') %} {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 up') %}
{%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 mtu ' + (interface_data['mtu'] | default(1500)) | string) %} {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 mtu ' ~ (interface_data["mtu"] | default(1500))) %}
{%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 up') %} {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 up') %}
{%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 mtu ' + (interface_data['mtu'] | default(1500)) | string) %} {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 mtu ' ~ (interface_data["mtu"] | default(1500))) %}
{%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 master ' + value.bridge) %} {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 master ' + value.bridge) %}
{%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link veth-' + interface + '2 type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %} {%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link veth-' + interface + '2 mtu ' ~ (interface_data["mtu"] | default(1500)) ~ ' type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %}
{%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %} {%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %}
{%- else %} {%- else %}
{%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link ' + value.bridge + ' type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %} {%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link ' + value.bridge + ' mtu ' ~ (interface_data["mtu"] | default(1500)) ~ ' type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %}
{%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %} {%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %}
{% if hostvars[inventory_hostname][key.split('_')[0] + '_cidr'] is defined %} {% if not (value.enable_dhcp | default(false)) | bool %}
{% set net_cidr = hostvars[inventory_hostname]['container_cidr'] %} {% if hostvars[inventory_hostname][key.split('_')[0] + '_cidr'] is defined %}
{%- set _ = start_commands.append('-/sbin/ip route add ' + net_cidr + ' dev ' + mv_interface + ' metric 100 proto kernel scope link table local') %} {% set net_cidr = hostvars[inventory_hostname]['container_cidr'] %}
{% elif (value.address is defined) and (value.netmask is defined) %} {%- set _ = start_commands.append('-/sbin/ip route add local ' + net_cidr + ' dev ' + mv_interface + ' metric 100 proto kernel scope host table local') %}
{% set prefix = (value.address ~ '/' ~ value.netmask) | ipaddr('prefix') %} {% elif (value.address is defined) and (value.netmask is defined) %}
{% set _network = (value.address ~ '/' ~ prefix) | ipaddr('network') %} {% set prefix = (value.address ~ '/' ~ value.netmask) | ipaddr('prefix') %}
{% set _net_addr_network = (_network ~ '/' ~ prefix) %} {% set _network = (value.address ~ '/' ~ prefix) | ipaddr('network') %}
{%- set _ = start_commands.append('-/sbin/ip route add ' + _net_addr_network + ' dev ' + mv_interface + ' metric 100 proto kernel scope link table local') %} {% set _net_addr_network = (_network ~ '/' ~ prefix) %}
{%- set _ = start_commands.append('-/sbin/ip route add local ' + _net_addr_network + ' dev ' + mv_interface + ' metric 100 proto kernel scope host table local') %}
{%- endif %}
{%- endif %} {%- endif %}
{%- endif %} {%- endif %}
{%- endif %} {%- endif %}

View File

@ -4,9 +4,7 @@ mkdir -p /dev
mkdir -p /proc mkdir -p /proc
mkdir -p /sys/fs/cgroup mkdir -p /sys/fs/cgroup
mkdir -p /dev/pts mkdir -p /dev/pts
mkdir -p /proc/self/fd
#gnupg requires this
mkdir -p /root/.gnupg
# In order for the package manager to function /dev/null, /dev/random and # In order for the package manager to function /dev/null, /dev/random and
# /dev/urandom must exist. This is is being run here because some images do not # /dev/urandom must exist. This is is being run here because some images do not
@ -20,6 +18,14 @@ for i in {0..5}; do
done done
[ ! -e /dev/pts/ptmx ] && mknod -m 0666 /dev/pts/ptmx c 5 2 [ ! -e /dev/pts/ptmx ] && mknod -m 0666 /dev/pts/ptmx c 5 2
[ ! -e /dev/fd ] && ln -s /proc/self/fd /dev/fd
for i in {0..2}; do
ln -sf /dev/pts/0 /dev/fd/$i
done
#gnupg requires this
mkdir -p /root/.gnupg
# Create the directory where local facts will be stored # Create the directory where local facts will be stored
mkdir -p /etc/ansible/facts.d mkdir -p /etc/ansible/facts.d

View File

@ -27,13 +27,13 @@ export DEBIAN_FRONTEND=noninteractive
apt-get remove -y --purge snap* nspawn* lxd* resolvconf || true apt-get remove -y --purge snap* nspawn* lxd* resolvconf || true
apt-get update apt-get update
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes gnupg
#start gpg-agent if is is not already running
gpg-connect-agent /bye || true
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_required_packages | join(' ') }} apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_required_packages | join(' ') }}
#start gpg-agent if is is not already running
<(gpg-agent) || true
gpg-connect-agent /bye || true
if [[ -f "/root/repo.keys" ]]; then if [[ -f "/root/repo.keys" ]]; then
apt-key add /root/repo.keys apt-key add /root/repo.keys
fi fi