Files
env-ansible/tasks/workstation/linux/software/docker.yml
T

117 lines
3.6 KiB
YAML

# 2026-10-27 Hyperling
# Pulled out of llm.yml since the number of tasks is growing.
- name: Workstation | Linux | Software | Docker | Install
ansible.builtin.package:
name:
- docker
- docker-compose
- docker-buildx
state: present
- name: Workstation | Linux | Software | Docker | Install [runit]
ansible.builtin.package:
name:
- docker-runit
state: present
when: ansible_pkg_mgr == "pacman"
and ansible_service_mgr == "runit"
- name: Workstation | Linux | Software | Docker | Group
ansible.builtin.user:
name: "{{ item }}"
groups: docker
append: true
loop:
- root
- "{{ user }}"
- name: Workstation | Linux | Software | Docker | Config | Dir
ansible.builtin.file:
name: /etc/docker
state: directory
owner: root
mode: '0755'
- name: Workstation | Linux | Software | Socker | Services | Enable
ansible.builtin.service:
name: "{{ item.name }}"
state: "{{ 'started' if item.status else 'stopped' }}"
enabled: "{{ item.status }}"
loop:
- { 'name': 'docker' , 'status': true }
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Facts
ansible.builtin.set_fact:
docker_network_sync: "docker-network-sync"
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Block
block:
- name: Workstation | Linux | Software | Docker | Network Sync | runit | /etc/sv
ansible.builtin.file:
name: "/etc/sv/{{ docker_network_sync }}/log"
state: directory
owner: root
mode: "0755"
- name: Workstation | Linux | Software | Docker | Network Sync | runit | /var/log
ansible.builtin.file:
name: "/var/log/{{ docker_network_sync }}"
state: directory
owner: "{{ user }}"
mode: "0755"
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Run
ansible.builtin.copy:
dest: /etc/sv/{{ docker_network_sync }}/run
content: |
#!/bin/sh
# Ensure all containers using host network keep a correct resolv.conf.
exec 2>&1
set -e
while true; do
for c in $(docker container ls --filter network=host -q); do
echo "RUN: Container ID $c"
docker exec -i -u root $c sh -c 'tee /etc/resolv.conf' < /etc/resolv.conf
done
echo "RUN: Done, sleeping."
sleep 20
done
backup: false
owner: root
mode: '0644'
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Finish
ansible.builtin.copy:
dest: /etc/sv/{{ docker_network_sync }}/finish
content: |
{{ runit_finish_sleep }}
mode: "0755"
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Log
ansible.builtin.copy:
dest: /etc/sv/{{ docker_network_sync }}/log/run
content: |
#!/bin/sh -e
exec svlogd -tt /var/log/{{ docker_network_sync }}
mode: "0755"
- name: Workstation | Linux | Software | Docker | Network Sync | runit | Log Config
ansible.builtin.copy:
dest: /var/log/{{ docker_network_sync }}/config
content: |
{{ runit_log_config_1mb }}
mode: "0755"
- name: Workstation | Linux | Software | Socker | Services | Enable
ansible.builtin.service:
name: "{{ item.name }}"
state: "{{ 'started' if item.status else 'stopped' }}"
enabled: "{{ item.status }}"
loop:
- { 'name': '{{ docker_network_sync }}', 'status': true }
when: ansible_service_mgr == "runit"