From ed2e42964f75206e7b948bab1c8c24da7a55bf95 Mon Sep 17 00:00:00 2001 From: George Kargiotakis Date: Mon, 17 Apr 2017 01:21:36 +0300 Subject: [PATCH 1/2] Use dummy100 instead of lo:100 on Linux Dummies are better than loopbacks for routing packets to/from. --- roles/common/handlers/main.yml | 12 +++++++++--- roles/common/tasks/ubuntu.yml | 16 ++++++++++------ ...-services.cfg.j2 => 10-dummy-services.cfg.j2} | 6 +++--- 3 files changed, 22 insertions(+), 12 deletions(-) rename roles/common/templates/{10-loopback-services.cfg.j2 => 10-dummy-services.cfg.j2} (63%) diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml index 2272403c..d4e909ef 100644 --- a/roles/common/handlers/main.yml +++ b/roles/common/handlers/main.yml @@ -7,12 +7,18 @@ - name: flush routing cache shell: echo 1 > /proc/sys/net/ipv4/route/flush -- name: restart loopback - shell: ifdown lo:100 && ifup lo:100 - - name: restart loopback bsd shell: > ifconfig lo100 destroy || true && ifconfig lo100 create && ifconfig lo100 inet {{ local_service_ip }} netmask 255.255.255.255 && ifconfig lo100 inet6 FCAA::1/64; echo $? + +- name: load dummy + shell: modprobe dummy + +- name: add dummy + shell: ip link add dummy100 type dummy + +- name: restart dummy + shell: ifdown --force dummy100 && ifup dummy100 diff --git a/roles/common/tasks/ubuntu.yml b/roles/common/tasks/ubuntu.yml index b512af61..aa5c4fd4 100644 --- a/roles/common/tasks/ubuntu.yml +++ b/roles/common/tasks/ubuntu.yml @@ -44,17 +44,21 @@ tags: - cloud -- name: Loopback for services configured - template: src=10-loopback-services.cfg.j2 dest=/etc/network/interfaces.d/10-loopback-services.cfg +- name: Dummy interface for services configured + template: src=10-dummy-services.cfg.j2 dest=/etc/network/interfaces.d/10-dummy-services.cfg notify: - - restart loopback + - load dummy + - add dummy + - restart dummy tags: - always -- name: Loopback included into the network config - lineinfile: dest=/etc/network/interfaces line='source /etc/network/interfaces.d/10-loopback-services.cfg' state=present +- name: Dummy interface included into the network config + lineinfile: dest=/etc/network/interfaces line='source /etc/network/interfaces.d/10-dummy-services.cfg' state=present notify: - - restart loopback + - load dummy + - add dummy + - restart dummy tags: - always diff --git a/roles/common/templates/10-loopback-services.cfg.j2 b/roles/common/templates/10-dummy-services.cfg.j2 similarity index 63% rename from roles/common/templates/10-loopback-services.cfg.j2 rename to roles/common/templates/10-dummy-services.cfg.j2 index 09f572de..adf95ebd 100644 --- a/roles/common/templates/10-loopback-services.cfg.j2 +++ b/roles/common/templates/10-dummy-services.cfg.j2 @@ -1,9 +1,9 @@ -auto lo:100 -iface lo:100 inet static +auto dummy100 +iface dummy100 inet static address {{ local_service_ip }} netmask 255.255.255.255 -iface lo:100 inet6 static +iface dummy100 inet6 static address FCAA::1 netmask 64 autoconf 0 From 4bf6deed3871477b2ce0234959fcf7cd3cec58b1 Mon Sep 17 00:00:00 2001 From: George Kargiotakis Date: Tue, 18 Apr 2017 16:07:24 +0300 Subject: [PATCH 2/2] Handle existence of dummy interface after reboot --- roles/common/handlers/main.yml | 9 ++++++--- roles/common/tasks/ubuntu.yml | 12 ++++++++++++ roles/common/templates/10-dummy-services.cfg.j2 | 6 +++--- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml index d4e909ef..184ceea6 100644 --- a/roles/common/handlers/main.yml +++ b/roles/common/handlers/main.yml @@ -15,10 +15,13 @@ ifconfig lo100 inet6 FCAA::1/64; echo $? - name: load dummy - shell: modprobe dummy + modprobe: + name: dummy + state: present + params: 'numdummies=2' - name: add dummy - shell: ip link add dummy100 type dummy + shell: ip link add dummy1 type dummy || /bin/true - name: restart dummy - shell: ifdown --force dummy100 && ifup dummy100 + shell: ifdown --force dummy1 && ifup dummy1 diff --git a/roles/common/tasks/ubuntu.yml b/roles/common/tasks/ubuntu.yml index aa5c4fd4..4ee2b346 100644 --- a/roles/common/tasks/ubuntu.yml +++ b/roles/common/tasks/ubuntu.yml @@ -44,6 +44,18 @@ tags: - cloud +- name: Use dummy module on startup + lineinfile: dest=/etc/modules-load.d/modules.conf line='dummy' state=present create=yes + tags: + - always + +- name: Configure 2 dummies + lineinfile: dest=/etc/modprobe.d/dummy.conf line='options dummy numdummies=2' state=present create=yes + notify: + - load dummy + tags: + - always + - name: Dummy interface for services configured template: src=10-dummy-services.cfg.j2 dest=/etc/network/interfaces.d/10-dummy-services.cfg notify: diff --git a/roles/common/templates/10-dummy-services.cfg.j2 b/roles/common/templates/10-dummy-services.cfg.j2 index adf95ebd..f33e0d2d 100644 --- a/roles/common/templates/10-dummy-services.cfg.j2 +++ b/roles/common/templates/10-dummy-services.cfg.j2 @@ -1,9 +1,9 @@ -auto dummy100 -iface dummy100 inet static +auto dummy1 +iface dummy1 inet static address {{ local_service_ip }} netmask 255.255.255.255 -iface dummy100 inet6 static +iface dummy1 inet6 static address FCAA::1 netmask 64 autoconf 0