From 84fe98508e82cbe9cfa83ffe2f0df9a2aa2602b1 Mon Sep 17 00:00:00 2001 From: Till Maas Date: Mon, 15 Oct 2018 20:53:20 +0200 Subject: [PATCH 1/3] Use `is version` instead of `|version_compare` Using tests as filters is deprecated and `version_compare` was renamed to `version` in Ansible 2.5. --- defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 214bf13..f8d52ee 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,7 +2,7 @@ network_connections: [] # Use initscripts for RHEL/CentOS < 7, nm otherwise -network_provider_os_default: "{{ 'initscripts' if ansible_distribution in ['RedHat', 'CentOS'] and ansible_distribution_major_version |version_compare('7', '<') else 'nm' }}" +network_provider_os_default: "{{ 'initscripts' if ansible_distribution in ['RedHat', 'CentOS'] and ansible_distribution_major_version is version('7', '<') else 'nm' }}" # If NetworkManager.service is running, assume that 'nm' is currently in-use, # otherwise initscripts network_provider_current: "{{ 'nm' if 'NetworkManager.service' in ansible_facts.services and ansible_facts.services['NetworkManager.service']['state'] == 'running' else 'initscripts' }}" From d4936d1ca77b14c2c7aaaa99f376219135892fc8 Mon Sep 17 00:00:00 2001 From: Till Maas Date: Mon, 15 Oct 2018 20:55:58 +0200 Subject: [PATCH 2/3] Require bridge-utils only for older distributions The initscripts provider uses iproute2 in newer releases to setup bridges. This fixes #84 --- defaults/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index f8d52ee..2a92813 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -21,7 +21,12 @@ network_service_name_default_initscripts: network # initscripts requires bridge-utils to manage bridges, install it when the # 'bridge' type is used in network_connections -_network_packages_default_initscripts_bridge: ["{% if ['bridge'] in network_connections|json_query('[*][type]') %}bridge-utils{% endif %}"] +_network_packages_default_initscripts_bridge: ["{% if ['bridge'] in network_connections|json_query('[*][type]') and +( + (ansible_distribution in ['RedHat', 'CentOS'] and ansible_distribution_major_version is version('7', '<=')) or + (ansible_distribution == 'Fedora' and ansible_distribution_major_version is version('28', '<=')) +) +%}bridge-utils{% endif %}"] # convert _network_packages_default_initscripts_bridge to an empty list if it # contains only the empty string and add it to the default package list # |select() filters the list to include only values that evalueate to true (the empty string is false) From 97adeb5668ac1d1079b0208d8201e2983f71e488 Mon Sep 17 00:00:00 2001 From: Till Maas Date: Mon, 15 Oct 2018 20:58:14 +0200 Subject: [PATCH 3/3] Default to install network-scripts for initscripts Newer releases of `initscripts` ship the network scripts in a separate package called `network-scripts`. This fixes #81 --- defaults/main.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 2a92813..9c9d9c4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -27,11 +27,18 @@ _network_packages_default_initscripts_bridge: ["{% if ['bridge'] in network_conn (ansible_distribution == 'Fedora' and ansible_distribution_major_version is version('28', '<=')) ) %}bridge-utils{% endif %}"] +_network_packages_default_initscripts_network_scripts: ["{% +if (ansible_distribution in ['RedHat', 'CentOS'] and ansible_distribution_major_version is version('7', '<=')) or + (ansible_distribution == 'Fedora' and ansible_distribution_major_version is version('28', '<=')) +%}initscripts{% else %}network-scripts{% endif %}"] # convert _network_packages_default_initscripts_bridge to an empty list if it # contains only the empty string and add it to the default package list # |select() filters the list to include only values that evalueate to true (the empty string is false) # |list() converts the generator that |select() creates to a list -network_packages_default_initscripts: "{{ ['ethtool'] + _network_packages_default_initscripts_bridge|select()|list() }}" +network_packages_default_initscripts: "{{ ['ethtool'] ++ _network_packages_default_initscripts_bridge|select()|list() ++ _network_packages_default_initscripts_network_scripts|select()|list() +}}" # The user can explicitly set host variables "network_provider",