summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter_plugins/config-parser.py28
-rw-r--r--roles/base/tasks/Debian.yml17
-rw-r--r--roles/base/tasks/intel-nic.yml23
3 files changed, 53 insertions, 15 deletions
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