# wulf-ansible Ansible playbooks used by Semaphore for Wulf infrastructure automation. ## Collection requirements Install required Ansible collections before running playbooks locally or in a new Semaphore worker environment: ```bash ansible-galaxy collection install -r collections/requirements.yml ``` Currently required collections: - `community.docker` - `community.general` - `ansible.posix` ## Docker baseline Semaphore template: **Docker Baseline** Playbook: ```bash ansible-playbook playbooks/docker.yml ``` The Docker role: - supports Debian/Ubuntu apt-based hosts, - removes conflicting distro/container packages, - configures Docker's official apt repository, - installs Docker Engine, Buildx, and Compose V2 plugin, - configures Docker daemon log rotation and live-restore, - enables Docker, - adds the target Ansible user to the `docker` group, - creates `/opt/stacks`, - enables IPv4 forwarding, - optionally disables IPv6, - creates shared Docker networks such as `pangolin`, - verifies `docker --version` and `docker compose version`. ### Docker role variables ```yaml docker_package_state: present # set to latest when intentionally upgrading Docker packages docker_stacks_dir: /opt/stacks docker_networks: - pangolin docker_disable_ipv6: false docker_run_hello_world: false # optional runtime pull/run verification ``` To run a full runtime verification during provisioning: ```yaml docker_run_hello_world: true ```