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

255 lines
7.2 KiB
YAML
Raw Normal View History

2022-11-19 16:31:16 +01:00
---
2023-02-07 22:05:23 +01:00
- name: Ensure docker configuration folder exists
file:
path: /etc/docker/
state: directory
2022-11-20 19:55:08 +01:00
- name: Configure docker daemon
copy:
dest: /etc/docker/daemon.json
content: "{{ docker_daemon_settings|to_json(indent=4, sort_keys=True) }}"
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Configure docker service and reload it
systemd:
name: docker
state: reloaded
enabled: true
masked: false
2023-07-08 12:50:01 +02:00
# - name: Create Mastodon folder
# file:
# path: "{{ mastodon_composer_folder }}"
# state: directory
- name: Clon Mastodon repo
git:
2023-07-09 16:36:53 +02:00
repo: "{{ mastodon_repo }}"
2023-07-08 12:50:01 +02:00
dest: "{{ mastodon_composer_folder }}"
force: true
update: true
2023-07-31 07:32:22 +02:00
reference: "{{ mastodon_version }}"
2022-11-19 21:55:50 +01:00
2022-11-19 17:24:45 +01:00
- name: Create docker-compose.yaml file
2022-11-19 19:54:26 +01:00
template:
src: templates/docker-compose.yml.j2
2023-07-30 15:27:15 +02:00
dest: "{{ mastodon_composer_folder }}/docker-compose.override.yml"
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 16:31:16 +01:00
2022-11-24 08:53:59 +01:00
- name: Ensure mastodon environment configuration is present
2022-11-19 16:47:52 +01:00
template:
2022-11-24 08:53:59 +01:00
src: templates/env.j2
2023-07-08 19:43:58 +02:00
dest: "{{ mastodon_composer_folder }}/.env.production"
2022-11-19 21:55:50 +01:00
mode: 0600
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 19:41:40 +01:00
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:
2023-07-08 19:43:58 +02:00
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="
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 21:55:50 +01:00
mode: 0600
2022-11-19 19:06:51 +01:00
- 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:
2023-07-08 19:43:58 +02:00
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="
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 21:55:50 +01:00
mode: 0600
2022-11-19 19:06:51 +01:00
- 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:
2023-07-08 19:43:58 +02:00
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="
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 21:55:50 +01:00
mode: 0600
2022-11-19 19:06:51 +01:00
- 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:
2023-07-08 19:43:58 +02:00
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="
2022-11-19 21:55:50 +01:00
mode: 0600
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 19:06:51 +01:00
- name: Add Paperclip public key to Mastodon config
lineinfile:
2023-07-08 19:43:58 +02:00
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="
2022-11-19 21:55:50 +01:00
mode: 0600
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 19:14:41 +01:00
2022-11-19 21:55:50 +01:00
- name: Build Mastodon container to include secrets
2022-11-19 19:20:35 +01:00
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
- name: Start Redis container
2022-11-19 19:41:40 +01:00
docker_container:
name: mastodon_redis_1
2022-11-19 21:55:50 +01:00
state: started
2022-11-19 19:41:40 +01:00
- name: Start ElasticSearch container
docker_container:
name: mastodon_es_1
state: started
- name: Start database container
2022-11-19 22:08:12 +01:00
docker_container:
2023-07-09 11:17:27 +02:00
name: mastodon_db_1
2022-11-19 21:55:50 +01:00
state: started
2022-11-19 19:41:40 +01:00
2022-11-19 22:25:33 +01:00
# CREATE USER mastodon CREATEDB;
2022-11-19 19:14:41 +01:00
- name: Set up database
2023-07-30 15:27:15 +02:00
shell: "docker-compose run --rm web bundle exec rake db:setup && echo 'Database ready' > /var/lib/mastodon_db_setup"
2022-11-19 19:14:41 +01:00
args:
2022-11-19 19:16:26 +01:00
creates: /var/lib/mastodon_db_setup
chdir: "{{ mastodon_composer_folder }}"
2022-11-19 21:55:50 +01:00
when: mastodon_initial_setup
- name: Migrate database
2023-07-30 15:27:15 +02:00
shell: "docker-compose run --rm web bundle exec rake db:migrate && echo 'Database migrated' > /var/lib/mastodon_db_migrated"
2022-11-19 21:55:50 +01:00
args:
creates: /var/lib/mastodon_db_migrated
chdir: "{{ mastodon_composer_folder }}"
when: not mastodon_initial_setup
2022-11-19 22:05:18 +01:00
- name: Build Mastodon container to include secrets
community.docker.docker_compose:
project_name: mastodon
project_src: "{{ mastodon_composer_folder }}/"
state: present
stopped: false
build: true
2022-11-19 21:55:50 +01:00
- name: Create initial user
2023-07-30 15:27:15 +02:00
shell: "docker-compose run --rm web bin/tootctl accounts create '{{ mastodon_owner }}' --email '{{ mastodon_owner_email }}' --confirmed --role Owner && echo 'Owner account created' > /var/lib/mastodon_owner_created"
2022-11-19 21:55:50 +01:00
args:
creates: /var/lib/mastodon_owner_created
chdir: "{{ mastodon_composer_folder }}"
register: owner_result
when: mastodon_initial_setup
- name: Show owner password
debug:
var: owner_result
when: mastodon_initial_setup
2022-11-19 23:18:46 +01:00
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon systemd service unit
template:
src: templates/mastodon.service.j2
dest: /etc/systemd/system/mastodon.service
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Media Remove systemd service unit
template:
src: templates/mastodon-media-remove.service.j2
dest: /etc/systemd/system/mastodon-media-remove.service
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Media Remove systemd timer unit
template:
src: templates/mastodon-media-remove.timer.j2
dest: /etc/systemd/system/mastodon-media-remove.timer
2023-07-07 08:27:16 +02:00
backup: true
2022-11-19 23:18:46 +01:00
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Preview Cards Remove systemd service unit
template:
src: templates/mastodon-preview_cards-remove.service.j2
dest: /etc/systemd/system/mastodon-preview_cards-remove.service
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Preview Cards Remove systemd timer unit
template:
src: templates/mastodon-preview_cards-remove.timer.j2
dest: /etc/systemd/system/mastodon-preview_cards-remove.timer
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Search Deploy systemd service unit
template:
src: templates/mastodon-search-deploy.service.j2
dest: /etc/systemd/system/mastodon-search-deploy.service
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Deploy Mastodon Search Deploy systemd timer unit
template:
src: templates/mastodon-search-deploy.timer.j2
dest: /etc/systemd/system/mastodon-search-deploy.timer
2023-07-07 08:27:16 +02:00
backup: true
2022-11-20 19:55:08 +01:00
- name: Enable Mastodon Media Remove systemd timer unit
systemd:
2022-11-22 13:03:40 +01:00
name: mastodon-media-remove.timer
state: started
2022-11-22 13:08:05 +01:00
enabled: true
2022-11-20 19:55:08 +01:00
daemon_reload: true
2022-11-22 13:03:40 +01:00
- name: Enable Mastodon systemd timer units
2022-11-20 19:55:08 +01:00
systemd:
name: "{{ item }}"
2022-11-22 13:03:40 +01:00
state: started
2022-11-22 13:08:05 +01:00
enabled: true
2022-11-20 19:55:08 +01:00
loop:
- mastodon-preview_cards-remove.timer
- mastodon-search-deploy.timer