117 lines
3.6 KiB
YAML
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: '0755'
|
|
|
|
- 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"
|