59 lines
1.4 KiB
Markdown
59 lines
1.4 KiB
Markdown
# 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
|
|
```
|