Skip to content

ednz-cloud/install_docker

Repository files navigation

📃 Role overview

install_docker

Description: Install and configure docker for debian-based distros.

Field Value
Readme update 14/06/2025

Defaults

These are static variables with lower priority

File: defaults/main.yml

Var Type Value Required Title
install_docker_version str latest false Docker version to install
install_docker_start_service bool True false Start Docker service
install_docker_data_dir str /var/lib/docker false Docker data directory
install_docker_users list [] false Additional Docker group users
install_docker_daemon_options dict {} false Docker daemon options
install_docker_python_packages bool False false Install Docker Python packages
install_docker_compose bool False false Install Docker Compose
install_docker_compose_version str latest false Docker Compose version
install_docker_install_completion bool True false Install shell completions
install_docker_completion_shell NoneType None false Shell type for completion
🖇️ Full descriptions for vars in defaults/main.yml
install_docker_version: Specifies the version of Docker to install.
Use 'latest' to always get the most recent release from Docker's GitHub repository.
You can also specify a version tag (e.g., '24.0.7').

install_docker_start_service: Determines whether the Docker service should be started after installation.
Set to true to start the service automatically.

install_docker_data_dir: Sets the root directory used by Docker to store container data, images, and volumes.
Changing this may require updating the daemon configuration and moving existing data.

install_docker_users: List of system users to be added to the 'docker' group.
This allows the specified users to run Docker commands without sudo.

install_docker_daemon_options: Dictionary of custom options to include in the Docker daemon configuration (daemon.json).
Common options include log-driver, storage-driver, and insecure registries.

install_docker_python_packages: Whether to install Python packages required for Ansible Docker modules (e.g., docker-py).
Set to true if you plan to manage containers via Ansible tasks.

install_docker_compose: Determines whether Docker Compose should be installed.
If true, the version specified in install_docker_compose_version will be downloaded from GitHub.

install_docker_compose_version: Specifies the version of Docker Compose to install from GitHub releases.
Use 'latest' to install the most recent stable version, or specify a version tag (e.g., 'v2.27.0').

install_docker_install_completion: Controls whether Docker CLI autocompletion scripts should be installed.
Enhances shell usability for Docker commands.

install_docker_completion_shell: Defines the shell type (e.g., bash, zsh) for which Docker completion scripts should be installed.
Leave empty to disable or auto-detect based on user shell environment.


Vars

These are variables with higher priority

File: vars/main.yml

Var Type Value Required Title
install_docker_binary_path str /usr/local/bin false Docker binary installation path
install_docker_compose_path str {{ install_docker_binary_path }}/docker-compose false Docker Compose binary path
install_docker_user str root false Owner user for Docker files
install_docker_group str docker false Docker system group
install_docker_daemon_dir str /etc/docker false Docker daemon config directory
install_docker_service_list list ['containerd', 'docker'] false Docker-related system services
install_docker_socket_list list ['docker'] false Docker-related Unix sockets
install_docker_architecture_map dict {'armv7l': 'armhf', 'armv6l': 'armhf'} false Docker architecture mapping
install_docker_python_packages_list list [{'name': 'python3-docker', 'version': 'latest', 'state': 'present'}] false Python packages for Docker support
install_docker_sysctl_entries dict {'net.bridge.bridge-nf-call-iptables': 1, 'net.bridge.bridge-nf-call-ip6tables': 1} false Docker-related sysctl entries
install_docker_modprobe_modules list ['br_netfilter'] false Kernel modules for Docker
install_docker_github_api str https://api.github.com/repos false GitHub API base URL
install_docker_github_url str https://github.com false GitHub base URL
install_docker_github_project str moby/moby false GitHub project for Docker
install_docker_repository_url str https://download.docker.com/linux/static/stable/{{ install_docker_architecture_map[ansible_architecture]¦default(ansible_architecture) }} false Docker release repository URL
install_docker_compose_github_project str docker/compose false GitHub project for Docker Compose
🖇️ Full Descriptions for vars in vars/main.yml
install_docker_binary_path: Filesystem path where Docker binaries will be installed
install_docker_compose_path: Path where the Docker Compose binary will be installed
install_docker_user: System user that owns Docker-related files and directories
install_docker_group: Group used for granting access to the Docker socket
install_docker_daemon_dir: Filesystem path to Docker's daemon configuration files
install_docker_service_list: List of system services managed by the role during install
install_docker_socket_list: List of Docker socket names to check/manage
install_docker_architecture_map: Maps Ansible system architecture names to GitHub Docker release architecture names
install_docker_python_packages_list: List of Python packages required for Docker Ansible modules
install_docker_sysctl_entries: Kernel sysctl parameters required for Docker networking
install_docker_modprobe_modules: List of kernel modules to load for Docker functionality
install_docker_github_api: Base URL for GitHub API used to fetch Docker release data
install_docker_github_url: Base URL for GitHub used to construct download links
install_docker_github_project: GitHub repository for Docker Engine releases
install_docker_repository_url: URL to fetch Docker static binaries based on system architecture
install_docker_compose_github_project: GitHub repository for Docker Compose releases

Tasks

File: tasks/configure.yml

Name Module Has Conditions
Docker ¦ Add specified users to group {{ install_docker_group }} ansible.builtin.user False
Docker ¦ Copy daemon.json template ansible.builtin.template False
Docker ¦ Set reload-check & restart-check variable ansible.builtin.set_fact True
Docker ¦ Ensure modprobe modules are loaded community.general.modprobe False
Docker ¦ Ensure sysctl options are proprerly set ansible.posix.sysctl False
Docker ¦ Set restart-check variable ansible.builtin.set_fact True
Docker ¦ Get docker completion ansible.builtin.command False
Docker ¦ Install completion for bash block True
Docker ¦ Ensure /etc/bash_completion.d directory exists ansible.builtin.file False
Docker ¦ Copy bash completion ansible.builtin.copy False

File: tasks/install.yml

Name Module Has Conditions
Docker ¦ Get latest release of docker block True
Docker ¦ Get latest docker release from github api ansible.builtin.uri False
Docker ¦ Set wanted docker version to latest tag ansible.builtin.set_fact False
Docker ¦ Set wanted docker version to {{ install_docker_version }} ansible.builtin.set_fact True
Docker ¦ Get current docker version block False
Docker ¦ Stat docker version file ansible.builtin.stat False
Docker ¦ Get current docker version ansible.builtin.slurp True
Docker ¦ Download and install docker binaries block True
Docker ¦ Set docker package name to download ansible.builtin.set_fact False
Docker ¦ Download docker binary archive ansible.builtin.get_url False
Docker ¦ Create temporary directory for archive decompression ansible.builtin.file False
Docker ¦ Unpack docker archive ansible.builtin.unarchive False
Docker ¦ Get list of binaries ansible.builtin.find False
Docker ¦ Copy docker binaries to {{ install_docker_binary_path }} ansible.builtin.copy False
Docker ¦ Update docker version file ansible.builtin.copy False
Docker ¦ Set restart-check variable ansible.builtin.set_fact False
Docker ¦ Cleanup temporary directory ansible.builtin.file False
Docker ¦ Copy systemd service files for docker ansible.builtin.template False
Docker ¦ Copy systemd socket files for docker ansible.builtin.template False
Docker ¦ Set reload-check & restart-check variable ansible.builtin.set_fact True

File: tasks/install_compose.yml

Name Module Has Conditions
Docker ¦ Get release for compose:{{ install_docker_compose_version }} ansible.builtin.uri False
Docker ¦ Check current compose version ansible.builtin.command False
Docker ¦ Set facts for wanted compose release ansible.builtin.set_fact True
Docker ¦ Set facts for current compose release ansible.builtin.set_fact True
Docker ¦ Remove old compose binary if different ansible.builtin.file True
Docker ¦ Download and install compose:{{ install_docker_compose_version }} ansible.builtin.get_url True

File: tasks/install_python_docker.yml

Name Module Has Conditions
Install docker packages ansible.builtin.include_role False

File: tasks/main.yml

Name Module Has Conditions
Docker ¦ Set reload-check & restart-check variable ansible.builtin.set_fact False
Import prerequisites.yml ansible.builtin.include_tasks False
Import install.yml ansible.builtin.include_tasks False
Import install_compose.yml ansible.builtin.include_tasks True
Import install_python_docker.yml ansible.builtin.include_tasks True
Import configure.yml ansible.builtin.include_tasks False
Docker ¦ Enable sockets: {{ install_docker_socket_list }} ansible.builtin.service False
Docker ¦ Enable services: {{ install_docker_service_list }} ansible.builtin.service False
Docker ¦ Reload systemd daemon ansible.builtin.systemd True
Docker ¦ Reload services: docker ansible.builtin.service True
Docker ¦ Start services: {{ install_docker_service_list }} ansible.builtin.service True

File: tasks/prerequisites.yml

Name Module Has Conditions
Create group {{ install_docker_group }} ansible.builtin.group False
Create directory {{ install_docker_daemon_dir }} ansible.builtin.file False
Create directory {{ install_docker_data_dir }} ansible.builtin.file False

Author Information

Bertrand Lanson

License

license (BSD, MIT)

Minimum Ansible Version

2.10

Platforms

  • Ubuntu: ['focal', 'jammy', 'noble']
  • Debian: ['bullseye', 'bookworm']

Dependencies

No dependencies specified.

About

Ansible role to install the docker container runtime on debian-based systems. Mirror from https://git.ednz.fr/ansible-roles/install_docker.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published