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
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'
|