docker.ansible
Alpine-based Docker container for running Ansible with Mitogen optimization, Kubernetes tools, and multi-platform support.
Overview
docker.ansible is a production-ready Docker container that provides a complete Ansible execution environment with performance optimizations and additional tooling for cloud-native workflows.
Repository: https://github.com/arillso/docker.ansible
Docker Registries:
Docker Hub:
arillso/ansibleGitHub Container Registry:
ghcr.io/arillso/ansible
Features
Performance Optimization
Mitogen enabled by default - 2-7x faster execution compared to standard Ansible
Optimized Alpine Linux base for minimal image size
Multi-platform support (amd64, arm64)
Kubernetes Integration
Pre-installed Kubernetes tools:
kubectl- Kubernetes command-line toolhelm- Kubernetes package managerkustomize- Kubernetes native configuration management
Security
Non-root user
ansible(UID/GID 1000)Minimal attack surface with Alpine Linux
Regular security scanning with Trivy
Quick Start
Basic Usage
Check Ansible version:
docker run --rm arillso/ansible ansible-playbook --version
Run a playbook:
docker run --rm -v $(pwd):/workspace -w /workspace \
arillso/ansible ansible-playbook playbook.yml
Interactive shell:
docker run --rm -it -v $(pwd):/workspace -w /workspace \
arillso/ansible bash
With Inventory
docker run --rm \
-v $(pwd):/workspace \
-w /workspace \
arillso/ansible ansible-playbook \
-i inventory.yml \
playbook.yml
Using Mitogen
Mitogen is enabled by default through the ansible.cfg configuration:
[defaults]
strategy_plugins = /usr/lib/python3.11/site-packages/ansible_mitogen/plugins/strategy
strategy = mitogen_linear
Docker Compose Example
version: '3.8'
services:
ansible:
image: arillso/ansible:latest
volumes:
- ./:/workspace
working_dir: /workspace
command: ansible-playbook -i inventory.yml site.yml
GitHub Actions Example
name: Deploy with Ansible
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
container:
image: arillso/ansible:latest
steps:
- uses: actions/checkout@v4
- name: Run Ansible playbook
run: ansible-playbook -i inventory.yml playbook.yml
Building from Source
Requirements
Docker with BuildKit support
Make (optional, for convenience)
Build Commands
Using Make:
make ansible-build # Build container
make test-quick # Quick validation
make comprehensive-test # Full test suite
make release-check # Pre-release validation
Using Docker directly:
docker build -t arillso/ansible:local .
Multi-platform Build
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t arillso/ansible:latest \
--push .
Version Management
The container uses version ranges for Alpine packages to balance stability and security:
# Example: Python with version constraint
RUN apk add --no-cache \
python3>=3.11.0 \
python3<4.0.0
This approach:
Allows security patches within the same minor version
Prevents breaking changes from major version updates
Maintains reproducible builds
Testing
The project includes comprehensive testing:
Unit Tests
Basic functionality validation:
make test-quick
Integration Tests
Real-world playbook execution:
make comprehensive-test
Security Scanning
Trivy vulnerability scanning is performed in CI/CD pipeline:
trivy image arillso/ansible:latest
Performance Tests
Mitogen performance validation comparing execution times with and without optimization.
CI/CD Pipeline
Automated workflows in .github/workflows/:
Build and Test - Multi-platform builds with comprehensive testing
Security Scanning - Trivy vulnerability scans
Release - Automated publishing to Docker Hub and GitHub Container Registry
Environment Variables
Common Ansible environment variables:
docker run --rm \
-e ANSIBLE_HOST_KEY_CHECKING=False \
-e ANSIBLE_STDOUT_CALLBACK=yaml \
-v $(pwd):/workspace \
-w /workspace \
arillso/ansible ansible-playbook playbook.yml
Troubleshooting
Permission Issues
The container runs as user ansible (UID 1000). If you encounter permission issues:
# Run as current user
docker run --rm --user $(id -u):$(id -g) \
-v $(pwd):/workspace -w /workspace \
arillso/ansible ansible-playbook playbook.yml
Mitogen Issues
To disable Mitogen and use standard Ansible:
docker run --rm \
-e ANSIBLE_STRATEGY=linear \
-v $(pwd):/workspace -w /workspace \
arillso/ansible ansible-playbook playbook.yml
Python Dependencies
Install additional Python packages:
FROM arillso/ansible:latest
RUN pip install --no-cache-dir netaddr jmespath
License
MIT License - Copyright (c) 2024-2026, arillso
See also
action.playbook - GitHub Action using this container
go.ansible - Go library for Ansible execution
Collection Index - Ansible Collections