feat: initial installation role for docker

This commit is contained in:
2026-05-24 17:13:31 +02:00
commit 8d136caa99
8 changed files with 146 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.retry

27
README.md Normal file
View File

@@ -0,0 +1,27 @@
# ansible-role-docker
Installs Docker CE on Debian/Ubuntu and RHEL/Fedora/CentOS.
## Requirements
- Ansible >= 2.14
## Role Variables
| Variable | Default | Description |
|---|---|---|
| `docker_packages` | see defaults | List of Docker packages to install |
| `docker_service_enabled` | `true` | Enable Docker service at boot |
| `docker_service_state` | `started` | Service state after installation |
## Example Playbook
```yaml
- hosts: servers
roles:
- role: ansible-role-docker
```
## License
MIT

9
defaults/main.yml Normal file
View File

@@ -0,0 +1,9 @@
---
docker_packages:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
docker_service_enabled: true
docker_service_state: started

1
handlers/main.yml Normal file
View File

@@ -0,0 +1 @@
---

17
meta/main.yml Normal file
View File

@@ -0,0 +1,17 @@
---
galaxy_info:
author: mathieu
description: Install Docker CE on Debian and RedHat based distributions
license: MIT
min_ansible_version: "2.14"
platforms:
- name: Debian
versions: [bullseye, bookworm]
- name: Ubuntu
versions: [focal, jammy, noble]
- name: EL
versions: ["8", "9"]
- name: Fedora
versions: [all]
galaxy_tags: [docker, containers, system]
dependencies: []

55
tasks/debian.yml Normal file
View File

@@ -0,0 +1,55 @@
---
- name: Install Docker prerequisites
ansible.builtin.apt:
name:
- ca-certificates
- curl
state: present
update_cache: true
become: true
- name: Create Docker keyring directory
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: '0755'
become: true
- name: Download Docker GPG key
ansible.builtin.shell:
cmd: >
curl -fsSL https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
creates: /etc/apt/keyrings/docker.gpg
become: true
- name: Set Docker GPG key permissions
ansible.builtin.file:
path: /etc/apt/keyrings/docker.gpg
mode: '0644'
become: true
- name: Add Docker apt repository
ansible.builtin.copy:
content: >
deb [arch={{ ansible_architecture | replace('x86_64', 'amd64') | replace('aarch64', 'arm64') }}
signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/{{ ansible_distribution | lower }}
{{ ansible_distribution_release }} stable
dest: /etc/apt/sources.list.d/docker.list
mode: '0644'
become: true
- name: Install Docker packages
ansible.builtin.apt:
name: "{{ docker_packages }}"
state: present
update_cache: true
become: true
- name: Enable and start Docker service
ansible.builtin.systemd:
name: docker
enabled: "{{ docker_service_enabled }}"
state: "{{ docker_service_state }}"
become: true

9
tasks/main.yml Normal file
View File

@@ -0,0 +1,9 @@
---
- name: Assert supported OS family
ansible.builtin.assert:
that:
- ansible_os_family in ['Debian', 'RedHat']
fail_msg: "Unsupported OS family: {{ ansible_os_family }}"
- name: Include OS-specific installation tasks
ansible.builtin.include_tasks: "{{ ansible_os_family | lower }}.yml"

27
tasks/redhat.yml Normal file
View File

@@ -0,0 +1,27 @@
---
- name: Install Docker prerequisites
ansible.builtin.dnf:
name:
- dnf-plugins-core
state: present
become: true
- name: Add Docker yum repository
ansible.builtin.get_url:
url: https://download.docker.com/linux/centos/docker-ce.repo
dest: /etc/yum.repos.d/docker-ce.repo
mode: '0644'
become: true
- name: Install Docker packages
ansible.builtin.dnf:
name: "{{ docker_packages }}"
state: present
become: true
- name: Enable and start Docker service
ansible.builtin.systemd:
name: docker
enabled: "{{ docker_service_enabled }}"
state: "{{ docker_service_state }}"
become: true