Rolle aktualisiert: docker (#465)
Co-authored-by: Michael Grote <michael.grote@posteo.de> Reviewed-on: #465
This commit is contained in:
parent
4098803311
commit
33af594509
18 changed files with 232 additions and 49 deletions
|
@ -1,3 +1,4 @@
|
||||||
skip_list:
|
skip_list:
|
||||||
- '306'
|
- 'yaml'
|
||||||
- '106'
|
- 'risky-shell-pipe'
|
||||||
|
- 'role-name'
|
||||||
|
|
1
roles/geerlingguy.docker/.github/stale.yml
vendored
1
roles/geerlingguy.docker/.github/stale.yml
vendored
|
@ -12,6 +12,7 @@ onlyLabels: []
|
||||||
|
|
||||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||||
exemptLabels:
|
exemptLabels:
|
||||||
|
- bug
|
||||||
- pinned
|
- pinned
|
||||||
- security
|
- security
|
||||||
- planned
|
- planned
|
||||||
|
|
|
@ -29,12 +29,11 @@ jobs:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
- name: Install test dependencies.
|
- name: Install test dependencies.
|
||||||
run: pip3 install yamllint ansible-lint
|
run: pip3 install yamllint
|
||||||
|
|
||||||
- name: Lint code.
|
- name: Lint code.
|
||||||
run: |
|
run: |
|
||||||
yamllint .
|
yamllint .
|
||||||
ansible-lint
|
|
||||||
|
|
||||||
molecule:
|
molecule:
|
||||||
name: Molecule
|
name: Molecule
|
||||||
|
@ -42,13 +41,13 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
distro:
|
distro:
|
||||||
- centos8
|
- rockylinux8
|
||||||
- centos7
|
- ubuntu2204
|
||||||
- ubuntu2004
|
- ubuntu2004
|
||||||
- ubuntu1804
|
- ubuntu1804
|
||||||
|
- debian11
|
||||||
- debian10
|
- debian10
|
||||||
- debian9
|
- fedora34
|
||||||
- fedora33
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out the codebase.
|
- name: Check out the codebase.
|
||||||
|
|
|
@ -32,7 +32,9 @@ jobs:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
- name: Install Ansible.
|
- name: Install Ansible.
|
||||||
run: pip3 install ansible-base
|
run: pip3 install ansible-core
|
||||||
|
|
||||||
- name: Trigger a new import on Galaxy.
|
- 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)
|
run: >-
|
||||||
|
ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }}
|
||||||
|
$(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2)
|
||||||
|
|
2
roles/geerlingguy.docker/.gitignore
vendored
2
roles/geerlingguy.docker/.gitignore
vendored
|
@ -1,3 +1,5 @@
|
||||||
*.retry
|
*.retry
|
||||||
*/__pycache__
|
*/__pycache__
|
||||||
*.pyc
|
*.pyc
|
||||||
|
.cache
|
||||||
|
|
||||||
|
|
|
@ -14,40 +14,62 @@ Available variables are listed below, along with default values (see `defaults/m
|
||||||
|
|
||||||
# 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_package: "docker-{{ docker_edition }}"
|
docker_packages:
|
||||||
docker_package_state: present
|
- "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_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).
|
||||||
|
|
||||||
|
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 these to `stopped` and set the enabled variable to `no`.
|
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`.
|
||||||
|
|
||||||
|
docker_install_compose_plugin: false
|
||||||
|
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.
|
||||||
|
|
||||||
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_path: /usr/local/bin/docker-compose
|
docker_compose_path: /usr/local/bin/docker-compose
|
||||||
|
|
||||||
Docker Compose installation options.
|
Docker Compose installation options.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
docker_repo_url: https://download.docker.com/linux
|
||||||
|
|
||||||
|
The main Docker repo URL, common between Debian and RHEL systems.
|
||||||
|
|
||||||
docker_apt_release_channel: stable
|
docker_apt_release_channel: stable
|
||||||
docker_apt_arch: amd64
|
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else '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_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: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
|
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
|
||||||
|
|
||||||
(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.
|
Usually in combination with changing `docker_apt_repository` as well.
|
||||||
|
|
||||||
docker_yum_repo_url: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo
|
docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"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: https://download.docker.com/linux/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`.
|
||||||
|
|
||||||
|
@ -60,6 +82,13 @@ Usually in combination with changing `docker_yum_repository` as well.
|
||||||
|
|
||||||
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).
|
||||||
|
|
||||||
|
docker_daemon_options:
|
||||||
|
storage-driver: "devicemapper"
|
||||||
|
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)
|
## 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:
|
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 +121,12 @@ None.
|
||||||
|
|
||||||
MIT / BSD
|
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
|
## Author Information
|
||||||
|
|
||||||
This role was created in 2017 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).
|
This role was created in 2017 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).
|
||||||
|
|
|
@ -1,31 +1,52 @@
|
||||||
---
|
---
|
||||||
# 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_package: "docker-{{ docker_edition }}"
|
docker_packages:
|
||||||
docker_package_state: present
|
- "docker-{{ docker_edition }}"
|
||||||
|
- "docker-{{ docker_edition }}-cli"
|
||||||
|
- "docker-{{ docker_edition }}-rootless-extras"
|
||||||
|
- "containerd.io"
|
||||||
|
docker_packages_state: present
|
||||||
|
|
||||||
# Service options.
|
# Service options.
|
||||||
|
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
|
||||||
|
|
||||||
|
# Docker Compose Plugin options.
|
||||||
|
docker_install_compose_plugin: false
|
||||||
|
docker_compose_package: docker-compose-plugin
|
||||||
|
docker_compose_package_state: present
|
||||||
|
|
||||||
# Docker Compose options.
|
# Docker Compose options.
|
||||||
docker_install_compose: true
|
docker_install_compose: true
|
||||||
docker_compose_version: "1.26.0"
|
docker_compose_version: "v2.11.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_path: /usr/local/bin/docker-compose
|
||||||
|
|
||||||
|
# Enable repo setup
|
||||||
|
docker_add_repo: true
|
||||||
|
|
||||||
|
# Docker repo URL.
|
||||||
|
docker_repo_url: https://download.docker.com/linux
|
||||||
|
|
||||||
# Used only for Debian/Ubuntu. Switch 'stable' to 'nightly' if needed.
|
# Used only for Debian/Ubuntu. Switch 'stable' to 'nightly' if needed.
|
||||||
docker_apt_release_channel: stable
|
docker_apt_release_channel: stable
|
||||||
docker_apt_arch: amd64
|
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else '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_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: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
|
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
|
||||||
|
|
||||||
# Used only for RedHat/CentOS/Fedora.
|
# 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_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: https://download.docker.com/linux/centos/gpg
|
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"
|
||||||
|
|
||||||
# A list of users who will be added to the docker group.
|
# A list of users who will be added to the docker group.
|
||||||
docker_users: []
|
docker_users: []
|
||||||
|
|
||||||
|
# Docker daemon options as a dict
|
||||||
|
docker_daemon_options: {}
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
---
|
---
|
||||||
- name: restart docker
|
- 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
|
||||||
|
|
|
@ -18,13 +18,19 @@ galaxy_info:
|
||||||
- all
|
- all
|
||||||
- name: Debian
|
- name: Debian
|
||||||
versions:
|
versions:
|
||||||
- stretch
|
|
||||||
- buster
|
- buster
|
||||||
|
- bullseye
|
||||||
- name: Ubuntu
|
- name: Ubuntu
|
||||||
versions:
|
versions:
|
||||||
- xenial
|
|
||||||
- bionic
|
- bionic
|
||||||
- focal
|
- focal
|
||||||
|
- jammy
|
||||||
|
- name: Alpine
|
||||||
|
version:
|
||||||
|
- all
|
||||||
|
- name: ArchLinux
|
||||||
|
versions:
|
||||||
|
- all
|
||||||
galaxy_tags:
|
galaxy_tags:
|
||||||
- web
|
- web
|
||||||
- system
|
- system
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
role_name_check: 1
|
||||||
dependency:
|
dependency:
|
||||||
name: galaxy
|
name: galaxy
|
||||||
driver:
|
driver:
|
||||||
|
@ -8,7 +9,8 @@ platforms:
|
||||||
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
|
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
|
||||||
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||||
volumes:
|
volumes:
|
||||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||||
|
cgroupns_mode: host
|
||||||
privileged: true
|
privileged: true
|
||||||
pre_build_image: true
|
pre_build_image: true
|
||||||
provisioner:
|
provisioner:
|
||||||
|
|
|
@ -1,20 +1,31 @@
|
||||||
---
|
---
|
||||||
- name: Check current docker-compose version.
|
- name: Check current docker-compose version.
|
||||||
command: docker-compose --version
|
command: "{{ docker_compose_path }} --version"
|
||||||
register: docker_compose_current_version
|
register: docker_compose_vsn
|
||||||
|
check_mode: false
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_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.
|
- name: Delete existing docker-compose version if it's different.
|
||||||
file:
|
file:
|
||||||
path: "{{ docker_compose_path }}"
|
path: "{{ docker_compose_path }}"
|
||||||
state: absent
|
state: absent
|
||||||
when: >
|
when: >
|
||||||
docker_compose_current_version.stdout is defined
|
docker_compose_current_version is defined
|
||||||
and docker_compose_version not in docker_compose_current_version.stdout
|
and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version
|
||||||
|
|
||||||
- name: Install Docker Compose (if configured).
|
- name: Install Docker Compose (if configured).
|
||||||
get_url:
|
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 }}"
|
dest: "{{ docker_compose_path }}"
|
||||||
mode: 0755
|
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', '')), '<'))
|
||||||
|
|
|
@ -5,3 +5,6 @@
|
||||||
groups: docker
|
groups: docker
|
||||||
append: true
|
append: true
|
||||||
with_items: "{{ docker_users }}"
|
with_items: "{{ docker_users }}"
|
||||||
|
|
||||||
|
- name: Reset ssh connection to apply user changes.
|
||||||
|
meta: reset_connection
|
||||||
|
|
|
@ -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
|
- include_tasks: setup-RedHat.yml
|
||||||
when: ansible_os_family == 'RedHat'
|
when: ansible_os_family == 'RedHat'
|
||||||
|
|
||||||
- include_tasks: setup-Debian.yml
|
- include_tasks: setup-Debian.yml
|
||||||
when: ansible_os_family == 'Debian'
|
when: ansible_os_family == 'Debian'
|
||||||
|
|
||||||
- name: Install Docker.
|
- name: Install Docker packages.
|
||||||
package:
|
package:
|
||||||
name: "{{ docker_package }}"
|
name: "{{ docker_packages }}"
|
||||||
state: "{{ docker_package_state }}"
|
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
|
notify: restart docker
|
||||||
|
|
||||||
- name: Ensure Docker is started and enabled at boot.
|
- name: Ensure Docker is started and enabled at boot.
|
||||||
|
@ -16,6 +70,8 @@
|
||||||
name: docker
|
name: docker
|
||||||
state: "{{ docker_service_state }}"
|
state: "{{ docker_service_state }}"
|
||||||
enabled: "{{ docker_service_enabled }}"
|
enabled: "{{ docker_service_enabled }}"
|
||||||
|
ignore_errors: "{{ ansible_check_mode }}"
|
||||||
|
when: docker_service_manage | bool
|
||||||
|
|
||||||
- name: Ensure handlers are notified now to avoid firewall conflicts.
|
- name: Ensure handlers are notified now to avoid firewall conflicts.
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
|
@ -23,5 +79,20 @@
|
||||||
- include_tasks: docker-compose.yml
|
- include_tasks: docker-compose.yml
|
||||||
when: docker_install_compose | bool
|
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
|
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
|
||||||
|
|
|
@ -11,30 +11,43 @@
|
||||||
name:
|
name:
|
||||||
- apt-transport-https
|
- apt-transport-https
|
||||||
- ca-certificates
|
- ca-certificates
|
||||||
- gnupg2
|
|
||||||
state: present
|
state: present
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
|
- name: Ensure additional dependencies are installed (on Ubuntu < 20.04 and any other systems).
|
||||||
|
apt:
|
||||||
|
name: gnupg2
|
||||||
|
state: present
|
||||||
|
when: ansible_distribution != 'Ubuntu' or ansible_distribution_version is version('20.04', '<')
|
||||||
|
|
||||||
|
- 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.
|
||||||
apt_key:
|
ansible.builtin.get_url:
|
||||||
url: "{{ docker_apt_gpg_key }}"
|
url: "{{ docker_apt_gpg_key }}"
|
||||||
id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
|
dest: /etc/apt/trusted.gpg.d/docker.asc
|
||||||
state: present
|
mode: '0644'
|
||||||
|
force: true
|
||||||
register: add_repository_key
|
register: add_repository_key
|
||||||
ignore_errors: "{{ docker_apt_ignore_key_error }}"
|
ignore_errors: "{{ docker_apt_ignore_key_error }}"
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
- name: Ensure curl is present (on older systems without SNI).
|
- name: Ensure curl is present (on older systems without SNI).
|
||||||
package: name=curl state=present
|
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).
|
- name: Add Docker apt key (alternative for older systems without SNI).
|
||||||
shell: >
|
shell: >
|
||||||
curl -sSL {{ docker_apt_gpg_key }} | sudo apt-key add -
|
curl -sSL {{ docker_apt_gpg_key }} | apt-key add -
|
||||||
args:
|
when: add_repository_key is failed and docker_add_repo | bool
|
||||||
warn: false
|
|
||||||
when: add_repository_key is failed
|
|
||||||
|
|
||||||
- name: Add Docker repository.
|
- name: Add Docker repository.
|
||||||
apt_repository:
|
apt_repository:
|
||||||
repo: "{{ docker_apt_repository }}"
|
repo: "{{ docker_apt_repository }}"
|
||||||
state: present
|
state: present
|
||||||
update_cache: true
|
update_cache: true
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
rpm_key:
|
rpm_key:
|
||||||
key: "{{ docker_yum_gpg_key }}"
|
key: "{{ docker_yum_gpg_key }}"
|
||||||
state: present
|
state: present
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
- name: Add Docker repository.
|
- name: Add Docker repository.
|
||||||
get_url:
|
get_url:
|
||||||
|
@ -19,6 +20,7 @@
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
- name: Configure Docker Nightly repo.
|
- name: Configure Docker Nightly repo.
|
||||||
ini_file:
|
ini_file:
|
||||||
|
@ -27,6 +29,8 @@
|
||||||
option: enabled
|
option: enabled
|
||||||
value: '{{ docker_yum_repo_enable_nightly }}'
|
value: '{{ docker_yum_repo_enable_nightly }}'
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
no_extra_spaces: true
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
- name: Configure Docker Test repo.
|
- name: Configure Docker Test repo.
|
||||||
ini_file:
|
ini_file:
|
||||||
|
@ -35,6 +39,8 @@
|
||||||
option: enabled
|
option: enabled
|
||||||
value: '{{ docker_yum_repo_enable_test }}'
|
value: '{{ docker_yum_repo_enable_test }}'
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
no_extra_spaces: true
|
||||||
|
when: docker_add_repo | bool
|
||||||
|
|
||||||
- name: Configure containerd on RHEL 8.
|
- name: Configure containerd on RHEL 8.
|
||||||
block:
|
block:
|
||||||
|
|
2
roles/geerlingguy.docker/vars/Alpine.yml
Normal file
2
roles/geerlingguy.docker/vars/Alpine.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
docker_packages: "docker"
|
2
roles/geerlingguy.docker/vars/Archlinux.yml
Normal file
2
roles/geerlingguy.docker/vars/Archlinux.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
docker_packages: "docker"
|
2
roles/geerlingguy.docker/vars/main.yml
Normal file
2
roles/geerlingguy.docker/vars/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# Empty file
|
Loading…
Reference in a new issue