229 lines
5.0 KiB
YAML
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
|