# vim: ft=yaml.ansible --- - name: Create volume folder for Mastodon data file: name: "{{ services.mastodon.volume_folder }}/mastodon_data" state: directory owner: "991" mode: u=rwx,g=rx,o=rx - name: Create volume folder for PostgreSQL data file: name: "{{ services.mastodon.volume_folder }}/postgres_data" state: directory owner: "70" mode: u=rwx,go= - name: Create volume folder for PostgreSQL config file: name: "{{ services.mastodon.volume_folder }}/postgres_config" state: directory owner: root mode: u=rwx,g=rx,o=rx - name: Create volume folder for Redis data file: name: "{{ services.mastodon.volume_folder }}/redis_data" state: directory owner: "999" group: "1000" mode: u=rwx,g=rx,o=rx - name: Copy mastodon environment file template: src: mastodon/env.j2 dest: "{{ services.mastodon.volume_folder }}/mastodon.env" - name: Upload vhost config for Mastodon domain copy: src: vhost/mastodon dest: "{{ services.nginx_proxy.volume_folder }}/vhost/{{ services.mastodon.domain }}" - name: Copy PostgreSQL config copy: src: mastodon/postgresql.conf dest: "{{ services.mastodon.volume_folder }}/postgres_config/postgresql.conf" - name: Upload Compose file for Mastodon template: src: compose-files/mastodon.yml.j2 dest: "{{ services.mastodon.volume_folder }}/docker-compose.yml" - name: Deploy Mastodon docker_compose: project_src: "{{ services.mastodon.volume_folder }}" pull: true restarted: true state: present - name: Configure cron job to remove old Mastodon media daily cron: name: Clean Mastodon media data older than a week cron_file: ansible_mastodon_clean_media job: docker exec mastodon_web_1 tootctl media remove --days 7 special_time: daily user: root state: present - name: Configure cron job to remove old Mastodon preview cards daily cron: name: Clean Mastodon preview card data older than two weeks cron_file: ansible_mastodon_clean_preview_cards job: docker exec mastodon_web_1 tootctl preview_cards remove --days 14 special_time: daily user: root state: present