stack/ansible/roles/docker/tasks/main.yml
tim 3645d1314c Initial commit: arr-stack homelab + local AI
Docker Compose media stack (gluetun, *arr, Jellyfin), Ternary-Bonsai AI
(Open WebUI, Forgejo, optional OpenHands), and Ansible bootstrap for the
SER5 Ubuntu host.
2026-07-22 06:28:49 -07:00

91 lines
2.2 KiB
YAML

---
- name: Install Docker apt prerequisites
ansible.builtin.apt:
name:
- ca-certificates
- curl
- gnupg
state: present
tags: [docker]
- name: Create keyrings directory
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: "0755"
tags: [docker]
- name: Add Docker official GPG key
ansible.builtin.get_url:
url: https://download.docker.com/linux/ubuntu/gpg
dest: /etc/apt/keyrings/docker.asc
mode: "0644"
force: true
tags: [docker]
- name: Add Docker apt repository (deb822)
ansible.builtin.deb822_repository:
name: docker
types: [deb]
uris: https://download.docker.com/linux/ubuntu
suites: ["{{ ansible_distribution_release }}"]
components: [stable]
architectures: "{{ [ansible_architecture | replace('x86_64', 'amd64') | replace('aarch64', 'arm64')] }}"
signed_by: /etc/apt/keyrings/docker.asc
state: present
enabled: true
tags: [docker]
- name: Install Docker Engine + Compose plugin
ansible.builtin.apt:
name: "{{ docker_packages }}"
state: present
update_cache: true
tags: [docker]
- name: Ensure docker group exists
ansible.builtin.group:
name: docker
state: present
tags: [docker]
- name: Configure Docker daemon.json
ansible.builtin.copy:
dest: /etc/docker/daemon.json
mode: "0644"
content: "{{ docker_daemon_json | to_nice_json }}\n"
notify: Restart docker
tags: [docker]
- name: Enable and start Docker (survives reboots)
ansible.builtin.systemd:
name: docker
state: started
enabled: true
tags: [docker]
- name: Enable containerd (Docker dependency)
ansible.builtin.systemd:
name: containerd
state: started
enabled: true
tags: [docker]
- name: Add stack user to docker / video / render groups
ansible.builtin.user:
name: "{{ stack_owner }}"
groups: "{{ extra_user_groups }}"
append: true
tags: [docker, users]
# Full permission setup also runs in the users role
- name: Verify docker works
ansible.builtin.command: docker version --format '{% raw %}{{.Server.Version}}{% endraw %}'
register: docker_ver
changed_when: false
tags: [docker]
- name: Show docker version
ansible.builtin.debug:
msg: "Docker server {{ docker_ver.stdout }}"
tags: [docker]