Ansible inside Docker for consistent running of ansible inside your local machine or CI/CD system. You can view CHANGELOG to understand what changes have happened to this recently.
These are the latest Ansible Core versions running within the containers:
- Ansible 2.13: 2.13.13
- Ansible 2.14: 2.14.14
- Ansible 2.15: 2.15.9
- Ansible 2.16: 2.16.4
- Ansible 2.17: 2.17.4
- Older versions are provided within the unmaintained section, including 2.9, 2.10, 2.11 and 2.12.
- More availablity on Ansible versions on Ansible Release Documentation and Ansible-core to Python compatibility.
There are a number of immutable images that are also being collected. To find a specific version of Ansible, look within the Docker Hub Tags. Each of the containers follow a similar pattern: Ansible-version-Base OS version.
This includes:
ansible-core
(https://pypi.org/project/ansible-core/)ansible
(https://pypi.org/project/ansible/)ansible-lint
(https://pypi.org/project/ansible-lint/)
Base Image (↓) \ Ansible Version (→) | Dockerfile | 2.13 | 2.14 | 2.15 | 2.16 | 2.17 |
---|---|---|---|---|---|---|
Latest | Dockerfile | latest |
||||
Alpine | Dockerfile | alpine |
||||
Ubuntu | Dockerfile | ubuntu |
||||
Alpine 3.16 | Dockerfile | 2.13-alpine-3.16 |
2.14-alpine-3.16 |
2.15-alpine-3.16 |
2.16-alpine-3.16 |
2.17-alpine-3.16 |
Alpine 3.17 | Dockerfile | 2.13-alpine-3.17 |
2.14-alpine-3.17 |
2.15-alpine-3.17 |
2.16-alpine-3.17 |
2.17-alpine-3.17 |
Alpine 3.18 | Dockerfile | 2.13-alpine-3.18 |
2.14-alpine-3.18 |
2.15-alpine-3.18 |
2.16-alpine-3.18 |
2.17-alpine-3.18 |
Alpine 3.19 | Dockerfile | 2.13-alpine-3.19 |
2.14-alpine-3.19 |
2.15-alpine-3.19 |
2.16-alpine-3.19 |
2.17-alpine-3.19 |
Alpine 3.20 (* in development) | Dockerfile | 2.15-alpine-3.20 * |
2.16-alpine-3.20 * |
2.17-alpine-3.20 * |
||
Bullseye (Debian 11) | Dockerfile | 2.14-bullseye |
2.15-bullseye |
|||
Bullseye Slim (Debian 11) | Dockerfile | 2.14-bullseye-slim |
2.15-bullseye-slim |
|||
Bookworm (Debian 12) | Dockerfile | 2.14-bookworm |
2.15-bookworm |
2.16-bookworm |
2.17-bookworm |
|
Bookworm Slim (Debian 12) | Dockerfile | 2.14-bookworm-slim |
2.15-bookworm-slim |
2.16-bookworm-slim |
2.17-bookworm-slim |
|
Rocky Linux 9 | Dockerfile | 2.14-rockylinux-9 |
2.15-rockylinux-9 |
|||
Ubuntu 22.04 | Dockerfile | 2.14-ubuntu-22.04 |
2.15-ubuntu-22.04 |
2.16-ubuntu-22.04 |
2.17-ubuntu-22.04 |
|
Ubuntu 24.04 | Dockerfile | 2.15-ubuntu-24.04 |
2.16-ubuntu-24.04 |
2.17-ubuntu-24.04 |
There is some support for Arm architecture.
linux/arm64
(Macbook and AWS Graviton) tolatest
andalpine
image tags.linux/arm/v7
andlinux/arm/v6
toarm
image tag (Raspberry Pi). *Experimental!!
- Ansible 2.12 (2.12.10) includes
ansible-core
+ansible
. This also requires Python >=3.8 - Ansible 2.11 (2.11.12) includes
ansible-core
+ansible
. This also requires Python 3. - Ansible 2.10 (2.10.17) includes
ansible-base
. - Ansible 2.9 (2.9.27) includes
ansible
. - All versions also include
ansible-lint
.
These are no longer updated or maintained, however, remain for users running older workloads.
Base Image (↓) \ Ansible Version (→) | Dockerfile | 2.13 | 2.14 | 2.15 | 2.16 | 2.17 |
---|---|---|---|---|---|---|
Alpine 3.15 | Dockerfile | 2.13-alpine-3.15 |
2.14-alpine-3.15 |
2.15-alpine-3.15 |
Base Image (↓) \ Ansible Version (→) | 2.12 | 2.11 | 2.10 | 2.9 |
---|---|---|---|---|
Alpine 3.14 | 2.12-alpine-3.14 Dockerfile |
2.11-alpine-3.14 Dockerfile |
2.10-alpine-3.14 Dockerfile |
2.9-alpine-3.14 Dockerfile |
Alpine 3.15 | 2.12-alpine-3.15 Dockerfile |
2.11-alpine-3.15 Dockerfile |
2.10-alpine-3.15 Dockerfile |
2.9-alpine-3.15 Dockerfile |
Alpine 3.16 | 2.12-alpine-3.16 Dockerfile |
2.11-alpine-3.16 Dockerfile |
2.10-alpine-3.16 Dockerfile |
2.9-alpine-3.16 Dockerfile |
Alpine 3.17 | 2.12-alpine-3.17 Dockerfile |
2.11-alpine-3.17 Dockerfile |
2.10-alpine-3.17 Dockerfile |
2.9-alpine-3.17 Dockerfile |
Bullseye (Debian 11) | 2.12-bullseye Dockerfile |
2.11-bullseye Dockerfile |
2.10-bullseye Dockerfile |
2.9-bullseye Dockerfile |
Bullseye Slim (Debian 11) | 2.12-bullseye-slim Dockerfile |
2.11-bullseye-slim Dockerfile |
2.10-bullseye-slim Dockerfile |
2.9-bullseye-slim Dockerfile |
Buster (Debian 10) | 2.12-buster Dockerfile |
2.11-buster Dockerfile |
2.10-buster Dockerfile |
2.9-buster Dockerfile |
Buster Slim (Debian 10) | 2.12-buster-slim Dockerfile |
2.11-buster-slim Dockerfile |
2.10-buster-slim Dockerfile |
2.9-buster-slim Dockerfile |
Centos 7 | 2.12-centos-7 Dockerfile |
2.11-centos-7 Dockerfile |
2.10-centos-7 Dockerfile |
2.9-centos-7 Dockerfile |
Rocky Linux 8 | 2.12-rockylinux-8 Dockerfile |
2.11-rockylinux-8 Dockerfile |
2.10-rockylinux-8 Dockerfile |
2.9-rockylinux-8 Dockerfile |
Rocky Linux 9 | 2.12-rockylinux-9 Dockerfile |
2.11-rockylinux-9 Dockerfile |
2.10-rockylinux-9 Dockerfile |
2.9-rockylinux-9 Dockerfile |
Ubuntu 18.04 | 2.12-ubuntu-18.04 Dockerfile |
2.11-ubuntu-18.04 Dockerfile |
2.10-ubuntu-18.04 Dockerfile |
2.9-ubuntu-18.04 Dockerfile |
Ubuntu 20.04 | 2.12-ubuntu-20.04 Dockerfile |
2.11-ubuntu-20.04 Dockerfile |
2.10-ubuntu-20.04 Dockerfile |
2.9-ubuntu-20.04 Dockerfile |
Ubuntu 22.04 | 2.12-ubuntu-22.04 Dockerfile |
2.11-ubuntu-22.04 Dockerfile |
2.10-ubuntu-22.04 Dockerfile |
2.9-ubuntu-22.04 Dockerfile |
All installs include Mitogen mainly due to the performance improvements that Mitogen awards you. You can read more about it inside the Mitogen for Ansible documentation. To leverage *Mitogen- to accelerate your playbook runs, add this to your ansible.cfg
:
Please investigate in your container the location of ansible_mitogen
(it is different per container). You can do this via:
your_container="ansible:latest"
docker run --rm -it "willhallonline/${your_container}" /bin/sh -c "find / -type d | grep 'ansible_mitogen/plugins' | sort | head -n 1"
and then configuring your own ansible.cfg like:
[defaults]
strategy_plugins = /usr/local/lib/python3.{python-version}/site-packages/ansible_mitogen/plugins/
strategy = mitogen_linear
**You will likely need to mount required directories into your container to make it run (or build on top of what is here).
$~ docker run --rm -it willhallonline/ansible:latest /bin/sh
$~ docker run --rm -it -v $(pwd):/ansible -v ~/.ssh/id_rsa:/root/id_rsa willhallonline/ansible:latest /bin/sh
$~ docker run --rm -it -v $(pwd):/ansible -v ~/.ssh/id_rsa:/root/id_rsa willhallonline/ansible:latest ansible-playbook playbook.yml
You can put these inside your dotfiles (~/.bashrc or ~/.zshrc to make handy aliases).
alias docker-ansible-cli='docker run --rm -it -v $(pwd):/ansible -v ~/.ssh/id_rsa:/root/.ssh/id_rsa --workdir=/ansible willhallonline/ansible:latest /bin/sh'
alias docker-ansible-cmd='docker run --rm -it -v $(pwd):/ansible -v ~/.ssh/id_rsa:/root/.ssh/id_rsa --workdir=/ansible willhallonline/ansible:latest '
use with:
$~ docker-ansible-cli ansible-playbook -u playbook.yml
- Written and maintained by Will Hall