Compare commits

...

210 Commits

Author SHA1 Message Date
Jeff Geerling
94b787389d
Merge pull request #504 from geerlingguy/revert-498-patch-1
Revert "Ensure the Docker daemon options file (`/etc/docker/daemon.json`) is deleted when no longer needed"
2025-04-05 07:42:05 -07:00
Jeff Geerling
24dee13f70
Revert "Ensure the Docker daemon options file (/etc/docker/daemon.json) is deleted when no longer needed" 2025-04-05 07:41:55 -07:00
Jeff Geerling
c8df987a56
Merge pull request #498 from spantaleev/patch-1
Ensure the Docker daemon options file (`/etc/docker/daemon.json`) is deleted when no longer needed
2025-04-05 07:41:35 -07:00
Jeff Geerling
d95b3fdc47
Merge pull request #497 from AliMehraji/master
update: docker_yum_gpg_key variable to get the distro gpg key
2025-04-05 07:40:36 -07:00
Ali Mehraji
1000ee6000
Merge branch 'geerlingguy:master' into master 2025-03-24 15:14:54 +03:30
Jeff Geerling
9115e969c1
Merge pull request #501 from adamus1red/adamus1red/alpine-compose
add compose package to Alpine specific variables
2025-03-23 19:00:51 -05:00
adamus1red
0f44fe621a
add compose package to Alpine specific variables 2025-03-23 19:26:14 +00:00
Jeff Geerling
cd0b1fb604
Merge pull request #500 from boite/master
fix: lowercase distro name when removing apt source
2025-03-18 21:48:14 -05:00
boite
047f7a163c fix: lowercase distro name when removing apt source
This makes removal succeed when docker_apt_ansible_distribution is
"Ubuntu".
2025-03-18 23:57:55 +00:00
Slavi Pantaleev
5a2fd928ad
Ensure the Docker daemon options file (/etc/docker/daemon.json) is deleted when no longer needed
If people set options in `docker_daemon_options` (e.g. `{'ipv6': false}`), the role will create the `/etc/docker/daemon.json` file and populate it with the options.

Later on, if people stop setting *all of these* options, the file used to remain in place (containing the old options) and cause trouble. This is unexpected.

If the Docker installation is managed by this role and the `/etc/docker/daemon.json` file is managed by it, it should also take care to:

- either delete the file when it's no longer necessary
- or populate it with empty options if that is what `docker_daemon_options` contains

Deleting the file instead of putting `{}` in it seems like the cleaner approach.

There's a chance that people would like to manage options in `/etc/docker/daemon.json` by themselves (without Ansible) and this new behavior when `docker_daemon_options` is empty, but this runs against having a managed Docker installation via Ansible.

This patch only deletes the `/etc/docker/daemon.json` file.

We could possibly delete the `/etc/docker` directory too, but it's more tricky to delete it only when it's empty. In some cases, the directory may contain other files and invoking the `file` module with `state: absent` will delete everything recursively, which is undesirable.
2025-03-09 16:20:51 +02:00
Ali Mehraji
6f0503c0fb update: docker_yum_gpg_key variable to get the distro specific yum gpg key 2025-02-19 12:54:53 +03:30
Jeff Geerling
acade8d01f
Merge pull request #496 from AliMehraji/master
Separate docker_obsolete_packages for Debian and RedHat OS-Family
2025-02-16 21:27:31 -06:00
Ali Mehraji
ea27ff2acb update: missing document start --- into vars/Debian.yml,RedHat.yml 2025-02-17 02:01:42 +03:30
Ali Mehraji
04981f6af5 Add: empty line at the EOF for the vars/Debian.yml,RedHat.yml 2025-02-17 01:24:35 +03:30
Ali Mehraji
78dec194bd update: docker_obsolete_packages separated for Debian and RedHat OS-Family 2025-02-17 01:21:15 +03:30
Jeff Geerling
a16b26b8e2
Merge pull request #493 from dbrennand/patch-1-470
fix: issue with #470 fix
2025-02-06 15:43:43 -06:00
dbrennand
d490bcea4c
fix: issue with #470 fix
This patch ensures that the correct filename is specified based on the distribution. Observed this behaviour on a Debian system, the old file was not removed due to it being hardcoded to ubuntu instead.
2025-02-06 21:09:29 +00:00
Jeff Geerling
1800d2e793
Merge pull request #491 from dadimah/feature/add_molecule-verify
feat: Add molecule verify playbook
2025-01-28 22:13:13 -06:00
Dadi, Mahesh
6b6ea60025 Add verification playbook for Docker and comment out become directive in converge.yml 2025-01-29 00:45:08 +08:00
Jeff Geerling
ffc1374a22
Merge pull request #487 from AliMehraji/master
Add requirements.txt and update docker-compose version
2025-01-08 21:27:36 -06:00
Ali Mehraji
0e347d18ff revert: .github/workflows/ci.yml and remove the requirements.txt 2025-01-08 20:44:42 +03:30
Ali Mehraji
3f66f26c24 Add: requirements.txt, update docker compose version to 2.32.1 2025-01-08 16:34:03 +03:30
Ali Mehraji
5944efdc95 Add: requirements.txt, update docker compose version to 2.32.1 2025-01-08 16:33:44 +03:30
Jeff Geerling
a9bd86ebad
Merge pull request #484 from shenxianpeng/patch-1
Fix README.md to restore green badge status
2024-12-17 11:40:31 -06:00
shenxianpeng
68b9fa94dd
Fix README.md to restore green badge status 2024-12-17 10:51:17 +02:00
Jeff Geerling
2050a073e5
Merge pull request #481 from FMotalleb/patch-1
docs(apt-sign-key): addressing a fix for #480
2024-12-03 09:04:05 -06:00
Motalleb Fallahnezhad
6d23496a16
docs(apt-sign-key): addressing a fix for #480 2024-12-03 14:32:57 +03:30
Jeff Geerling
a60f86efb1
Merge pull request #477 from dbrennand/fix/#470
Fix Issue #470
2024-11-23 11:32:59 -06:00
dbrennand
110cb89663
fix: https://github.com/geerlingguy/ansible-role-docker/issues/470 2024-11-23 17:13:20 +00:00
Jeff Geerling
38911fcd34
Merge pull request #475 from hobgoblina/update-obsolete-packages
Add `docker-doc` to default obsolete packages list
2024-11-19 09:36:36 -06:00
Lina²
11c3cd44d9
Update README.md 2024-11-18 22:45:26 -05:00
Lina²
d570925854
add docker-doc to docker_obsolete_packages 2024-11-18 22:34:00 -05:00
Jeff Geerling
bb8a21ad55
Merge pull request #469 from lanedif/patch-1
Update README.md
2024-09-21 23:49:23 -05:00
christophertoney3@gmail.com
acdf6da58f
Update README.md
Saw some errors in my install that devicemapper was deprecated and that overlay2 is the recommended default:
https://docs.docker.com/engine/storage/drivers/select-storage-driver/
2024-09-22 00:28:04 -04:00
Jeff Geerling
92e41f60f8
Merge pull request #467 from strgalt-t/master
Bump docker_compose_version to v2.29.2
2024-08-31 12:27:06 -05:00
Jan Langrehr
78790de1d7 Align docker_compose_version in README.md 2024-08-31 18:43:01 +02:00
Jan Langrehr
6e27357ded Bump docker_compose_version to v2.29.2 2024-08-28 17:03:09 +02:00
Jeff Geerling
ae17f0641b
Merge pull request #461 from gluckgames/fix/apt-key-duplication
Remove trusted.gpg.d artifacts.
2024-08-27 15:45:06 -05:00
Jeff Geerling
bccb2d9fda
Merge pull request #466 from Yemtex/patch-1
README: Updated docker compose and docker compose plugin default values
2024-08-26 18:58:50 -05:00
Yemtex
d3cbb31f8d
Updated docker compose and docker compose plugin default values
README now shows, that this role is using the recommended docker compose plugin
2024-08-26 00:09:55 +02:00
Dan Rough
f666736e79 Remove trusted.gpg.d artifacts. Fixes geerlingguy/ansible-role-docker#460 2024-07-24 11:03:00 +01: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
Jeff Geerling
8ff4a24147
Merge pull request #433 from Yethal/patch-1
Uninstall docker.io on apt distros
2023-11-10 12:37:11 -06:00
Yethal
a76a05024a
Uninstall docker.io on apt distros 2023-11-10 16:20:54 +01:00
Jeff Geerling
0fa54d7c59
Merge pull request #426 from kaysond/patch-1
Update documentation on docker_apt_filename
2023-10-05 19:06:11 +00:00
Jeff Geerling
15815e53e6
Merge pull request #428 from shuuji3/fix/gpg-key-error-on-popos
fix: fix failure for the initial gpg key load on Pop!_OS
2023-10-05 19:05:40 +00:00
TAKAHASHI Shuuji
cd9bf6fdf8 fix: fix failure for the initial gpg key load on Pop!_OS 2023-10-02 23:21:41 +09:00
Aram Akhavan
2b2f6e2100
Update README.md 2023-09-29 11:35:36 -07:00
Aram Akhavan
024cec5659
Update documentation about docker_apt_filename 2023-09-29 11:33:11 -07:00
Jeff Geerling
9d51ec8802
Merge pull request #424 from rpetti/fix-runc-conflict-on-rhel
remove runc, as it conflicts with containerd
2023-09-28 16:53:38 +00:00
Rob Petti
95d13bf2b8 remove runc, as it conflicts with containerd 2023-09-27 23:16:32 -06:00
Jeff Geerling
914ca965e0
Merge pull request #396 from dale-c-anderson/382-fix-apt-errors-on-pop-os
Fix apt errors on Pop!_OS
2023-09-28 02:12:12 +00:00
Jeff Geerling
3ceffb4cee
Merge pull request #420 from eropple/eropple-patch-1
Fix a typo in README.md
2023-09-28 02:11:17 +00:00
Jeff Geerling
1fad07589a
Merge pull request #369 from kaysond/new_defaults
Change defaults in the next major release
2023-09-28 02:09:48 +00:00
Aram Akhavan
fcbd3d7098
Merge branch 'master' into new_defaults 2023-09-27 14:41:20 -07:00
Ed Ropple
b41084ad3f
Fix a typo in README.md 2023-08-12 14:47:52 -04:00
Dale Anderson
a23731506b
Restore snippet lost in previous conflict 2023-08-10 09:12:33 -07:00
Dale Anderson
0b419a0a12
Merge branch 'master' into 382-fix-apt-errors-on-pop-os 2023-08-10 09:10:36 -07:00
Jeff Geerling
8bb277bd7f
Merge pull request #418 from nevart/apt-key-fix-check-mode
APT key: don't force and provide checksum, to fix check mode
2023-08-10 00:18:41 -05:00
Jeff Geerling
7fa232d1c1
Merge pull request #419 from nevart/debian-bookworm
Add Debian 12 bookworm support
2023-08-10 00:17:22 -05:00
Jeff Geerling
e6996ccca8
Merge pull request #410 from etkecc/debian-signed-by
debian: add signed-by param to the apt source list
2023-08-10 00:16:13 -05:00
nevart
81f23a11dc Add Debian 12 bookworm support 2023-08-06 13:01:27 +00:00
Jeff Geerling
78e50d46e2 Stale bot is now Stale GitHub Action. 2023-07-10 17:47:39 -05:00
nevart
7c86fe1739 APT key: don't force and provide checksum, to fix check mode
As described in https://github.com/ansible/ansible/issues/65687, get_url
only partially supports check_mode: "the changed status will reflect
comparison to an empty source file".

Before this change, executing this code, with the key already being in
place on the target system, would report "OK", while check_mode would
report "changed".

Due to this change, both now either report "OK" or "changed", depending
on the state of the target system.
2023-06-26 07:34:10 +00:00
Jeff Geerling
635061e0a4 Remove official support for RHEL. Rocky/Alma/Stream support is best-effort. 2023-06-23 10:56:08 -05:00
Jeff Geerling
a29e9d51e9 Fix Molecule CI workflow since docker plugin has moved. 2023-04-20 17:27:13 -05:00
Aine
32307386d4
debian: add signed-by param to the apt source list, fixes #409 2023-04-02 14:33:48 +03:00
Aram Akhavan
c3a127134d change default compose install to plugin, apt repository filename to docker.list 2023-02-21 22:43:08 -08:00
Aram Akhavan
d64f9afe19 add filename option to apt repository add 2023-02-21 22:35:04 -08:00
Jeff Geerling
67e50e9af0
Merge pull request #394 from aurelien-bareille/master
Add flag to deactivate repository configuration
2023-02-02 21:28:43 -06:00
Dale Anderson
2638529927
Fix linter warning 2023-01-23 17:50:49 -08:00
Dale Anderson
75b8acc626
Linux Mint is also Ubuntu under the hood
Closes #334
2023-01-23 17:41:27 -08:00
Dale Anderson
a6bab2c9be
Make naming more consistent 2022-12-30 15:46:38 -08:00
Dale Anderson
48688d0faf
Handle the exception more cleanly 2022-12-30 15:17:35 -08:00
Dale Anderson
43b5ad4fef
Override defaults for Pop!_OS 2022-12-30 14:56:00 -08:00
aurelien-bareille
61d571a941 Add documentation 2022-12-26 16:53:42 +01:00
aurelien-bareille
0ad2ddd2c6 Include repository setup dependancies in flag scope 2022-12-14 18:25:29 +01:00
aurelien-bareille
8b623b2266 Add flag to deactivate repository configuration 2022-12-14 16:31:46 +01:00
Jeff Geerling
b4a2ff5ee7 Remove CentOS 7 from tests. 2022-12-06 19:24:50 -06:00
Jeff Geerling
32dfe4c00e Fix Molecule CI workflow for Ubuntu 22.04 GitHub Actions. 2022-12-06 18:23:40 -06:00
Jeff Geerling
03d5bd6d06 Remove deprecated warn arg from command and shell module invocations. 2022-11-26 22:51:49 -06:00
Jeff Geerling
9685a2a30d
Merge pull request #389 from abalage/bugfix/fix-overriding-os-variables
Make override work by adjusting variable name to match defaults/main.yml
2022-11-10 16:01:59 -06:00
Balázs Németh
17ddd4ef2e Make override work by adjusting variable to match defaults/main.yml 2022-11-10 22:11:22 +01:00
Jeff Geerling
9154e3bf75
Merge pull request #384 from berthin/master
Fix condition for empty docker compose svn
2022-11-05 14:21:48 -05:00
berthin
3800fd2d42
Fix condition for empty docker compose svn 2022-11-05 11:20:04 +01:00
Jeff Geerling
96eaae30e5
Merge pull request #380 from adamantike/fix/set-docker_package-for-archlinux
Set default docker_package for Archlinux distribution
2022-10-10 15:49:02 -05:00
Michael Manganiello
8e09a22180 Set default docker_package for Archlinux distribution
Instead of the current role's default value for `docker_package`
(`docker-ce`), the package name for the Archlinux OS distribution is
`docker` [1].

Considerations:
* Filename is `Archlinux`, as that is the possible value exposed by
  Ansible, in `ansible_distribution` [2] and `ansible_os_family` [3].
* Platform name in meta's `galaxy_info` has been changed to `ArchLinux`,
  as that's the supported platform name in Ansible Galaxy [4].

[1] https://archlinux.org/packages/community/x86_64/docker/
[2] https://docs.ansible.com/ansible/2.6/user_guide/playbooks_conditionals.html#ansible-distribution
[3] https://docs.ansible.com/ansible/2.6/user_guide/playbooks_conditionals.html#ansible-os-family
[4] https://galaxy.ansible.com/api/v1/platforms/?name__icontains=arch
2022-10-09 23:01:52 -03:00
Jeff Geerling
a15de78905
Merge pull request #376 from geerlingguy/290-arm
Fixes #290: Allow role to work on ARM64 out of the box.
2022-09-26 17:15:32 -05:00
Jeff Geerling
53c487c31a Fixes #290: Allow role to work on ARM64 out of the box. 2022-09-26 17:09:27 -05:00
Jeff Geerling
6f636dc579
Merge pull request #373 from sosheskaz/fix-gpg
Download apt key directly
2022-09-08 17:34:14 -05:00
Jeff Geerling
928fe893e9 PR #370: Style cleanup. 2022-09-05 21:32:10 -05:00
Jeff Geerling
9f8ea35051
Merge pull request #370 from fardke/reset-ssh-connection-after-docker-install
reset ssh connection to allow user changes to affect current login user
2022-09-05 21:30:55 -05:00
Eric Miller
f463bb2c1a Download apt key directly
Fixes issue #372
2022-09-05 17:55:21 -05:00
Kevin Fardel
0884ae21b8 reset ssh connection to allow user changes to affect 'current login user'
Why:
Without this modification, we can't use docker with docker_users in same
playbook than the one which install docker.

How:
Check that docker_users are set and not in docker group before include
docker-users.yml. In docker-users.yml we call reset_connection from
ansible.builtin.meta collection after docker-users are added to docker
group.

Manual success tests:
* Try to install docker with only one user in docker-users and not in
  docker group => docker-users.yml include
* Try to install docker with only one user in docker-users but the user
  is in docker group => docker-users.yml not include
* Try to install docker with 2 users in docker-users, one user in docker
  group and the second not => docker-users.yml include
* Try to install docker with 2 users in docker-users, both are in docker
  group => docker-users.yml not include
* Try to install docker with 2 users in docker-users, both are not in
  docker group => docker-users.yml include
2022-08-24 17:07:45 +02:00
Jeff Geerling
53c5490523 PR #320: Use main.yml instead of default.yml for vars defaults. 2022-08-19 14:13:01 -05:00
Jeff Geerling
d3fcc22713
Merge pull request #320 from adamus1red/adamus1red/os-vars
Add OS specific variable overrides.
2022-08-19 14:09:16 -05:00
Jeff Geerling
93eef333bc
Update tasks/main.yml 2022-08-19 14:09:04 -05:00
Jeff Geerling
f78eb9d639
Update tasks/main.yml 2022-08-19 14:09:00 -05:00
Jeff Geerling
11345ab410
Merge pull request #365 from j-koehler/i205-install-docker-packages-explicitly
#205 - install Docker packages explicitly
2022-08-01 10:01:25 -05:00
Jeff Geerling
66cd55df09
Merge pull request #361 from dragetd/patch-1
Avoid string-based module configuration
2022-08-01 09:57:05 -05:00
Jeff Geerling
ccf6905017
Merge pull request #364 from kaysond/master
Add installation of docker plugin from docker's repo
2022-08-01 09:56:30 -05:00
Jeff Geerling
da9b7f78ee
Merge pull request #340 from jwhb/feature-service-manage
Allow skipping of service management
2022-08-01 09:55:50 -05:00
j.koehler
279392701d #205 - remove EoL Debian/Ubuntu versions, add Ubuntu 22.04 (jammy)
- Docker no longer lists Debian 9 and Ubuntu 16.04 LTS under "OS requirements" and there are also no molecule tests for Ubuntu 16.04
- Added Ubuntu 22.04 LTS while on it
2022-07-14 12:35:21 +02:00
j.koehler
99e501c366 #205 - install Docker packages explicitly
following official Docker engine installation instructions
2022-07-14 12:16:39 +02:00
Aram Akhavan
028a764e83 add installation of docker plugin from repo 2022-07-05 19:39:39 -07:00
Michael G
ff37406248
Avoid string-based module configuration
Configure module parameters as a YAML dict instead of string.
2022-06-23 07:02:31 +02:00
Jeff Geerling
f583d39a84
Merge pull request #359 from megabug/fix-gnupg-condition
Correct gnupg installation condition
2022-06-17 10:24:50 -05:00
Matthew Daley
5d35e0208c Correct gnupg installation condition 2022-06-18 00:08:48 +12:00
Jeff Geerling
8453301f62
Merge pull request #356 from fgierlinger/fix/extra-ini-spaces
fix: remove extra spaces on enable option in ini files
2022-06-07 09:49:41 -05:00
fgierlinger
e42ed58e46
chore: change yes to true 2022-06-07 14:34:26 +02:00
fgierlinger
efebb627b9
fix: remove extra spaces on enable option in ini files 2022-06-07 14:30:22 +02:00
Jeff Geerling
32fd595d07 Add role_name_check skipping to all molecule test suites. 2022-06-01 22:20:37 -05:00
Jeff Geerling
2bc23db51a
Merge pull request #352 from crate-workbench/amo/allow-downgrades-debian-redhat-only
Fix package downgrading for non-{RedHat,Debian} systems
2022-05-24 23:23:22 -05:00
Andreas Motl
887eee43c7 Fix package downgrading for non-{RedHat,Debian} systems
Not all package install handlers implement the `allow_downgrade` option.
For example, using Ansible >= 2.12 on Arch Linux would croak like:

    Unsupported parameters for (ansible.legacy.pacman) module: allow_downgrade.
2022-05-24 23:29:09 +02:00
Jeff Geerling
5b8e39b38e
Merge pull request #343 from Normo/342-fix-docker-compose-update
Fix docker-compose update
2022-04-12 14:10:05 -05:00
Norman Ziegner
c5f2b14d9a
Fix docker-compose update
Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de>
2022-04-12 15:53:25 +02:00
jwhb
83e2c066c1 Allow skipping of service management 2022-04-07 11:23:29 +02:00
Jeff Geerling
9b819a6c51
Merge pull request #339 from bajalnyt/master
Update conditional for docker-compose check
2022-04-04 22:08:31 -05:00
Bajal
a9fe63f768
Needs additional check 2022-04-04 21:01:36 -04:00
Bajal
b48741f289
Update conditional for docker-compose check 2022-04-04 20:46:43 -04:00
Jeff Geerling
cef4b7892e Attempt to fix some Docker compose version comparison bugs. 2022-04-04 10:32:17 -05:00
Jeff Geerling
48d5a077d5 Fixes #304: Default to v2.4.1 for Docker Compose. 2022-04-04 09:43:50 -05:00
Jeff Geerling
13c293fe8d
Merge pull request #336 from crate-workbench/amo/allow-downgrades
Allow package downgrading
2022-04-04 09:40:22 -05:00
Jeff Geerling
496a188cf8
Merge pull request #331 from Lithimlin/compose-version
Compose version
2022-04-04 09:39:37 -05:00
Andreas Motl
5fe0726d52 Allow package downgrading
For the "package" task, add "allow_downgrade: true" to support this
scenario.

Because this option is only available starting with `ansible-core>=2.12`
for apt-based systems, we need conditional dispatching here.
2022-03-30 20:06:17 +02:00
JL Euler
17c4349b7f
Merge branch 'geerlingguy:master' into compose-version 2022-01-26 17:40:17 +01:00
Julian Euler
c9e77fb0cf Revert "automatic architecture detection"
This reverts commit 32129135d7.
2022-01-26 17:34:10 +01:00
Julian Euler
bfba781af0 more robust compose version comparison 2022-01-26 17:27:53 +01:00
Julian Euler
32129135d7 automatic architecture detection 2022-01-26 17:27:31 +01:00
Jeff Geerling
17633d6cb1
Merge pull request #319 from OrBin/master
Extracted `docker_compose_arch` variable from `docker_compose_url`
2022-01-16 23:01:40 -06:00
Or Bin
ffb34275d2
Added docker_compose_arch to README 2022-01-15 14:48:38 +02:00
Or Bin
138aa4bd9c Merge branch 'geerlingguy:master' into master 2022-01-15 14:47:33 +02:00
Jeff Geerling
e622cbda44
Merge pull request #326 from kare/style-fix-325
style: fix ansible-lint nit about truthy value
2022-01-13 12:32:03 -06:00
Kare Nuorteva
f6cd0ed3f8 style: fix ansible-lint nit about truthy value
yaml: truthy value should be one of [false, true] (truthy)
roles/geerlingguy.docker/tasks/docker-compose.yml:5

Fixes geerlingguy/ansible-role-docker#325
2022-01-13 19:20:24 +02:00
adamus1red
e60f04337d Add OS specific variable overrides.
Specifically Alpine official repo uses `docker` rather than `docker-ce` or `docker-ee`
2021-12-31 15:38:08 +00:00
Jeff Geerling
eeef0c0082 Update release workflow for more consistency. 2021-12-27 11:34:54 -06:00
Jeff Geerling
aac88da1c6 Use rockylinux8 instead of centos8 for CI. 2021-12-27 11:30:15 -06:00
Or Bin
1bad0cbc18
Extracted docker_compose_arch variable from docker_compose_url 2021-12-24 00:33:43 +02:00
Jeff Geerling
e8c2b9ffbe
Merge pull request #311 from fauust/fix-sudo-dep
Remove sudo dependency
2021-10-31 00:03:43 -05:00
Faustin Lammler
fcb1f461c0
Remove sudo dependency
The sudo dependency should not be needed because sudo escalation is
managed by Ansible.
2021-10-30 12:53:30 +02:00
Jeff Geerling
010917b868
Merge pull request #306 from fabricat/patch-1
run check task even in check mode
2021-10-14 09:54:30 -05:00
fabricat
a0ce4704b8
run check task even in check mode 2021-10-14 14:48:04 +02:00
Jeff Geerling
e35fef8b69 Slight tweak to README. 2021-10-12 09:52:24 -05:00
Jeff Geerling
6cc5a75533
Merge pull request #305 from We-Manage/master
Add We Manage as sponsor and generic information on sponsoring geerlingguy on GitHub
2021-10-12 09:50:55 -05:00
Andreas Lehr
3fb640a8ba Add We Manage as sponsor and generic information on sponsoring geerlinguy on Github 2021-10-12 11:52:20 +02:00
Jeff Geerling
4f4c332aa1 PR #295: Additional docs fixes for docker_repo_url. 2021-08-27 15:51:15 -05:00
Jeff Geerling
444435f7a1
Merge pull request #295 from sakthimaan/patch-1
moved docker repo url to separate section
2021-08-27 15:49:04 -05:00
shakthimaan
5b55f89751
moved docker repo url to separate section
moved docker repo url to separate section because this url is common for both debian and redhat family.
2021-08-26 20:39:48 +05:30
Jeff Geerling
4d488469c6 Make sure bugs aren't automatically closed. 2021-08-23 08:53:05 -05:00
Jeff Geerling
6aacc01ecb
Merge pull request #292 from staticdev/feature/add-debian-11
Add Debian 11
2021-08-18 10:40:13 -05:00
staticdev
b377445abd Add Debian 11 2021-08-17 10:30:02 +02:00
Jeff Geerling
7afdc965a1
Merge pull request #256 from Zempashi/issue-90
Ability to configure Docker daemon options
2021-07-16 17:27:47 -05:00
Julien Girardin
47a271e39a Do not touch docker.json if not option provided 2021-07-16 23:29:40 +02:00
Jeff Geerling
e0fc26eb36
Merge pull request #281 from eengstrom/additional-check-mode-error-ignores
Add check and ignore installation errors in `--check` mode
2021-05-19 12:38:11 -05:00
Eric Engstrom
cc1171a9f7
Add check and ignore installation errors in --check mode
- addresses #280
2021-05-19 11:39:47 -05:00
Jeff Geerling
d9361630a9
Merge pull request #278 from fourstepper/patch-2
Update ci.yml
2021-05-16 15:07:25 -05:00
Robin Opletal
67ad58097c
Update ci.yml
Fedora 34 is out - let's use that for testing from now on
2021-05-16 11:31:51 +02:00
Jeff Geerling
e5c8040aff
Merge pull request #274 from eengstrom/ignore-errors-in-check-mode
ignore likely errors if in `ansible_check_mode`
2021-04-27 14:05:42 -05:00
Eric Engstrom
150a7ce135
ignore likely errors if in ansible_check_mode 2021-04-20 11:16:09 -05:00
Jeff Geerling
ab3d6c7ec5
Merge pull request #269 from riker09/patch-1
Fixed typo in log message
2021-03-26 08:37:37 -05:00
Volker Thiel
d061f2fefa
Fixed typo in log message 2021-03-26 10:19:45 +01:00
Jeff Geerling
85ab2a940c
Merge pull request #268 from toxinu/gnupg2-ubuntu-20-04
Do not install gnupg2 on Ubuntu 20.04 and superior
2021-03-25 13:30:21 -05:00
toxinu
09df8f5688
Add gnupg for systems >= Ubuntu 20.04 2021-03-24 11:26:04 +09:00
toxinu
054e74268e
Do not install gnupg2 on Ubuntu 20.04 and superior 2021-03-23 15:53:43 +09:00
Jeff Geerling
6d4324900d
Merge pull request #265 from slicen/master
Add ability to configure package mirrors
2021-03-15 16:38:08 -05:00
Jeff Geerling
b1704ce303 Remove ansible-lint from roles. 2021-03-15 09:27:11 -05:00
slicen
7c0c38ddf8 Adds configuration option to point to Docker package mirror
Useful in an offline environment to point to a docker.com mirror.
2021-03-13 17:13:54 +11:00
slicen
c2f737d5a2 Only fetch docker-compose if current version is not the desired version 2021-03-13 17:13:35 +11:00
slicen
a977b06b7b Adds option to configure docker-compose URL
Necessary for installing from a local mirror or in an offline environmment.
2021-03-12 23:44:42 +11:00
Jeff Geerling
5eec6ef54e Make ansible-lint work again. 2021-02-22 16:30:14 -06:00
Jeff Geerling
c254e08049
Merge pull request #250 from fourstepper/patch-1
Add Fedora 32 and Fedora 33 to CI
2021-01-05 08:42:47 -06:00
Robin Opletal
002f371439
Remove fedora 31 and 32 2021-01-05 07:58:03 +01:00
Robin Opletal
fbfbf5fc96
Add Fedora 32 and Fedora 33 to CI 2021-01-04 11:20:36 +01:00
Jeff Geerling
90ede92178
Merge pull request #249 from geerlingguy/docker-edge-to-nightly
Fixes #239: Switch from 'Edge' to 'Nightly' option since Edge is not a thing now.
2020-12-27 09:24:32 -06:00
Jeff Geerling
6daa4c52e5 Fixes #239: Switch from 'Edge' to 'Nightly' option since Edge is not a thing now. 2020-12-27 00:20:26 -06:00
Jeff Geerling
e12fd1e5c3
Merge pull request #248 from geerlingguy/docker-ce-20-10-centos
Fixes #243: Remove step that disables container-tools on CentOS 8.
2020-12-27 00:17:16 -06:00
Jeff Geerling
bc3c942399 Fixes #243: Remove step that disables container-tools on CentOS 8. 2020-12-27 00:10:59 -06:00
Jeff Geerling
e5adc9a528 Dump Travis CI and move to GitHub Actions. 2020-11-05 09:57:10 -06:00
Jeff Geerling
c700df5542 Switch to travis-ci.com. 2020-10-26 20:08:58 -05:00
Jeff Geerling
03d927b2c8 Make sure docker driver is installed with molecule. 2020-10-15 17:02:38 -05:00
Ricky Kwan
0df75aea53
Capitalize 'docker' in the task name
Since most other instances are capitalized
2018-10-08 22:07:15 -04:00
Ricky Kwan
33afdbb0f8 Ability to configure Docker daemon options 2018-10-08 18:53:22 +00:00
25 changed files with 562 additions and 185 deletions

View File

@ -1,3 +1,4 @@
skip_list:
- '306'
- '106'
- 'yaml'
- 'risky-shell-pipe'
- 'role-name'

56
.github/stale.yml vendored
View File

@ -1,56 +0,0 @@
# Configuration for probot-stale - https://github.com/probot/stale
---
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 90
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 30
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- pinned
- security
- planned
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: false
# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false
# Label to use when marking as stale
staleLabel: stale
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
pulls:
markComment: |-
This pull request has been marked 'stale' due to lack of recent activity. If there is no further activity, the PR will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark pull requests as stale.
unmarkComment: >-
This pull request is no longer marked for closure.
closeComment: >-
This pull request has been closed due to inactivity. If you feel this is in error, please reopen the pull request or file a new PR with the relevant details.
issues:
markComment: |-
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
unmarkComment: >-
This issue is no longer marked for closure.
closeComment: >-
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.

70
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,70 @@
---
name: CI
'on':
pull_request:
push:
branches:
- master
schedule:
- cron: "0 7 * * 0"
defaults:
run:
working-directory: 'geerlingguy.docker'
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
with:
path: 'geerlingguy.docker'
- name: Set up Python 3.
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install test dependencies.
run: pip3 install yamllint
- name: Lint code.
run: |
yamllint .
molecule:
name: Molecule
runs-on: ubuntu-latest
strategy:
matrix:
distro:
- rockylinux9
- ubuntu2404
- ubuntu2204
- debian12
- debian11
- fedora40
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
with:
path: 'geerlingguy.docker'
- name: Set up Python 3.
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install test dependencies.
run: pip3 install ansible molecule molecule-plugins[docker] docker
- name: Run Molecule tests.
run: molecule test
env:
PY_COLORS: '1'
ANSIBLE_FORCE_COLOR: '1'
MOLECULE_DISTRO: ${{ matrix.distro }}

40
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,40 @@
---
# This workflow requires a GALAXY_API_KEY secret present in the GitHub
# repository or organization.
#
# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy
# See: https://github.com/ansible/galaxy/issues/46
name: Release
'on':
push:
tags:
- '*'
defaults:
run:
working-directory: 'geerlingguy.docker'
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
with:
path: 'geerlingguy.docker'
- name: Set up Python 3.
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install Ansible.
run: pip3 install ansible-core
- name: Trigger a new import on Galaxy.
run: >-
ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }}
$(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2)

34
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,34 @@
---
name: Close inactive issues
'on':
schedule:
- cron: "55 6 * * 1" # semi-random time
jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v8
with:
days-before-stale: 120
days-before-close: 60
exempt-issue-labels: bug,pinned,security,planned
exempt-pr-labels: bug,pinned,security,planned
stale-issue-label: "stale"
stale-pr-label: "stale"
stale-issue-message: |
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
close-issue-message: |
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
stale-pr-message: |
This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
close-pr-message: |
This pr has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
repo-token: ${{ secrets.GITHUB_TOKEN }}

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
*.retry
*/__pycache__
*.pyc
.cache

View File

@ -1,37 +0,0 @@
---
language: python
services: docker
env:
global:
- ROLE_NAME: docker
matrix:
- MOLECULE_DISTRO: centos8
- MOLECULE_DISTRO: centos7
- MOLECULE_DISTRO: ubuntu2004
- MOLECULE_DISTRO: ubuntu1804
- MOLECULE_DISTRO: ubuntu1604
- MOLECULE_DISTRO: debian10
- MOLECULE_DISTRO: debian9
- MOLECULE_DISTRO: fedora31
before_install:
# Upgrade Docker to work with docker-py.
- curl https://gist.githubusercontent.com/geerlingguy/ce883ad4aec6a5f1187ef93bd338511e/raw/36612d28981d92863f839c5aefe5b7dd7193d6c6/travis-ci-docker-upgrade.sh | sudo bash
install:
# Install test dependencies.
- pip install molecule yamllint ansible-lint docker
before_script:
# Use actual Ansible Galaxy role name for the project directory.
- cd ../
- mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME
- cd geerlingguy.$ROLE_NAME
script:
# Run tests.
- molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -7,5 +7,4 @@ rules:
level: warning
ignore: |
.github/stale.yml
.travis.yml
.github/workflows/stale.yml

135
README.md
View File

@ -1,6 +1,6 @@
# Ansible Role: Docker
[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-docker.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-docker)
[![CI](https://github.com/geerlingguy/ansible-role-docker/actions/workflows/ci.yml/badge.svg)](https://github.com/geerlingguy/ansible-role-docker/actions/workflows/ci.yml)
An Ansible Role that installs [Docker](https://www.docker.com) on Linux.
@ -12,54 +12,125 @@ None.
Available variables are listed below, along with default values (see `defaults/main.yml`):
# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce'
docker_package: "docker-{{ docker_edition }}"
docker_package_state: present
```yaml
# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce'
docker_packages:
- "docker-{{ docker_edition }}"
- "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras"
docker_packages_state: present
```
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: Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>`; Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>`.
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:
Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>` (Note: you have to add this to all packages);
Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>` (Note: you have to add this to all packages).
You can control whether the package is installed, uninstalled, or at the latest version by setting `docker_package_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).
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted
```yaml
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- docker-doc
- docker-compose
- docker-compose-v2
- podman-docker
- containerd
- runc
```
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 these to `stopped` and set the enabled variable to `no`.
`docker_obsolete_packages` for different os-family:
docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_path: /usr/local/bin/docker-compose
- [`RedHat.yaml`](./vars/RedHat.yml)
- [`Debian.yaml`](./vars/Debian.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.
```yaml
docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
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`.
```yaml
docker_install_compose_plugin: true
docker_compose_package: docker-compose-plugin
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.
```yaml
docker_install_compose: false
docker_compose_version: "v2.32.1"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-linux-{{ docker_compose_arch }}"
docker_compose_path: /usr/local/bin/docker-compose
```
Docker Compose installation options.
docker_apt_release_channel: stable
docker_apt_arch: amd64
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: True
docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
```yaml
docker_add_repo: true
```
(Used only for Debian/Ubuntu.) You can switch the channel to `edge` if you want to use the Edge release.
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
```
The main Docker repo URL, common between Debian and RHEL systems.
```yaml
docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}{{' signed-by=/etc/apt/keyrings/docker.asc' if add_repository_key is not failed}}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: True
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker"
```
(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.
Usually in combination with changing `docker_apt_repository` as well.
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: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo
docker_yum_repo_enable_edge: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg
```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_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora', 'centos') }}/gpg"
```
(Used only for RedHat/CentOS.) You can enable the Edge 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.
Usually in combination with changing `docker_yum_repository` as well.
docker_users:
- user1
- user2
```yaml
docker_users:
- user1
- user2
```
A list of system users to be added to the `docker` group (so they can use Docker on the server).
```yaml
docker_daemon_options:
storage-driver: "overlay2"
log-opts:
max-size: "100m"
```
Custom `dockerd` options can be configured through this dictionary representing the json file `/etc/docker/daemon.json`.
## Use with Ansible (and `docker` Python library)
Many users of this role wish to also use Ansible to then _build_ Docker images and manage Docker containers on the server where Docker is installed. In this case, you can easily add in the `docker` Python library using the `geerlingguy.pip` role:
@ -92,6 +163,12 @@ None.
MIT / BSD
## Sponsors
* [We Manage](https://we-manage.de): Helping start-ups and grown-ups scaling their infrastructure in a sustainable way.
The above sponsor(s) are supporting Jeff Geerling on [GitHub Sponsors](https://github.com/sponsors/geerlingguy). You can sponsor Jeff's work too, to help him continue improving these Ansible open source projects!
## Author Information
This role was created in 2017 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).

View File

@ -1,31 +1,68 @@
---
# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce'
docker_package: "docker-{{ docker_edition }}"
docker_package_state: present
docker_packages:
- "docker-{{ docker_edition }}"
- "docker-{{ docker_edition }}-cli"
- "docker-{{ docker_edition }}-rootless-extras"
- "containerd.io"
- docker-buildx-plugin
docker_packages_state: present
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- docker-doc
- docker-compose
- docker-compose-v2
- podman-docker
- containerd
- runc
# Service options.
docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted
# Docker Compose Plugin options.
docker_install_compose_plugin: true
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present
# Docker Compose options.
docker_install_compose: true
docker_compose_version: "1.26.0"
docker_install_compose: false
docker_compose_version: "v2.32.1"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-linux-{{ docker_compose_arch }}"
docker_compose_path: /usr/local/bin/docker-compose
# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.
# Enable repo setup
docker_add_repo: true
# Docker repo URL.
docker_repo_url: https://download.docker.com/linux
# Used only for Debian/Ubuntu/Pop!_OS/Linux Mint. Switch 'stable' to 'nightly' if needed.
docker_apt_release_channel: stable
docker_apt_arch: amd64
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
# 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.
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 'armhf' if ansible_architecture == 'armv7l' else 'amd64' }}"
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_gpg_key: https://download.docker.com/linux/{{ 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_filename: "docker"
# Used only for RedHat/CentOS/Fedora.
docker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == "Fedora") | ternary("fedora","centos") }}/docker-{{ docker_edition }}.repo
docker_yum_repo_enable_edge: '0'
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_test: '0'
docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg
docker_yum_gpg_key: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora', 'centos') }}/gpg"
# A list of users who will be added to the docker group.
docker_users: []
# Docker daemon options as a dict
docker_daemon_options: {}

View File

@ -1,3 +1,7 @@
---
- name: restart docker
service: "name=docker state={{ docker_restart_handler_state }}"
service:
name: docker
state: "{{ docker_restart_handler_state }}"
ignore_errors: "{{ ansible_check_mode }}"
when: docker_service_manage | bool

View File

@ -7,24 +7,28 @@ galaxy_info:
description: Docker for Linux.
company: "Midwestern Mac, LLC"
license: "license (BSD, MIT)"
min_ansible_version: 2.4
min_ansible_version: 2.10
platforms:
- name: EL
versions:
- 7
- 8
- name: Fedora
versions:
- all
- name: Debian
versions:
- stretch
- buster
- bullseye
- bookworm
- name: Ubuntu
versions:
- xenial
- bionic
- focal
- jammy
- noble
- name: Alpine
version:
- all
- name: ArchLinux
versions:
- all
galaxy_tags:
- web
- system

View File

@ -1,7 +1,7 @@
---
- name: Converge
hosts: all
become: true
# become: true
pre_tasks:
- name: Update apt cache.

View File

@ -1,18 +1,18 @@
---
role_name_check: 1
dependency:
name: galaxy
options:
ignore-errors: true
driver:
name: docker
lint: |
set -e
yamllint .
ansible-lint
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
provisioner:

View File

@ -0,0 +1,51 @@
---
- name: Verify Docker Role
hosts: all
tasks:
- name: Verify Docker binary is available
command: docker version
register: docker_version_result
changed_when: false
failed_when: docker_version_result.rc != 0
- name: Show Docker version details
debug:
msg: >
Docker Version Output:
{{ docker_version_result.stdout_lines | join('\n') }}
- name: Verify Docker service is running
command: systemctl is-active docker
register: docker_service_status
when: ansible_service_mgr == 'systemd'
changed_when: false
failed_when: docker_service_status.stdout.strip() != "active"
- name: Display Docker service status
debug:
msg: "Docker service is {{ docker_service_status.stdout.strip() }}"
when: ansible_service_mgr == 'systemd'
- name: Pull the 'hello-world' image
command: docker pull hello-world
register: docker_pull_result
changed_when: true
failed_when: docker_pull_result.rc != 0
- name: Show result of pulling the 'hello-world' image
debug:
msg: >
Pulling 'hello-world' completed with output:
{{ docker_pull_result.stdout_lines | join('\n') }}
- name: Run a test container (hello-world)
command: docker run --rm hello-world
register: docker_run_result
changed_when: true
failed_when: docker_run_result.rc != 0
- name: Display test container output
debug:
msg: >
Running 'hello-world' container completed with output:
{{ docker_run_result.stdout_lines | join('\n') }}

View File

@ -1,20 +1,31 @@
---
- name: Check current docker-compose version.
command: docker-compose --version
register: docker_compose_current_version
command: "{{ docker_compose_path }} --version"
register: docker_compose_vsn
check_mode: false
changed_when: false
failed_when: false
- set_fact:
docker_compose_current_version: "{{ docker_compose_vsn.stdout | regex_search('(\\d+(\\.\\d+)+)') }}"
when: >
docker_compose_vsn.stdout is defined
and (docker_compose_vsn.stdout | length > 0)
- name: Delete existing docker-compose version if it's different.
file:
path: "{{ docker_compose_path }}"
state: absent
when: >
docker_compose_current_version.stdout is defined
and docker_compose_version not in docker_compose_current_version.stdout
docker_compose_current_version is defined
and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version
- name: Install Docker Compose (if configured).
get_url:
url: https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64
url: "{{ docker_compose_url }}"
dest: "{{ docker_compose_path }}"
mode: 0755
when: >
(docker_compose_current_version is not defined)
or (docker_compose_current_version | length == 0)
or (docker_compose_current_version is version((docker_compose_version | regex_replace('v', '')), '<'))

View File

@ -5,3 +5,6 @@
groups: docker
append: true
with_items: "{{ docker_users }}"
- name: Reset ssh connection to apply user changes.
meta: reset_connection

View File

@ -1,14 +1,68 @@
---
- name: Load OS-specific vars.
include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- '{{ansible_distribution}}.yml'
- '{{ansible_os_family}}.yml'
- main.yml
paths:
- 'vars'
- include_tasks: setup-RedHat.yml
when: ansible_os_family == 'RedHat'
- include_tasks: setup-Debian.yml
when: ansible_os_family == 'Debian'
- name: Install Docker.
- name: Install Docker packages.
package:
name: "{{ docker_package }}"
state: "{{ docker_package_state }}"
name: "{{ docker_packages }}"
state: "{{ docker_packages_state }}"
notify: restart docker
ignore_errors: "{{ ansible_check_mode }}"
when: "ansible_version.full is version_compare('2.12', '<') or ansible_os_family not in ['RedHat', 'Debian']"
- name: Install Docker packages (with downgrade option).
package:
name: "{{ docker_packages }}"
state: "{{ docker_packages_state }}"
allow_downgrade: true
notify: restart docker
ignore_errors: "{{ ansible_check_mode }}"
when: "ansible_version.full is version_compare('2.12', '>=') and ansible_os_family in ['RedHat', 'Debian']"
- name: Install docker-compose plugin.
package:
name: "{{ docker_compose_package }}"
state: "{{ docker_compose_package_state }}"
notify: restart docker
ignore_errors: "{{ ansible_check_mode }}"
when: "docker_install_compose_plugin | bool == true and (ansible_version.full is version_compare('2.12', '<') or ansible_os_family not in ['RedHat', 'Debian'])"
- name: Install docker-compose-plugin (with downgrade option).
package:
name: "{{ docker_compose_package }}"
state: "{{ docker_compose_package_state }}"
allow_downgrade: true
notify: restart docker
ignore_errors: "{{ ansible_check_mode }}"
when: "docker_install_compose_plugin | bool == true and ansible_version.full is version_compare('2.12', '>=') and ansible_os_family in ['RedHat', 'Debian']"
- name: Ensure /etc/docker/ directory exists.
file:
path: /etc/docker
state: directory
mode: 0755
when: docker_daemon_options.keys() | length > 0
- name: Configure Docker daemon options.
copy:
content: "{{ docker_daemon_options | to_nice_json }}"
dest: /etc/docker/daemon.json
mode: 0644
when: docker_daemon_options.keys() | length > 0
notify: restart docker
- name: Ensure Docker is started and enabled at boot.
@ -16,6 +70,8 @@
name: docker
state: "{{ docker_service_state }}"
enabled: "{{ docker_service_enabled }}"
ignore_errors: "{{ ansible_check_mode }}"
when: docker_service_manage | bool
- name: Ensure handlers are notified now to avoid firewall conflicts.
meta: flush_handlers
@ -23,5 +79,20 @@
- include_tasks: docker-compose.yml
when: docker_install_compose | bool
- include_tasks: docker-users.yml
- name: Get docker group info using getent.
getent:
database: group
key: docker
split: ':'
when: docker_users | length > 0
- name: Check if there are any users to add to the docker group.
set_fact:
at_least_one_user_to_modify: true
when:
- docker_users | length > 0
- item not in ansible_facts.getent_group["docker"][2]
with_items: "{{ docker_users }}"
- include_tasks: docker-users.yml
when: at_least_one_user_to_modify is defined

View File

@ -1,9 +1,26 @@
---
- name: Ensure old versions of Docker are not installed.
- name: Ensure apt key is not present in trusted.gpg.d
ansible.builtin.file:
path: /etc/apt/trusted.gpg.d/docker.asc
state: absent
- name: Ensure old apt source list is not present in /etc/apt/sources.list.d
ansible.builtin.file:
path: "/etc/apt/sources.list.d/download_docker_com_linux_{{ docker_apt_ansible_distribution | lower }}.list"
state: absent
- name: Ensure the repo referencing the previous trusted.gpg.d key is not present
apt_repository:
repo: "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 }}"
state: absent
filename: "{{ docker_apt_filename }}"
update_cache: true
when: docker_add_repo | bool
- # See https://docs.docker.com/engine/install/debian/#uninstall-old-versions
name: Ensure old versions of Docker are not installed.
package:
name:
- docker
- docker-engine
name: "{{ docker_obsolete_packages }}"
state: absent
- name: Ensure dependencies are installed.
@ -11,30 +28,39 @@
name:
- apt-transport-https
- ca-certificates
- gnupg2
state: present
when: docker_add_repo | bool
- name: Ensure directory exists for /etc/apt/keyrings
file:
path: /etc/apt/keyrings
state: directory
mode: "0755"
- name: Add Docker apt key.
apt_key:
ansible.builtin.get_url:
url: "{{ docker_apt_gpg_key }}"
id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
state: present
dest: /etc/apt/keyrings/docker.asc
mode: "0644"
force: false
checksum: "{{ docker_apt_gpg_key_checksum | default(omit) }}"
register: add_repository_key
ignore_errors: "{{ docker_apt_ignore_key_error }}"
when: docker_add_repo | bool
- name: Ensure curl is present (on older systems without SNI).
package: name=curl state=present
when: add_repository_key is failed
when: add_repository_key is failed and docker_add_repo | bool
- name: Add Docker apt key (alternative for older systems without SNI).
shell: >
curl -sSL {{ docker_apt_gpg_key }} | sudo apt-key add -
args:
warn: false
when: add_repository_key is failed
curl -sSL {{ docker_apt_gpg_key }} | apt-key add -
when: add_repository_key is failed and docker_add_repo | bool
- name: Add Docker repository.
apt_repository:
repo: "{{ docker_apt_repository }}"
state: present
filename: "{{ docker_apt_filename }}"
update_cache: true
when: docker_add_repo | bool

View File

@ -1,16 +1,14 @@
---
- name: Ensure old versions of Docker are not installed.
package:
name:
- docker
- docker-common
- docker-engine
name: "{{ docker_obsolete_packages }}"
state: absent
- name: Add Docker GPG key.
rpm_key:
key: "{{ docker_yum_gpg_key }}"
state: present
when: docker_add_repo | bool
- name: Add Docker repository.
get_url:
@ -19,14 +17,17 @@
owner: root
group: root
mode: 0644
when: docker_add_repo | bool
- name: Configure Docker Edge repo.
- name: Configure Docker Nightly repo.
ini_file:
dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'
section: 'docker-{{ docker_edition }}-edge'
section: 'docker-{{ docker_edition }}-nightly'
option: enabled
value: '{{ docker_yum_repo_enable_edge }}'
value: '{{ docker_yum_repo_enable_nightly }}'
mode: 0644
no_extra_spaces: true
when: docker_add_repo | bool
- name: Configure Docker Test repo.
ini_file:
@ -35,18 +36,21 @@
option: enabled
value: '{{ docker_yum_repo_enable_test }}'
mode: 0644
no_extra_spaces: true
when: docker_add_repo | bool
- name: Configure containerd on RHEL 8.
block:
- name: Ensure runc is not installed.
package:
name: runc
state: absent
- name: Ensure container-selinux is installed.
package:
name: container-selinux
state: present
- name: Disable container-tools module.
command: dnf -y module disable container-tools
changed_when: false
- name: Ensure containerd.io is installed.
package:
name: containerd.io

3
vars/Alpine.yml Executable file
View File

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

3
vars/Archlinux.yml Normal file
View File

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

14
vars/Debian.yml Normal file
View File

@ -0,0 +1,14 @@
---
# Used only for Debian/Ubuntu (Debian OS-Family)
# https://docs.docker.com/engine/install/debian/#uninstall-old-versions
docker_obsolete_packages:
- docker
- docker.io
- docker-engine
- docker-doc
- docker-compose
- docker-compose-v2
- podman-docker
- containerd
- runc

14
vars/RedHat.yml Normal file
View File

@ -0,0 +1,14 @@
---
# Used only for Fedora/Rocky (RedHat OS-Family)
# https://docs.docker.com/engine/install/fedora/#uninstall-old-versions
# https://docs.docker.com/engine/install/centos/#uninstall-old-versions
docker_obsolete_packages:
- docker
- docker-client
- docker-client-latest
- docker-common
- docker-latest
- docker-latest-logrotate
- docker-logrotate
- docker-engine

2
vars/main.yml Executable file
View File

@ -0,0 +1,2 @@
---
# Empty file