ansible-role-mastodon/tasks/docker/docker.yml

193 lines
5.1 KiB
YAML
Raw Normal View History

2022-11-19 16:31:16 +01:00
---
2022-11-19 19:49:16 +01:00
- name: Asses state of local repo
stat:
path: "{{ mastodon_composer_folder }}"
register: repo_folder
2022-11-19 17:30:33 +01:00
- name: Clone Mastodon repo
git:
repo: https://github.com/mastodon/mastodon.git
2022-11-19 18:00:40 +01:00
dest: "{{ mastodon_composer_folder }}"
2022-11-19 17:30:33 +01:00
depth: 1
2022-11-19 19:49:16 +01:00
when: not repo_folder.stat.exists
2022-11-19 17:30:33 +01:00
- name: Copy Dockerfile from Mastodon repo
copy:
2022-11-19 17:56:21 +01:00
src: files/Dockerfile
2022-11-19 17:30:33 +01:00
dest: "{{ mastodon_composer_folder }}/Dockerfile"
2022-11-19 17:24:45 +01:00
- name: Ensure mastodon folder exists
file:
path: "{{ mastodon_composer_folder }}"
state: directory
- name: Create docker-compose.yaml file
2022-11-19 19:54:26 +01:00
template:
src: templates/docker-compose.yml.j2
2022-11-19 17:24:45 +01:00
dest: "{{ mastodon_composer_folder }}/docker-compose.yml"
2022-11-19 16:31:16 +01:00
2022-11-19 16:47:52 +01:00
- name: Ensure mastodon configuration is present
template:
src: templates/env.j2
2022-11-19 17:24:45 +01:00
dest: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 16:47:52 +01:00
2022-11-19 19:06:51 +01:00
- name: Build Mastodon container
2022-11-19 16:31:16 +01:00
community.docker.docker_compose:
2022-11-19 19:28:29 +01:00
project_name: mastodon
project_src: "{{ mastodon_composer_folder }}/"
build: true
state: present
2022-11-19 19:38:23 +01:00
stopped: true
2022-11-19 19:37:22 +01:00
2022-11-19 19:41:40 +01:00
- name: Stop mastodon_web_1 container
docker_container:
name: mastodon_web_1
state: stopped
- name: Stop mastodon_streaming_1 container
docker_container:
name: mastodon_streaming_1
state: stopped
- name: Stop mastodon_sidekiq_1 container
docker_container:
name: mastodon_sidekiq_1
state: stopped
- name: Stop mastodon_redis_1 container
docker_container:
name: mastodon_redis_1
state: stopped
- name: Stop mastodon_db_1 container
docker_container:
name: mastodon_db_1
state: stopped
2022-11-19 19:06:51 +01:00
- name: Generate secret key
shell: docker-compose run --rm web bundle exec rake secret
2022-11-19 19:16:26 +01:00
args:
chdir: "{{ mastodon_composer_folder }}"
2022-11-19 19:06:51 +01:00
register: secret_key_cmd
when: mastodon_secret_key_base == ''
2022-11-19 19:23:42 +01:00
- name: Set mastodon_secret_key_base
set_fact:
mastodon_secret_key_base: "{{ secret_key_cmd.stdout }}"
when: mastodon_secret_key_base == ''
2022-11-19 19:06:51 +01:00
- name: Add secret key to Mastodon config
lineinfile:
path: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 19:23:42 +01:00
line: "SECRET_KEY_BASE={{ mastodon_secret_key_base }}"
2022-11-19 19:06:51 +01:00
regexp: "^SECRET_KEY_BASE="
backup: yes
- name: Generate OTP secret key
shell: docker-compose run --rm web bundle exec rake secret
2022-11-19 19:16:26 +01:00
args:
chdir: "{{ mastodon_composer_folder }}"
2022-11-19 19:06:51 +01:00
register: otp_key_cmd
when: mastodon_otp_secret == ''
2022-11-19 19:23:42 +01:00
- name: Set mastodon_otp_secret
set_fact:
mastodon_otp_secret: "{{ otp_key_cmd.stdout }}"
when: mastodon_otp_secret == ''
2022-11-19 19:06:51 +01:00
- name: Add OTP key to Mastodon config
lineinfile:
path: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 19:23:42 +01:00
line: "OTP_SECRET={{ mastodon_otp_secret }}"
2022-11-19 19:06:51 +01:00
regexp: "^OTP_SECRET="
backup: yes
- name: Generate Paperclip secret key
shell: docker-compose run --rm web bundle exec rake secret
2022-11-19 19:16:26 +01:00
args:
chdir: "{{ mastodon_composer_folder }}"
2022-11-19 19:06:51 +01:00
register: paperclip_key_cmd
when: mastodon_paperclip_secret == ''
2022-11-19 19:23:42 +01:00
- name: Set mastodon_paperclip_secret
set_fact:
mastodon_paperclip_secret: "{{ otppaperclip_key_cmd_key_cmd.stdout }}"
when: mastodon_paperclip_secret == ''
2022-11-19 19:06:51 +01:00
- name: Add Paperclip key to Mastodon config
lineinfile:
path: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 19:23:42 +01:00
line: "PAPERCLIP_SECRET={{ mastodon_paperclip_secret }}"
2022-11-19 19:06:51 +01:00
regexp: "^PAPERCLIP_SECRET="
backup: yes
- name: Generate VAPID keypair
2022-11-19 19:16:26 +01:00
shell: 'docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key'
args:
chdir: "{{ mastodon_composer_folder }}"
2022-11-19 19:06:51 +01:00
register: vapid_key_cmd
when: vapid_public_key == ''
2022-11-19 19:23:42 +01:00
- name: Set vapid_public_key
set_fact:
vapid_public_key: "{{ vapid_key_cmd.stdout_lines[1] }}"
when: vapid_public_key == ''
- name: Set vapid_private_key
set_fact:
vapid_private_key: "{{ vapid_key_cmd.stdout_lines[0] }}"
when: vapid_private_key == ''
2022-11-19 19:06:51 +01:00
- name: Add Paperclip private key to Mastodon config
lineinfile:
path: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 19:23:42 +01:00
line: "{{ vapid_private_key }}"
2022-11-19 19:06:51 +01:00
regexp: "^VAPID_PRIVATE_KEY="
backup: yes
- name: Add Paperclip public key to Mastodon config
lineinfile:
path: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 19:23:42 +01:00
line: "{{ vapid_public_key }}"
2022-11-19 19:06:51 +01:00
regexp: "^VAPID_PUBLIC_KEY="
backup: yes
2022-11-19 19:14:41 +01:00
2022-11-19 19:20:35 +01:00
- name: Build (again) Mastodon container to include secrets
community.docker.docker_compose:
2022-11-19 19:28:29 +01:00
project_name: mastodon
project_src: "{{ mastodon_composer_folder }}/"
state: present
2022-11-19 19:38:23 +01:00
stopped: true
2022-11-19 19:28:29 +01:00
build: true
2022-11-19 19:20:35 +01:00
2022-11-19 19:41:40 +01:00
- name: Stop mastodon_web_1 container
docker_container:
name: mastodon_web_1
state: stopped
- name: Stop mastodon_streaming_1 container
docker_container:
name: mastodon_streaming_1
state: stopped
- name: Stop mastodon_sidekiq_1 container
docker_container:
name: mastodon_sidekiq_1
state: stopped
- name: Stop mastodon_redis_1 container
docker_container:
name: mastodon_redis_1
state: stopped
- name: Stop mastodon_db_1 container
docker_container:
name: mastodon_db_1
state: stopped
2022-11-19 19:14:41 +01:00
- name: Set up database
shell: docker-compose run --rm web rails db:migrate && echo "Database set up." > /var/lib/mastodon_db_setup
args:
2022-11-19 19:16:26 +01:00
creates: /var/lib/mastodon_db_setup
chdir: "{{ mastodon_composer_folder }}"