From a6a1e9bf9b42cd54cd46202dee9212b3001f3213 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 18 May 2020 03:58:53 +0200 Subject: add temporary workaround for network interface stability fix --- roles/base/tasks/Debian.yml | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'roles/base') diff --git a/roles/base/tasks/Debian.yml b/roles/base/tasks/Debian.yml index 185c3616..7551670f 100644 --- a/roles/base/tasks/Debian.yml +++ b/roles/base/tasks/Debian.yml @@ -114,11 +114,15 @@ - name: disable TSO (intel nic stability fix) when: base_intel_nic_stability_fix copy: + # TODO: copy settings from /usr/lib/systemd/network/99-default.link content: | [Match] MACAddress={{ ansible_default_ipv4.macaddress }} [Link] + NamePolicy=keep kernel database onboard slot path + MACAddressPolicy=persistent + TCPSegmentationOffload=false GenericSegmentationOffload=false GenericReceiveOffload=false -- cgit v1.2.3 From 99b57140373dd8d7a1e565611c8a2e2dab24eca8 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 21 May 2020 21:01:06 +0200 Subject: improved intel stability fix --- filter_plugins/config-parser.py | 28 ++++++++++++++++++++++++++++ roles/base/tasks/Debian.yml | 17 ++--------------- roles/base/tasks/intel-nic.yml | 23 +++++++++++++++++++++++ 3 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 filter_plugins/config-parser.py create mode 100644 roles/base/tasks/intel-nic.yml (limited to 'roles/base') diff --git a/filter_plugins/config-parser.py b/filter_plugins/config-parser.py new file mode 100644 index 00000000..8654a104 --- /dev/null +++ b/filter_plugins/config-parser.py @@ -0,0 +1,28 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from functools import partial + +from ansible import errors + + +def from_ini(data): + try: + import configparser + config = configparser.ConfigParser() + config.optionxform = lambda option: option + config.read_string(data) + return config._sections + except Exception as e: + raise errors.AnsibleFilterError("from_ini(): %s" % str(e)) + + +class FilterModule(object): + + ''' config parser filters ''' + filter_map = { + 'from_ini': from_ini, + } + + def filters(self): + return self.filter_map diff --git a/roles/base/tasks/Debian.yml b/roles/base/tasks/Debian.yml index 7551670f..13c3c9f9 100644 --- a/roles/base/tasks/Debian.yml +++ b/roles/base/tasks/Debian.yml @@ -111,19 +111,6 @@ when: install is defined and install.kernel_cmdline is defined notify: update grub -- name: disable TSO (intel nic stability fix) +- name: apply stability fix/workaround for machines using intel NIC when: base_intel_nic_stability_fix - copy: - # TODO: copy settings from /usr/lib/systemd/network/99-default.link - content: | - [Match] - MACAddress={{ ansible_default_ipv4.macaddress }} - - [Link] - NamePolicy=keep kernel database onboard slot path - MACAddressPolicy=persistent - - TCPSegmentationOffload=false - GenericSegmentationOffload=false - GenericReceiveOffload=false - dest: /etc/systemd/network/00-disable-offloading.link + import_tasks: intel-nic.yml diff --git a/roles/base/tasks/intel-nic.yml b/roles/base/tasks/intel-nic.yml new file mode 100644 index 00000000..2b9be474 --- /dev/null +++ b/roles/base/tasks/intel-nic.yml @@ -0,0 +1,23 @@ +--- +- name: fetch default link options for network interfaces + slurp: + src: /usr/lib/systemd/network/99-default.link + register: base_systemd_default_link_unit + +- name: disable TSO (intel nic stability fix) + vars: + default_link_options: "{{ (base_systemd_default_link_unit.content | b64decode | from_ini)['Link'] }}" + copy: + content: | + [Match] + MACAddress={{ ansible_default_ipv4.macaddress }} + + [Link] + {% for name, value in default_link_options.items() | sort(attribute='0') %} + {{ name }}={{ value }} + {% endfor %} + + TCPSegmentationOffload=false + GenericSegmentationOffload=false + GenericReceiveOffload=false + dest: /etc/systemd/network/00-disable-offloading.link -- cgit v1.2.3