--- - name: Asses state of local repo stat: path: "{{ mastodon_composer_folder }}" register: repo_folder - name: Clone Mastodon repo git: repo: https://github.com/mastodon/mastodon.git dest: "{{ mastodon_composer_folder }}" depth: 1 when: not repo_folder.stat.exists - name: Copy Dockerfile from Mastodon repo copy: src: files/Dockerfile dest: "{{ mastodon_composer_folder }}/Dockerfile" - name: Ensure mastodon folder exists file: path: "{{ mastodon_composer_folder }}" state: directory - name: Create docker-compose.yaml file template: src: templates/docker-compose.yml.j2 dest: "{{ mastodon_composer_folder }}/docker-compose.yml" - name: Ensure mastodon configuration is present template: src: templates/env.j2 dest: "{{ mastodon_composer_folder }}/.env.production" - name: Build Mastodon container community.docker.docker_compose: project_name: mastodon project_src: "{{ mastodon_composer_folder }}/" build: true state: present stopped: true - 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 - name: Generate secret key shell: docker-compose run --rm web bundle exec rake secret args: chdir: "{{ mastodon_composer_folder }}" register: secret_key_cmd when: mastodon_secret_key_base == '' - name: Set mastodon_secret_key_base set_fact: mastodon_secret_key_base: "{{ secret_key_cmd.stdout }}" when: mastodon_secret_key_base == '' - name: Add secret key to Mastodon config lineinfile: path: "{{ mastodon_composer_folder }}/.env.production" line: "SECRET_KEY_BASE={{ mastodon_secret_key_base }}" regexp: "^SECRET_KEY_BASE=" backup: yes - name: Generate OTP secret key shell: docker-compose run --rm web bundle exec rake secret args: chdir: "{{ mastodon_composer_folder }}" register: otp_key_cmd when: mastodon_otp_secret == '' - name: Set mastodon_otp_secret set_fact: mastodon_otp_secret: "{{ otp_key_cmd.stdout }}" when: mastodon_otp_secret == '' - name: Add OTP key to Mastodon config lineinfile: path: "{{ mastodon_composer_folder }}/.env.production" line: "OTP_SECRET={{ mastodon_otp_secret }}" regexp: "^OTP_SECRET=" backup: yes - name: Generate Paperclip secret key shell: docker-compose run --rm web bundle exec rake secret args: chdir: "{{ mastodon_composer_folder }}" register: paperclip_key_cmd when: mastodon_paperclip_secret == '' - name: Set mastodon_paperclip_secret set_fact: mastodon_paperclip_secret: "{{ otppaperclip_key_cmd_key_cmd.stdout }}" when: mastodon_paperclip_secret == '' - name: Add Paperclip key to Mastodon config lineinfile: path: "{{ mastodon_composer_folder }}/.env.production" line: "PAPERCLIP_SECRET={{ mastodon_paperclip_secret }}" regexp: "^PAPERCLIP_SECRET=" backup: yes - name: Generate VAPID keypair shell: 'docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key' args: chdir: "{{ mastodon_composer_folder }}" register: vapid_key_cmd when: vapid_public_key == '' - 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 == '' - name: Add Paperclip private key to Mastodon config lineinfile: path: "{{ mastodon_composer_folder }}/.env.production" line: "{{ vapid_private_key }}" regexp: "^VAPID_PRIVATE_KEY=" backup: yes - name: Add Paperclip public key to Mastodon config lineinfile: path: "{{ mastodon_composer_folder }}/.env.production" line: "{{ vapid_public_key }}" regexp: "^VAPID_PUBLIC_KEY=" backup: yes - name: Build (again) Mastodon container to include secrets community.docker.docker_compose: project_name: mastodon project_src: "{{ mastodon_composer_folder }}/" state: present stopped: true build: true - 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 - name: Set up database shell: docker-compose run --rm web rails db:migrate && echo "Database set up." > /var/lib/mastodon_db_setup args: creates: /var/lib/mastodon_db_setup chdir: "{{ mastodon_composer_folder }}"