Install role pre-requisite packages

Historically we were assuming some subsystems like udev or dbus
being part of the core images and never handled their installation.
However such subsystems are a hard requirement for role to succeed
and networkd to operate correctly.

To ensure all required bits in place, we've adding installation of dbus
and udev to the role in order to prevent failures on very minimal images

Change-Id: Ie77a7064d17e6aef0be16b8a5d9be5cc121b665b
This commit is contained in:
Dmitriy Rabotyagov 2025-01-07 15:48:02 +01:00
parent 1ef65a0e56
commit b9554b1e7f
7 changed files with 23 additions and 27 deletions

View File

@ -13,6 +13,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Ensure required services are running
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
masked: false
with_items:
- dbus
- systemd-udevd
listen: Restart systemd-networkd
- name: Restart networkd
systemd:
name: "systemd-networkd"

View File

@ -96,6 +96,8 @@
until: install_packages is success
retries: 3
delay: 2
notify:
- Restart systemd-networkd
- name: Create systemd-networkd directory
file:
@ -217,16 +219,6 @@
notify:
- Restart systemd-networkd
- name: Enable and start systemd-networkd
systemd:
name: "systemd-networkd"
enabled: "yes"
state: started
when:
- systemd_run_networkd | bool
tags:
- systemd-networkd
- name: Restart systemd_networkd prior to applying sysctl changes
meta: flush_handlers

View File

@ -18,34 +18,19 @@
iproute_package_name:
redhat: iproute
debian: iproute2
# NOTE: Packages below are potentially needed outside of molecule as well
procps_package_name:
redhat: procps-ng
debian: procps
# Needed for `restorecon` command
selinux_package_name:
redhat: policycoreutils
debian: ''
udev_package_name:
redhat: systemd-udev
debian: udev
install_packages:
- "{{ iproute_package_name[ansible_facts['os_family'] | lower] }}"
- "{{ procps_package_name[ansible_facts['os_family'] | lower] }}"
- "{{ selinux_package_name[ansible_facts['os_family'] | lower] }}"
- "{{ udev_package_name[ansible_facts['os_family'] | lower] }}"
- dbus
tasks:
- name: Install required packages
ansible.builtin.package:
name: "{{ install_packages | select() }}"
update_cache: "{{ (ansible_facts['os_family'] | lower == 'debian') | ternary(true, omit) }}"
- name: Ensure required services are running
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
masked: false
with_items:
- dbus
- systemd-udevd

View File

@ -14,7 +14,9 @@
# limitations under the License.
_systemd_networkd_distro_packages:
- dbus # Needed for networkctl
- "{{ systemd_resolved_available | ternary('systemd-resolved', '') }}"
- udev # Needed for networkd to bring interfaces up
_systemd_resolved_available: false

View File

@ -13,7 +13,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
_systemd_networkd_distro_packages: []
_systemd_networkd_distro_packages:
- dbus # Needed for networkctl
- udev # Needed for networkd to bring interfaces up
_systemd_resolved_available: true

View File

@ -14,8 +14,10 @@
# limitations under the License.
_systemd_networkd_distro_packages:
- dbus # Needed for networkctl
- systemd-networkd
- "{{ systemd_resolved_available | ternary('systemd-resolved', '') }}"
- systemd-udev # Needed for networkd to bring interfaces up
_systemd_resolved_available: false

View File

@ -14,7 +14,9 @@
# limitations under the License.
_systemd_networkd_distro_packages:
- dbus # Needed for networkctl
- "{{ systemd_resolved_available | ternary('systemd-resolved', '') }}"
- udev # Needed for networkd to bring interfaces up
_systemd_resolved_available: true