This playbook installs Docker Engine and enables the Docker service.
- name: Install Docker on Debian family
hosts: docker_debian
become: true
tasks:
- name: Install prerequisites
ansible.builtin.apt:
update_cache: true
name:
- ca-certificates
- curl
- gnupg
- lsb-release
state: present
- name: Ensure keyring directory exists
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: "0755"
- name: Download Docker GPG key
ansible.builtin.get_url:
url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
dest: /tmp/docker.asc
mode: "0644"
- name: Convert Docker GPG key
ansible.builtin.command: gpg --dearmor -o /etc/apt/keyrings/docker.gpg /tmp/docker.asc
args:
creates: /etc/apt/keyrings/docker.gpg
- name: Add Docker apt repository
ansible.builtin.apt_repository:
repo: >-
deb [arch={{ 'arm64' if ansible_architecture in ['aarch64', 'arm64'] else 'amd64' }}
signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/{{ ansible_distribution | lower }}
{{ ansible_distribution_release }} stable
filename: docker
state: present
- name: Install Docker packages
ansible.builtin.apt:
update_cache: true
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
- name: Enable Docker service
ansible.builtin.systemd:
name: docker
enabled: true
state: started
- name: Install Docker on RHEL family
hosts: docker_rhel
become: true
tasks:
- name: Install dnf plugin
ansible.builtin.dnf:
name: dnf-plugins-core
state: present
- name: Add Docker repository
ansible.builtin.command: dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
args:
creates: /etc/yum.repos.d/docker-ce.repo
- name: Install Docker packages
ansible.builtin.dnf:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
- name: Enable Docker service
ansible.builtin.systemd:
name: docker
enabled: true
state: started
ansible-playbook -i inventory.ini docker-install.yml
---
# Simple Docker Install Task
# Ansible Playbook
# install.task.yml
- name: Install Docker
hosts: all
become: true
vars:
# - __docker: false # disabled docker install
# - __docker_enabled: false # disabled Daemon, not started
# - __docker_compose: false # disable docker-compose install
tasks:
- name: Install Docker on Debian/Ubuntu
apt:
name:
- docker.io
state: present
update_cache: true
when:
- ansible_os_family == "Debian"
- __docker | default (true)
- name: Install Docker on RHEL family
dnf:
name:
- docker
state: present
when:
- ansible_os_family == "RedHat"
- __docker | default (true)
- name: Install docker-compose-plugin on Debian/Ubuntu
apt:
name:
- docker-compose-plugin
state: present
update_cache: true
when:
- ansible_os_family == "Debian"
- __docker_compose | default (true)
- name: Install docker-compose-plugin on RHEL family
dnf:
name:
- docker-compose-plugin
state: present
when:
- ansible_os_family == "RedHat"
- __docker_compose | default (true)
- name: Enable and start Docker
service:
name: docker
state: started
enabled: true
when: __docker_enabled | default (true)
ansible-playbook -i inventory.ini install.taks.yml