Copies ansible-functs.sh into /root/.bashrc.d/ providing aliases
ap (ansible-playbook), ag (ansible-galaxy), av (ansible-vault).
Launch Flow (execute.sh)
Resolve SSH_KEY_DIR (default $HOME/.ssh) and reject a missing or
unreadable directory before invoking Docker. Relative paths are resolved
against the current working directory.
Pick next free container name ansible-<n>.
Ensure IPv6-enabled bridge network ansible-dualstack (fails fast with
a clear message if the network exists without IPv6).
Run the container detached: repo mounted at /ansible (workdir), local
SSH directory bind-mounted read-only at /root/.ssh, env
ANSIBLE_HOST_KEY_CHECKING=False, ANSIBLE_CONFIG=./ansible.cfg.
Abort if docker run fails.
Print name/IPv4/IPv6/OS, then docker attach for interactive use.
The launcher preserves the local SSH configuration and permissions. Standard
key names are discovered by OpenSSH; other filenames require IdentityFile
or Ansible's --private-key /root/.ssh/<filename>. Host-specific absolute
paths in SSH configuration must also exist inside the container. Encrypted
keys can be loaded into an agent started inside the container with
eval "$(ssh-agent -s)" followed by ssh-add /root/.ssh/<filename>.
Controller-Side Artifacts
.zabbix-psk/ and logs/ are written by delegation from the container
into the mounted repo (git-ignored).
Operational Notes
Changing collections requires updating docker/requirements.yml and an
image rebuild (AGENTS.md).
Default image tag: ansible:deb13.
Build from the repository root with docker build -t ansible:deb13 docker/.
SSH keys are supplied at runtime, not embedded in the image.