Update roles
This commit is contained in:
@@ -2,54 +2,91 @@
|
||||
---
|
||||
network_connections: []
|
||||
|
||||
network_allow_restart: no
|
||||
|
||||
# Use initscripts for RHEL/CentOS < 7, nm otherwise
|
||||
network_provider_os_default: "{{
|
||||
'initscripts' if ansible_distribution in ['RedHat', 'CentOS'] and
|
||||
ansible_distribution_major_version is version('7', '<')
|
||||
'initscripts' if ansible_distribution in [
|
||||
'RedHat',
|
||||
'CentOS',
|
||||
'OracleLinux'
|
||||
] 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: "{{
|
||||
__network_provider_current: "{{
|
||||
'nm' if 'NetworkManager.service' in ansible_facts.services and
|
||||
ansible_facts.services['NetworkManager.service']['state'] == 'running'
|
||||
else 'initscripts'
|
||||
}}"
|
||||
# Default to the auto-detected value
|
||||
network_provider: "{{ network_provider_current }}"
|
||||
network_provider: "{{ __network_provider_current }}"
|
||||
|
||||
# check if any 802.1x connections are defined
|
||||
__network_ieee802_1x_connections_defined: "{{ network_connections |
|
||||
selectattr('ieee802_1x', 'defined') | list | count > 0 }}"
|
||||
|
||||
# check if any wireless connections are defined
|
||||
__network_wireless_connections_defined: "{{
|
||||
['wireless'] in network_connections|json_query('[*][type]') }}"
|
||||
|
||||
# NetworkManager-wireless is required for wireless connections
|
||||
__network_packages_default_wireless: ["{%
|
||||
if __network_wireless_connections_defined
|
||||
%}NetworkManager-wifi{% endif %}"]
|
||||
|
||||
# check if any team connections are defined
|
||||
__network_team_connections_defined: "{{
|
||||
['team'] in network_connections|json_query('[*][type]') }}"
|
||||
|
||||
# NetworkManager-team is required for team connections
|
||||
__network_packages_default_team: ["{%
|
||||
if __network_team_connections_defined
|
||||
%}NetworkManager-team{% endif %}"]
|
||||
|
||||
# wpa_supplicant is required if any 802.1x or wireless connections are defined
|
||||
__network_wpa_supplicant_required: "{{
|
||||
__network_ieee802_1x_connections_defined or
|
||||
__network_wireless_connections_defined }}"
|
||||
__network_packages_default_wpa_supplicant: ["{%
|
||||
if __network_wpa_supplicant_required
|
||||
%}wpa_supplicant{% endif %}"]
|
||||
|
||||
# The python-gobject-base package depends on the python version and
|
||||
# distribution:
|
||||
# - python-gobject-base on RHEL7 (no python2-gobject-base :-/)
|
||||
# - python-gobject-base or python2-gobject-base on Fedora 27
|
||||
# - python3-gobject-base on Fedora 28+
|
||||
network_service_name_default_nm: NetworkManager
|
||||
network_packages_default_nm:
|
||||
- ethtool
|
||||
- NetworkManager
|
||||
- "python{{ ansible_python['version']['major'] | replace('2', '') }}-gobject-base"
|
||||
__network_packages_default_gobject_packages: ["python{{
|
||||
ansible_python['version']['major'] | replace('2', '')}}-gobject-base"]
|
||||
|
||||
network_service_name_default_initscripts: network
|
||||
__network_service_name_default_nm: NetworkManager
|
||||
__network_packages_default_nm: "{{['NetworkManager']
|
||||
+ __network_packages_default_gobject_packages|select()|list()
|
||||
+ __network_packages_default_wpa_supplicant|select()|list()
|
||||
+ __network_packages_default_wireless|select()|list()
|
||||
+ __network_packages_default_team|select()|list()}}"
|
||||
|
||||
__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]') 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', '<='))
|
||||
)
|
||||
__network_packages_default_initscripts_bridge: ["{%
|
||||
if ['bridge'] in network_connections|json_query('[*][type]') and
|
||||
ansible_distribution in ['RedHat', 'CentOS', 'OracleLinux'] and
|
||||
ansible_distribution_major_version is version('7', '<=')
|
||||
%}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', '<='))
|
||||
__network_packages_default_initscripts_network_scripts: ["{%
|
||||
if ansible_distribution in ['RedHat', 'CentOS', 'OracleLinux'] and
|
||||
ansible_distribution_major_version is version('7', '<=')
|
||||
%}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 evaluate 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_network_scripts|select()|list()
|
||||
__network_packages_default_initscripts: "{{
|
||||
__network_packages_default_initscripts_bridge|select()|list()
|
||||
+ __network_packages_default_initscripts_network_scripts|select()|list()
|
||||
}}"
|
||||
|
||||
|
||||
@@ -58,25 +95,25 @@ network_packages_default_initscripts: "{{ ['ethtool']
|
||||
#
|
||||
# Usually, the user only wants to select the "network_provider"
|
||||
# (or not set it at all and let it be autodetected via the
|
||||
# internal variable "{{ network_provider_current }}". Hence,
|
||||
# internal variable "{{ __network_provider_current }}". Hence,
|
||||
# depending on the "network_provider", a different set of
|
||||
# service-name and packages is chosen.
|
||||
#
|
||||
# That is done via the internal "_network_provider_setup" dictionary.
|
||||
# That is done via the internal "__network_provider_setup" dictionary.
|
||||
# If the user doesn't explicitly set "network_service_name" or
|
||||
# "network_packages" (which he usually wouldn't), then the defaults
|
||||
# from "network_service_name_default_*" and "network_packages_default_*"
|
||||
# from "__network_service_name_default_*" and "__network_packages_default_*"
|
||||
# apply. These values are hard-coded in this file, but they also could
|
||||
# be overwritten as host variables or via vars/*.yml.
|
||||
_network_provider_setup:
|
||||
__network_provider_setup:
|
||||
nm:
|
||||
service_name: "{{ network_service_name_default_nm }}"
|
||||
packages: "{{ network_packages_default_nm }}"
|
||||
service_name: "{{ __network_service_name_default_nm }}"
|
||||
packages: "{{ __network_packages_default_nm }}"
|
||||
initscripts:
|
||||
service_name: "{{ network_service_name_default_initscripts }}"
|
||||
packages: "{{ network_packages_default_initscripts }}"
|
||||
service_name: "{{ __network_service_name_default_initscripts }}"
|
||||
packages: "{{ __network_packages_default_initscripts }}"
|
||||
|
||||
network_packages: "{{
|
||||
_network_provider_setup[network_provider]['packages'] }}"
|
||||
__network_provider_setup[network_provider]['packages'] }}"
|
||||
network_service_name: "{{
|
||||
_network_provider_setup[network_provider]['service_name'] }}"
|
||||
__network_provider_setup[network_provider]['service_name'] }}"
|
||||
|
||||
Reference in New Issue
Block a user