Compare commits

30 Commits

Author SHA1 Message Date
102276cc05 Merge branch 'geerlingguy:master' into master 2024-08-08 17:45:19 +03:00
Jeff Geerling
e7ee1a8d1e Fixup CI versions. Drop all older RHEL releases which are broken. 2024-07-16 14:21:20 -05:00
Jeff Geerling
f18394c555 CI Updates. 2024-07-16 13:40:47 -05:00
Jeff Geerling
ee3bb23578 Add docker_obsolete_packages to README. 2024-06-27 08:39:51 -05:00
Jeff Geerling
f35dba88d0 Merge pull request #463 from elsoa-invitech/change-obsolete-packages
Allow change obsolete packages
2024-06-27 08:32:13 -05:00
Első András
5b3eea8f97 Allow change obsolete packages 2024-06-27 15:18:55 +02:00
Jeff Geerling
c0ce31085c Merge pull request #456 from jamesmyatt/no-gnupg-required
gnupg no longer prerequisite
2024-06-09 21:29:02 -05:00
James Myatt
9c4e21caec gnupg no longer prerequisite
See 811f32afe5
2024-06-09 23:15:02 +01:00
Jeff Geerling
64b17dc423 Merge pull request #439 from cschindlbeck/add-docker-compose-package-name-default-for-archlinux
Fix docker compose plugin on archlinux (Closes #427)
2024-05-27 13:04:01 -05:00
Jeff Geerling
13dfcf7d17 Merge pull request #436 from kawadeomkar/kawade/fix-434
Add GPG keys to `/apt/keyrings` instead of `/apt/trusted.gpg.d`, Update task `Add Docker apt key`
2024-05-27 13:02:34 -05:00
Jeff Geerling
1f1f5cd69c Merge branch 'master' into kawade/fix-434 2024-05-27 13:02:27 -05:00
Jeff Geerling
a51b9db984 Merge pull request #457 from cschindlbeck/patch-1
Add Ubuntu 24.04 to CI
2024-05-27 13:00:25 -05:00
Jeff Geerling
af2293f47c Merge pull request #458 from jamesmyatt/enable-armhf
Enable armhf build for old raspberry pis
2024-05-27 13:00:09 -05:00
Jeff Geerling
db5503f430 Merge pull request #459 from jamesmyatt/update-obsolete-pkgs
Update list of obsolete pkgs
2024-05-27 12:57:43 -05:00
James Myatt
fe69df76fa Update list of obsolete packages 2024-05-27 11:17:28 +01:00
James Myatt
820f7426fb Enable armhf build for old raspberry pis 2024-05-27 11:09:35 +01:00
Chris Schindlbeck
5b96593d5c Add Ubuntu 24.04 to CI 2024-05-27 09:26:04 +02:00
Jeff Geerling
dc1c9a1606 Merge pull request #447 from lucagardi/patch-1
Fix a README typo in Yum variables
2024-02-26 14:02:43 -06:00
Luca Gardi
cff72d0807 Update README.md
Fix typo in Yum repos definition
2024-02-26 13:59:44 +01:00
Jeff Geerling
f845f0986d Merge pull request #444 from mrodus/docker-buildx-plugin
Add docker-buildx-plugin to docker_packages
2024-02-01 08:02:11 -06:00
mrodus
0a410c1031 Add docker-buildx-plugin to docker_packages 2024-02-01 16:33:29 +05:30
Jeff Geerling
be3b7c289c A wee bit of modernization. 2024-01-24 22:01:14 -06:00
Jeff Geerling
1175acc9f5 Make local dev with molecule a little easier. 2024-01-24 21:49:33 -06:00
Chris Schindlbeck
f741ddba10 Fix docker compose plugin on archlinux 2023-12-28 20:08:47 +01:00
Omkar Kawade
d8f92e1874 434 remove permissions update, add reverse compatibility 2023-12-18 12:56:14 -08:00
Omkar Kawade
08ae86e0b5 434 update apt key destination 2023-12-18 11:06:21 -08:00
Omkar Kawade
6cb849c416 435 ansible-lint 2023-11-16 21:20:56 -08:00
Omkar Kawade
ae29f9f9c0 434 changed_when false for adding docker apt key shell cmd 2023-11-16 21:14:58 -08:00
Omkar Kawade
12ad263ef6 435 Update apt key ansible task 2023-11-16 20:23:52 -08:00
Omkar Kawade
1dca07177f 434 Add GPG keys to keyrings instead of trusted.gpg.d 2023-11-16 18:59:51 -08:00
8 changed files with 102 additions and 68 deletions

View File

@@ -19,12 +19,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v2 uses: actions/checkout@v4
with: with:
path: 'geerlingguy.docker' path: 'geerlingguy.docker'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v2 uses: actions/setup-python@v5
with: with:
python-version: '3.x' python-version: '3.x'
@@ -41,23 +41,21 @@ jobs:
strategy: strategy:
matrix: matrix:
distro: distro:
- rockylinux8 - rockylinux9
- ubuntu2404
- ubuntu2204 - ubuntu2204
- ubuntu2004
- ubuntu1804
- debian12 - debian12
- debian11 - debian11
- debian10 - fedora40
- fedora34
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v2 uses: actions/checkout@v4
with: with:
path: 'geerlingguy.docker' path: 'geerlingguy.docker'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v2 uses: actions/setup-python@v5
with: with:
python-version: '3.x' python-version: '3.x'

View File

@@ -22,12 +22,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v2 uses: actions/checkout@v4
with: with:
path: 'geerlingguy.docker' path: 'geerlingguy.docker'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v2 uses: actions/setup-python@v5
with: with:
python-version: '3.x' python-version: '3.x'

View File

@@ -12,6 +12,7 @@ None.
Available variables are listed below, along with default values (see `defaults/main.yml`): Available variables are listed below, along with default values (see `defaults/main.yml`):
```yaml
# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition). # Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce' docker_edition: 'ce'
docker_packages: docker_packages:
@@ -19,6 +20,7 @@ Available variables are listed below, along with default values (see `defaults/m
- "docker-{{ docker_edition }}-cli" - "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras" - "docker-{{ docker_edition }}-rootless-extras"
docker_packages_state: present docker_packages_state: present
```
The `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition). The `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition).
You can also specify a specific version of Docker to install using the distribution-specific format: You can also specify a specific version of Docker to install using the distribution-specific format:
@@ -27,66 +29,96 @@ Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>` (Note: you have to add th
You can control whether the package is installed, uninstalled, or at the latest version by setting `docker_packages_state` to `present`, `absent`, or `latest`, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play). You can control whether the package is installed, uninstalled, or at the latest version by setting `docker_packages_state` to `present`, `absent`, or `latest`, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).
```yaml
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- podman-docker
- containerd
- runc
```
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.
```yaml
docker_service_manage: true docker_service_manage: true
docker_service_state: started docker_service_state: started
docker_service_enabled: true docker_service_enabled: true
docker_restart_handler_state: restarted docker_restart_handler_state: restarted
```
Variables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set `docker_service_manage` to `false`. Variables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set `docker_service_manage` to `false`.
```yaml
docker_install_compose_plugin: false docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin docker_compose_package: docker-compose-plugin
docker_compose_package_state: present docker_compose_package_state: present
```
Docker Compose Plugin installation options. These differ from the below in that docker-compose is installed as a docker plugin (and used with `docker compose`) instead of a standalone binary. Docker Compose Plugin installation options. These differ from the below in that docker-compose is installed as a docker plugin (and used with `docker compose`) instead of a standalone binary.
```yaml
docker_install_compose: true docker_install_compose: true
docker_compose_version: "1.26.0" docker_compose_version: "1.26.0"
docker_compose_arch: "{{ ansible_architecture }}" docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_path: /usr/local/bin/docker-compose docker_compose_path: /usr/local/bin/docker-compose
```
Docker Compose installation options. Docker Compose installation options.
```yaml
docker_add_repo: true docker_add_repo: true
```
Controls whether this role will add the official Docker repository. Set to `false` if you want to use the default docker packages for your system or manage the package repository on your own. Controls whether this role will add the official Docker repository. Set to `false` if you want to use the default docker packages for your system or manage the package repository on your own.
```yaml
docker_repo_url: https://download.docker.com/linux docker_repo_url: https://download.docker.com/linux
```
The main Docker repo URL, common between Debian and RHEL systems. The main Docker repo URL, common between Debian and RHEL systems.
```yaml
docker_apt_release_channel: stable docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}" docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}" docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: True docker_apt_ignore_key_error: True
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg" docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker" docker_apt_filename: "docker"
```
(Used only for Debian/Ubuntu.) You can switch the channel to `nightly` if you want to use the Nightly release. (Used only for Debian/Ubuntu.) You can switch the channel to `nightly` if you want to use the Nightly release.
You can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror. You can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.
Usually in combination with changing `docker_apt_repository` as well. `docker_apt_filename` controls the name of the source list file created in `sources.list.d`. If you are upgrading from an older (<7.0.0) version of this role, you should change this to the name of the existing file (e.g. `download_docker_com_linux_debian` on Debian) to avoid conflicting lists. Usually in combination with changing `docker_apt_repository` as well. `docker_apt_filename` controls the name of the source list file created in `sources.list.d`. If you are upgrading from an older (<7.0.0) version of this role, you should change this to the name of the existing file (e.g. `download_docker_com_linux_debian` on Debian) to avoid conflicting lists.
docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"docker_edition }}.repo ```yaml
docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"
docker_yum_repo_enable_nightly: '0' docker_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0' docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg" docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"
```
(Used only for RedHat/CentOS.) You can enable the Nightly or Test repo by setting the respective vars to `1`. (Used only for RedHat/CentOS.) You can enable the Nightly or Test repo by setting the respective vars to `1`.
You can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror. You can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.
Usually in combination with changing `docker_yum_repository` as well. Usually in combination with changing `docker_yum_repository` as well.
```yaml
docker_users: docker_users:
- user1 - user1
- user2 - user2
```
A list of system users to be added to the `docker` group (so they can use Docker on the server). A list of system users to be added to the `docker` group (so they can use Docker on the server).
```yaml
docker_daemon_options: docker_daemon_options:
storage-driver: "devicemapper" storage-driver: "devicemapper"
log-opts: log-opts:
max-size: "100m" max-size: "100m"
```
Custom `dockerd` options can be configured through this dictionary representing the json file `/etc/docker/daemon.json`. Custom `dockerd` options can be configured through this dictionary representing the json file `/etc/docker/daemon.json`.

View File

@@ -6,7 +6,15 @@ docker_packages:
- "docker-{{ docker_edition }}-cli" - "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras" - "docker-{{ docker_edition }}-rootless-extras"
- "containerd.io" - "containerd.io"
- docker-buildx-plugin
docker_packages_state: present docker_packages_state: present
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- podman-docker
- containerd
- runc
# Service options. # Service options.
docker_service_manage: true docker_service_manage: true
@@ -37,8 +45,8 @@ docker_apt_release_channel: stable
# docker_apt_ansible_distribution is a workaround for Ubuntu variants which can't be identified as such by Ansible, # docker_apt_ansible_distribution is a workaround for Ubuntu variants which can't be identified as such by Ansible,
# and is only necessary until Docker officially supports them. # and is only necessary until Docker officially supports them.
docker_apt_ansible_distribution: "{{ 'ubuntu' if ansible_distribution in ['Pop!_OS', 'Linux Mint'] else ansible_distribution }}" docker_apt_ansible_distribution: "{{ 'ubuntu' if ansible_distribution in ['Pop!_OS', 'Linux Mint'] else ansible_distribution }}"
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}" docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'armhf' if ansible_architecture == 'armv7l' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/trusted.gpg.d/docker.asc] {{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}" docker_apt_repository: "deb [arch={{ docker_apt_arch }} signed-by=/etc/apt/keyrings/docker.asc] {{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: true docker_apt_ignore_key_error: true
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }}/gpg" docker_apt_gpg_key: "{{ docker_repo_url }}/{{ docker_apt_ansible_distribution | lower }}/gpg"
docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570" docker_apt_gpg_key_checksum: "sha256:1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570"

View File

@@ -22,6 +22,7 @@ galaxy_info:
- bionic - bionic
- focal - focal
- jammy - jammy
- noble
- name: Alpine - name: Alpine
version: version:
- all - all

View File

@@ -2,11 +2,13 @@
role_name_check: 1 role_name_check: 1
dependency: dependency:
name: galaxy name: galaxy
options:
ignore-errors: true
driver: driver:
name: docker name: docker
platforms: platforms:
- name: instance - name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest" image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""} command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes: volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw - /sys/fs/cgroup:/sys/fs/cgroup:rw

View File

@@ -1,10 +1,8 @@
--- ---
- name: Ensure old versions of Docker are not installed. - # See https://docs.docker.com/engine/install/debian/#uninstall-old-versions
name: Ensure old versions of Docker are not installed.
package: package:
name: name: "{{ docker_obsolete_packages }}"
- docker
- docker.io
- docker-engine
state: absent state: absent
- name: Ensure dependencies are installed. - name: Ensure dependencies are installed.
@@ -15,22 +13,16 @@
state: present state: present
when: docker_add_repo | bool when: docker_add_repo | bool
- name: Ensure additional dependencies are installed (on Ubuntu < 20.04 and any other systems). - name: Ensure directory exists for /etc/apt/keyrings
apt: file:
name: gnupg2 path: /etc/apt/keyrings
state: present state: directory
when: ansible_distribution != 'Ubuntu' or ansible_distribution_version is version('20.04', '<') mode: '0755'
- name: Ensure additional dependencies are installed (on Ubuntu >= 20.04).
apt:
name: gnupg
state: present
when: ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('20.04', '>=')
- name: Add Docker apt key. - name: Add Docker apt key.
ansible.builtin.get_url: ansible.builtin.get_url:
url: "{{ docker_apt_gpg_key }}" url: "{{ docker_apt_gpg_key }}"
dest: /etc/apt/trusted.gpg.d/docker.asc dest: /etc/apt/keyrings/docker.asc
mode: '0644' mode: '0644'
force: false force: false
checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}" checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}"

View File

@@ -1,2 +1,3 @@
--- ---
docker_packages: "docker" docker_packages: "docker"
docker_compose_package: docker-compose