infrastructure/roles/mastodon/tasks/main.yml

151 lines
4 KiB
YAML
Raw Normal View History

2020-08-10 01:37:13 +02:00
---
# Tasks file for the mastodon role
# Infrastructure
# Ansible instructions to deploy the infrastructure
# Copyright (C) 2019-2020 Christoph (Sheogorath) Kern
# Copyright (C) 2020 Alexander Wellbrock
# Copyright (C) 2020 Saibotk
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
- name: Update default SELinux contexts
2022-08-13 17:50:54 +02:00
community.general.sefcontext:
2020-08-10 01:37:13 +02:00
target: '{{ item }}(/.*)?'
setype: "container_file_t"
state: present
with_items:
- "{{ mastodon_database_location }}"
- "{{ mastodon_public_location }}"
- "{{ mastodon_redis_location }}"
- "{{ mastodon_elastic_location }}"
- "{{ mastodon_nginx_location }}"
become: true
- name: Create install directory
2022-08-13 17:50:54 +02:00
ansible.builtin.file:
2020-08-10 01:37:13 +02:00
path: "{{ item }}"
state: directory
mode: '0700'
owner: 'root'
group: 'root'
2020-08-10 01:37:13 +02:00
with_items:
- "{{ mastodon_install_location }}"
become: true
- name: Create data directories
2022-08-13 17:50:54 +02:00
ansible.builtin.file: # noqa risky-file-permissions # Container manages permissions on its own
2020-08-10 01:37:13 +02:00
path: "{{ item }}"
state: directory
setype: "container_file_t"
with_items:
- "{{ mastodon_database_location }}"
- "{{ mastodon_public_location }}"
- "{{ mastodon_redis_location }}"
- "{{ mastodon_elastic_location }}"
- "{{ mastodon_nginx_location }}"
become: true
- name: Create public data directory
2022-08-13 17:50:54 +02:00
ansible.builtin.file:
2020-08-10 01:37:13 +02:00
path: "{{ mastodon_public_location }}/system"
mode: '0755'
owner: '991'
group: '991'
2020-08-10 01:37:13 +02:00
state: directory
setype: "container_file_t"
become: true
- name: Deploy nginx proxy config file
2022-08-13 17:50:54 +02:00
ansible.builtin.template:
2020-08-10 01:37:13 +02:00
src: "default.conf"
dest: "{{ mastodon_nginx_location }}/default.conf"
mode: '0600'
owner: 'root'
group: 'root'
become: true
- name: Check if migration is needed
2022-08-13 17:50:54 +02:00
ansible.builtin.command: "grep -q 'tootsuite/mastodon:{{ mastodon_image_version }}' '{{ mastodon_install_location }}/docker-compose.yml'"
2020-08-10 01:37:13 +02:00
register: mastodon_version_fact
2021-03-05 13:02:55 +01:00
ignore_errors: true
2020-08-10 01:37:13 +02:00
changed_when: mastodon_version_fact.rc > 0
failed_when: false
become: true
notify: ["Pull mastodon image", "Stop mastodon for upgrade"]
2020-08-10 01:37:13 +02:00
- name: Immediately run / flush Ansible handlers
2022-08-13 17:50:54 +02:00
ansible.builtin.meta: "flush_handlers"
2020-08-10 01:37:13 +02:00
- name: Deploy config
2022-08-13 17:50:54 +02:00
ansible.builtin.template:
2020-08-10 01:37:13 +02:00
src: ".env.production"
dest: "{{ mastodon_install_location }}/.env.production"
mode: '0600'
owner: 'root'
group: 'root'
tags:
- mastodon
become: true
- name: Deploy docker-compose.yml
2022-08-13 17:50:54 +02:00
ansible.builtin.template:
2020-08-10 01:37:13 +02:00
src: "docker-compose.yml"
dest: "{{ mastodon_install_location }}/docker-compose.yml"
mode: '0600'
owner: 'root'
group: 'root'
validate: docker-compose -f %s config -q
2020-08-10 01:37:13 +02:00
tags:
- mastodon
become: true
- name: Migrate database
2022-11-02 21:57:13 +01:00
ansible.builtin.command: "docker-compose run --rm web rails db:migrate"
2020-08-10 01:37:13 +02:00
args:
chdir: "{{ mastodon_install_location }}"
when:
# noqa no-handler
2020-08-10 01:37:13 +02:00
- mastodon_version_fact is changed
tags:
- docker
- mastodon
become: true
environment:
2022-11-02 21:57:13 +01:00
PYTHONPATH: ""
2020-08-10 01:37:13 +02:00
- name: Clear cache
2022-08-13 17:50:54 +02:00
ansible.builtin.command: docker-compose run --rm web bin/tootctl cache clear
2020-08-10 01:37:13 +02:00
args:
chdir: "{{ mastodon_install_location }}"
when:
# noqa no-handler
2020-08-10 01:37:13 +02:00
- mastodon_version_fact is changed
tags:
- docker
- mastodon
become: true
environment:
2022-11-02 21:57:13 +01:00
PYTHONPATH: ""
2020-08-10 01:37:13 +02:00
- name: Compose mastodon
2022-08-13 17:50:54 +02:00
community.docker.docker_compose:
2020-08-10 01:37:13 +02:00
state: present
project_src: "{{ mastodon_install_location }}"
2021-03-05 13:02:55 +01:00
pull: true
remove_orphans: true
2020-08-10 01:37:13 +02:00
tags:
- docker
- mastodon
become: true