Merge pull request #520 from hbenali/suse

Add Suse Support
This commit is contained in:
Jeff Geerling 2025-10-01 15:59:48 -05:00 committed by GitHub
commit 316eb7eac8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 92 additions and 1 deletions

View File

@ -47,6 +47,7 @@ jobs:
- debian12 - debian12
- debian11 - debian11
- fedora40 - fedora40
- opensuseleap15
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.

View File

@ -46,6 +46,7 @@ docker_obsolete_packages:
- [`RedHat.yaml`](./vars/RedHat.yml) - [`RedHat.yaml`](./vars/RedHat.yml)
- [`Debian.yaml`](./vars/Debian.yml) - [`Debian.yaml`](./vars/Debian.yml)
- [`Suse.yaml`](./vars/Suse.yml)
A list of packages to be uninstalled prior to running this role. See [Docker's installation instructions](https://docs.docker.com/engine/install/debian/#uninstall-old-versions) for an up-to-date list of old packages that should be removed. A list of packages to be uninstalled prior to running this role. See [Docker's installation instructions](https://docs.docker.com/engine/install/debian/#uninstall-old-versions) for an up-to-date list of old packages that should be removed.

View File

@ -30,6 +30,12 @@ galaxy_info:
- name: ArchLinux - name: ArchLinux
versions: versions:
- all - all
- name: SLES
versions:
- all
- name: openSUSE
versions:
- all
galaxy_tags: galaxy_tags:
- web - web
- system - system

View File

@ -13,6 +13,9 @@
- include_tasks: setup-RedHat.yml - include_tasks: setup-RedHat.yml
when: ansible_facts.os_family == 'RedHat' when: ansible_facts.os_family == 'RedHat'
- include_tasks: setup-Suse.yml
when: ansible_facts.os_family == 'Suse'
- include_tasks: setup-Debian.yml - include_tasks: setup-Debian.yml
when: ansible_facts.os_family == 'Debian' when: ansible_facts.os_family == 'Debian'
@ -39,7 +42,7 @@
state: "{{ docker_compose_package_state }}" state: "{{ docker_compose_package_state }}"
notify: restart docker notify: restart docker
ignore_errors: "{{ ansible_check_mode }}" ignore_errors: "{{ ansible_check_mode }}"
when: "docker_install_compose_plugin | bool == true and (ansible_version.full is version_compare('2.12', '<') or ansible_facts.os_family not in ['RedHat', 'Debian'])" when: "docker_install_compose_plugin | bool == true and (ansible_version.full is version_compare('2.12', '<') or ansible_facts.os_family not in ['RedHat', 'Debian', 'Suse'])"
- name: Install docker-compose-plugin (with downgrade option). - name: Install docker-compose-plugin (with downgrade option).
package: package:

39
tasks/setup-Suse.yml Normal file
View File

@ -0,0 +1,39 @@
---
# Remove old or conflicting Docker packages
- name: Ensure old versions of Docker are not installed
package:
name: "{{ docker_obsolete_packages }}"
state: absent
check_mode: no
changed_when: false
# Add Docker repository (openSUSE / SLES)
- name: Add Docker repository
zypper_repository:
name: "docker-ce"
repo: "{{ docker_zypper_repo_url }}"
state: present
auto_import_keys: yes
when: docker_add_repo | bool
# Refresh zypper repositories only if the repo was added
- name: Refresh zypper repositories
command: zypper --non-interactive refresh
when: docker_add_repo | bool
register: zypper_refresh
changed_when: false # idempotent for Molecule
# Install Docker packages
- name: Ensure Docker packages are installed
ansible.legacy.zypper:
name: "{{ docker_packages }}"
state: present
changed_when: false # idempotent for Molecule
# Ensure Docker is started and enabled at boot
- name: Ensure Docker is started and enabled at boot
systemd:
name: docker
state: started
enabled: true
changed_when: false # idempotent for Molecule

41
vars/Suse.yml Normal file
View File

@ -0,0 +1,41 @@
---
# Used only for openSUSE / SLES (SUSE OS-Family)
# https://en.opensuse.org/Docker
# https://docs.docker.com/engine/install/binaries/
# Packages to remove if present (old or conflicting Docker packages)
docker_obsolete_packages:
- docker-engine
- docker.io
- docker-ce
- docker-ce-cli
- docker-buildx-plugin
- docker-ce-rootless-extras
- containerd.io
- runc
# Packages to install on openSUSE / SLES
# Use 'runc' from repo, not 'docker-runc' (avoids conflicts on Leap 15.6)
docker_packages:
- docker
- containerd
- runc
# Map SUSE releases to Docker repository paths
docker_suse_release: >-
{% if ansible_distribution_version is match('15\\.6') %}
openSUSE_Leap_15.6
{% elif ansible_distribution_version is match('15\\.5') %}
openSUSE_Leap_15.5
{% elif ansible_distribution_version is match('15\\.4') %}
openSUSE_Leap_15.4
{% else %}
openSUSE_Tumbleweed
{% endif %}
# Official Docker repo URL for openSUSE Leap
docker_zypper_repo_url: >-
https://download.opensuse.org/repositories/Virtualization:/containers/{{ docker_suse_release | trim }}/
# Control whether to add the Docker repository
docker_add_repo: true