You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.4 KiB
YAML

- name: create Mastodon Docker user
ansible.builtin.user:
name: "{{ mastodon_docker_user }}"
shell: /bin/bash
home: "{{ mastodon_docker_home }}"
create_home: true
state: present
- name: Create directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0777"
loop:
- "{{ mastodon_docker_postgres_storage }}"
- "{{ mastodon_docker_redis_storage }}"
- "{{ mastodon_docker_elasticsearch_storage }}"
- "{{ mastodon_docker_system_storage }}"
- "{{ mastodon_docker_backup_storage }}"
- "{{ mastodon_docker_cache_storage }}"
- name: Make sure data directories are backed up
lineinfile:
path: "/backup-dirs"
line: "{{ item }}"
loop:
- "{{ mastodon_docker_postgres_storage }}"
- "{{ mastodon_docker_redis_storage }}"
- "{{ mastodon_docker_elasticsearch_storage }}"
- "{{ mastodon_docker_system_storage }}"
- "{{ mastodon_docker_backup_storage }}"
# cache storage intentionally omitted
- name: Copy the docker compose file to server
template:
src: "docker-compose.yml.j2"
dest: "{{ mastodon_docker_home }}/docker-compose.yml"
register: compose_file
- name: Copy the Dockerfile to server
template:
src: "Dockerfile"
dest: "{{ mastodon_docker_home }}/Dockerfile"
register: compose_file
- name: Copy the env file to server
template:
src: "env.production.j2"
dest: "{{ mastodon_docker_home }}/env"
register: env_file
- name: Copy the tootctl file to server
template:
src: "tootctl"
dest: "{{ mastodon_docker_home }}/tootctl"
mode: "0770"
- name: Copy the bundle file to server
template:
src: "bundle"
dest: "{{ mastodon_docker_home }}/bundle"
mode: "0770"
- name: "Stop mastodon_docker services"
community.docker.docker_compose_v2:
state: "absent"
project_src: "{{ mastodon_docker_home }}"
when: compose_file.changed or env_file.changed
- name: run the setup command
command:
cmd: "bash -c 'docker compose run --rm web bundle exec rails db:setup && touch db_setup.mark'"
chdir: "{{ mastodon_docker_home }}"
creates: "db_setup.mark"
- name: "docker compose up -d"
community.docker.docker_compose_v2:
state: "present"
build: "always"
pull: missing
project_src: "{{ mastodon_docker_home }}"
- name: Add Mastodon Postgres backup cron
cron:
name: "Mastodon Postgres backup: {{ mastodon_docker_domain }}"
user: root
minute: "0"
hour: "3"
job: >
/bin/sh -c '/usr/bin/docker compose --project-directory {{mastodon_docker_home}} exec -T db pg_dump -U mastodon mastodon_production > {{mastodon_docker_backup_storage}}/mastodon_backup.sql'
- name: Add Mastodon media attachments cache cleanup
cron:
name: "Mastodon media attachments cleanup backup: {{ mastodon_docker_domain }}"
user: root
minute: "0"
hour: "1"
job: >
/bin/sh -c '/usr/bin/docker compose --project-directory {{mastodon_docker_home}} exec web bin/tootctl media remove --days {{ mastodon_docker_media_cleanup_days }}'
- name: Add Mastodon media headers cache cleanup
cron:
name: "Mastodon media headers cleanup backup: {{ mastodon_docker_domain }}"
user: root
minute: "30"
hour: "1"
job: >
/bin/sh -c '/usr/bin/docker compose --project-directory {{mastodon_docker_home}} exec web bin/tootctl media remove --days {{ mastodon_docker_media_cleanup_days }} --remove-headers'