121 lines
4.1 KiB
YAML
121 lines
4.1 KiB
YAML
|
---
|
||
|
|
||
|
- name: Ensure mastodon user '{{ mastodon_user }}' exists
|
||
|
user:
|
||
|
name: "{{ mastodon_user }}"
|
||
|
state: present
|
||
|
system: true
|
||
|
register: mastodon_user_info
|
||
|
|
||
|
- name: Ensure host directories are present
|
||
|
file:
|
||
|
path: "{{ item.path }}"
|
||
|
state: directory
|
||
|
owner: "{{ item.owner | default(mastodon_user) }}"
|
||
|
group: "{{ item.group | default(mastodon_user) }}"
|
||
|
mode: "{{ item.mode | default('0750') }}"
|
||
|
loop:
|
||
|
- path: "{{ mastodon_base_path }}"
|
||
|
mode: '0755'
|
||
|
- path: "{{ mastodon_config_path }}"
|
||
|
- path: "{{ mastodon_data_path }}"
|
||
|
- path: "{{ mastodon_repo_path }}"
|
||
|
mode: '0700'
|
||
|
loop_control: { label: "{{ item.path }}" }
|
||
|
|
||
|
- name: Ensure environment file is templated
|
||
|
template:
|
||
|
src: env.j2
|
||
|
dest: "{{ mastodon_config_env_file }}"
|
||
|
owner: "{{ mastodon_user_info.uid | default(mastodon_user) }}"
|
||
|
group: "{{ mastodon_user_info.group | default(mastodon_user) }}"
|
||
|
mode: "0640"
|
||
|
notify: restart-mastodon
|
||
|
|
||
|
- name: Ensure mastodon git repository is present and up-to-date
|
||
|
git:
|
||
|
repo: "{{ mastodon_git_upstream_url }}"
|
||
|
dest: "{{ mastodon_repo_path }}"
|
||
|
refspec: "v{{ mastodon_version }}"
|
||
|
version: "v{{ mastodon_version }}"
|
||
|
force: no
|
||
|
recursive: yes
|
||
|
track_submodules: yes
|
||
|
register: git_repo_info
|
||
|
|
||
|
- name: Ensure docker network for backend communication is created
|
||
|
docker_network:
|
||
|
name: "{{ mastodon_container_network_name }}"
|
||
|
state: present
|
||
|
|
||
|
- name: Ensure environment file is templated
|
||
|
template:
|
||
|
src: env.j2
|
||
|
dest: "{{ mastodon_config_env_file }}"
|
||
|
owner: "{{ mastodon_user_info.uid | default(mastodon_user) }}"
|
||
|
group: "{{ mastodon_user_info.group | default(mastodon_user) }}"
|
||
|
mode: "0640"
|
||
|
|
||
|
- name: Ensure mastodon docker image is built
|
||
|
docker_image:
|
||
|
name: "{{ mastodon_container_image_name }}"
|
||
|
tag: "{{ mastodon_container_image_tag }}"
|
||
|
state: present
|
||
|
source: build
|
||
|
build:
|
||
|
path: "{{ mastodon_repo_path }}"
|
||
|
args:
|
||
|
UID: "{{ mastodon_user_info.uid }}"
|
||
|
GID: "{{ mastodon_user_info.group }}"
|
||
|
when: git_repo_info.before != git_repo_info.after
|
||
|
|
||
|
- name: Ensure mastodon sidekiq container '{{ mastodon_container_name_sidekiq }}' is running
|
||
|
docker_container:
|
||
|
name: "{{ mastodon_container_name_sidekiq }}"
|
||
|
image: "{{ mastodon_container_image_ref }}"
|
||
|
networks: "{{ mastodon_container_networks }}"
|
||
|
volumes: "{{ mastodon_container_volumes_sidekiq }}"
|
||
|
env_file: "{{ mastodon_config_env_file }}"
|
||
|
command: "bundle exex sidekiq"
|
||
|
restart_policy: "{{ mastodon_container_restart_policy }}"
|
||
|
healthcheck:
|
||
|
test: ["CMD-SHELL", "ps aux | grep '[s]idekiq\ 6' || false"]
|
||
|
interval: 5s
|
||
|
retries: 3
|
||
|
start_period: 0s
|
||
|
timeout: 5s
|
||
|
|
||
|
- name: Ensure mastodon streaming container '{{ mastodon_container_name_streaming }}' is running
|
||
|
docker_container:
|
||
|
name: "{{ mastodon_container_name_streaming }}"
|
||
|
image: "{{ mastodon_container_image_ref }}"
|
||
|
networks: "{{ mastodon_container_networks }}"
|
||
|
volumes: "{{ mastodon_container_volumes_streaming }}"
|
||
|
env_file: "{{ mastodon_config_env_file }}"
|
||
|
command: "node ./streaming"
|
||
|
restart_policy: "{{ mastodon_container_restart_policy }}"
|
||
|
ports: "{{ mastodon_container_ports_streaming }}"
|
||
|
healthcheck:
|
||
|
test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
|
||
|
interval: 5s
|
||
|
retries: 3
|
||
|
start_period: 0s
|
||
|
timeout: 5s
|
||
|
|
||
|
- name: Ensure mastodon streaming container '{{ mastodon_container_name_streaming }}' is running
|
||
|
docker_container:
|
||
|
name: "{{ mastodon_container_name_streaming }}"
|
||
|
image: "{{ mastodon_container_image_ref }}"
|
||
|
networks: "{{ mastodon_container_networks }}"
|
||
|
volumes: "{{ mastodon_container_volumes }}"
|
||
|
env_file: "{{ mastodon_config_env_file }}"
|
||
|
command: "bash -c \"rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000\""
|
||
|
restart_policy: "{{ mastodon_container_restart_policy }}"
|
||
|
ports: "{{ mastodon_container_ports }}"
|
||
|
healthcheck:
|
||
|
test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"]
|
||
|
interval: 5s
|
||
|
retries: 3
|
||
|
start_period: 0s
|
||
|
timeout: 5s
|