Files
lilleback-infra/roles/bigboi/docker/tasks/main.yaml
2025-07-10 21:19:19 +02:00

229 lines
5.0 KiB
YAML

# Frigate directories
- name: Ensure frigate root dir
file:
path: "{{docker.frigate.root_volume}}"
state: directory
owner: docker
group: root
- name: Ensure frigate config dir
file:
path: "{{docker.frigate.config_volume}}"
state: directory
owner: docker
group: root
- name: Ensure frigate media dir
file:
path: "{{docker.frigate.media_volume}}"
state: directory
owner: docker
group: root
- name: Ensure frigate config file
template:
src: frigate-config.yml
dest: "{{docker.frigate.config_volume}}/config.yml"
owner: docker
group: root
register: frigate_config_file
# Grafana directory
- name: Ensure grafana config dir
file:
path: "{{docker.grafana.data_volume}}"
state: directory
owner: docker
group: root
# InfluxDB directory
- name: Ensure influxdb config dir
file:
path: "{{docker.influxdb.data_volume}}"
state: directory
owner: docker
group: root
- name: Ensure photoprism config dir
file:
path: "{{docker.photoprism.data_volume}}"
state: directory
owner: photoprism
group: root
- name: Ensure mariadb config dir
file:
path: "{{docker.mariadb.data_volume}}"
state: directory
owner: photoprism
group: root
- name: Ensure vaultwarden config dir
file:
path: "{{docker.vaultwarden.data_volume}}"
state: directory
owner: docker
group: root
- name: Ensure letsencrypt config dir
file:
path: "{{docker.letsencrypt.data_volume}}"
state: directory
owner: docker
group: root
- name: Ensure wireguard config dir
file:
path: "{{docker.wireguard.root_volume}}"
state: directory
owner: docker
group: root
- name: Ensure wireguard config dir
file:
path: "{{docker.wireguard.root_volume}}/wg_confs"
state: directory
owner: docker
group: root
- name: Ensure wireguard configuration file
template:
src: docker-wg.conf
dest: "{{docker.wireguard.root_volume}}/wg_confs/wg0.conf"
owner: docker
group: root
- name: Ensure nextcloud data volume dir
file:
path: "{{docker.nextcloud.data_volume}}"
state: directory
owner: docker
group: 911 # internal nextcloud user abc
- name: Ensure nextcloud data path
file:
path: "{{docker.nextcloud.data_path}}"
state: directory
owner: docker
group: 911 # internal nextcloud user abc
- name: Ensure nextcloud config path
file:
path: "{{docker.nextcloud.config_path}}"
state: directory
owner: docker
group: 911 # internal nextcloud user abc
- name: Ensure mariadb-nextcloud data path
file:
path: "{{docker.mariadb_nextcloud.data_volume}}"
state: directory
owner: lxd
group: 999 # internal mysql user
- name: Ensure dashy data volume
file:
path: "{{docker.dashy.data_volume}}"
state: directory
owner: docker
group: root
- name: Ensure calibre root volume
file:
path: "{{docker.calibre.root_volume}}"
state: directory
owner: docker
group: root
- name: Ensure calibre data path
file:
path: "{{docker.calibre.data_path}}"
state: directory
owner: docker
group: root
- name: Ensure calibre library path
file:
path: "{{docker.calibre.library_path}}"
state: directory
owner: docker
group: root
- name: Ensure jellyfin config path
file:
path: "{{docker.jellyfin.config_volume}}"
state: directory
owner: docker
group: root
- name: Ensure audiobookshelf config path
file:
path: "{{docker.audiobookshelf.volumes_path}}"
state: directory
owner: docker
group: root
# Docker service setup
- name: Install requirements
apt:
name:
- docker.io
- docker-compose
- python3-pip
state: present
- name: install requirements
ansible.builtin.pip:
name: docker
- name: Enable docker
systemd:
name: docker
enabled: yes
- name: Ensure docker project dir
file:
path: "{{docker.project_path}}"
state: directory
owner: docker
group: docker
- name: Ensure docker-compose file
template:
src: docker-compose.yml
dest: "{{docker.project_path}}"
owner: ansible
group: ansible
register: docker_compose_file
- name: Tear down existing project
community.docker.docker_compose:
project_src: "{{ docker.project_path }}"
state: absent
remove_orphans: yes
when: docker_compose_file.changed
- name: Set up project
register: docker_project
community.docker.docker_compose:
project_src: "{{docker.project_path}}"
state: present
remove_orphans: yes
when: docker_compose_file.changed
- name: debug
ansible.builtin.debug:
var: docker_project
when: docker_compose_file.changed
# Restart frigate if needed
- name: Restart frigate
when: frigate_config_file.changed
community.docker.docker_container:
name: frigate
restart: true
state: started
# Ensure photoprism index job crontab
- name: Ensure photoprism index job
cron:
name: "photoprism-index"
job: "docker exec -t photoprism photoprism index"
minute: "0"
hour: "2"
user: root
state: present