--- # Terraform Vultr provider doesn't have a VFS resource/datasource yet. # This is a workaround for that missing feature. # # @see https://github.com/vultr/terraform-provider-vultr/issues/560 - name: Get the VFS id ansible.builtin.uri: url: https://api.vultr.com/v2/vfs method: GET status_code: 200 headers: Authorization: "Bearer {{ lookup('dotenv', 'VULTR_API_KEY', file='../.env') }}" register: vfs_list - name: Get VFS variables ansible.builtin.set_fact: bright_vfs_id: "{{ vfs_list.json.vfs | selectattr('label', 'equalto', 'bright') | map(attribute='id') | first }}" - name: Debug the bright VFS id ansible.builtin.debug: msg: "The VFS ID for 'bright' is {{ bright_vfs_id }}" - name: Attach VFS to Vultr instance ansible.builtin.uri: url: https://api.vultr.com/v2/vfs/{{ bright_vfs_id }}/attachments/{{ hostvars[inventory_hostname]['vultr_instance_id'] }} method: PUT status_code: - 200 - 201 - 409 headers: Authorization: "Bearer {{ lookup('dotenv', 'VULTR_API_KEY', file='../.env') }}" register: vfs_attach changed_when: - vfs_attach.json is defined - "'state' in vfs_attach.json" - vfs_attach.json.state == "ATTACHED" notify: - Mount vfs - Restart bright - name: Debug vfs_attach ansible.builtin.debug: var: vfs_attach - name: Get the VFS mount_tag ansible.builtin.set_fact: vfs_mount_tag: "{{ vfs_attach.json.mount_tag | default('') }}" - name: Setup docker container community.docker.docker_container: name: bright image: gitea.futureporn.net/futureporn/bright:latest pull: always state: started ports: - "4000:4000" volumes: - "/mnt/vfs/futureporn:/mnt/vfs/futureporn" env: DB_HOST: "{{ hostvars['fp-db-0']['internal_ip'] }}" DB_USER: "{{ lookup('dotenv', 'DB_USER', file='../.env') }}" DB_NAME: "bright" DB_PORT: "5432" DB_PASS: "{{ lookup('dotenv', 'DB_PASS', file='../.env') }}" MIX_ENV: prod PUBLIC_S3_ENDPOINT: https://futureporn-b2.b-cdn.net PATREON_REDIRECT_URI: https://bright.futureporn.net/auth/patreon/callback SITE_URL: https://bright.futureporn.net PHX_HOST: bright.futureporn.net AWS_BUCKET: futureporn AWS_REGION: us-west-000 AWS_HOST: s3.us-west-000.backblazeb2.com SECRET_KEY_BASE: "{{ lookup('dotenv', 'SECRET_KEY_BASE', file='../.env') }}" PATREON_CLIENT_SECRET: "{{ lookup('dotenv', 'PATREON_CLIENT_SECRET', file='../.env') }}" PATREON_CLIENT_ID: "{{ lookup('dotenv', 'PATREON_CLIENT_ID', file='../.env') }}" AWS_ACCESS_KEY_ID: "{{ lookup('dotenv', 'AWS_ACCESS_KEY_ID', file='../.env') }}" AWS_SECRET_ACCESS_KEY: "{{ lookup('dotenv', 'AWS_SECRET_ACCESS_KEY', file='../.env') }}" TRACKER_HELPER_ACCESSLIST_URL: https://tracker.futureporn.net/accesslist TRACKER_HELPER_USERNAME: "{{ lookup('dotenv', 'TRACKER_HELPER_USERNAME', file='../.env') }}" TRACKER_HELPER_PASSWORD: "{{ lookup('dotenv', 'TRACKER_HELPER_PASSWORD', file='../.env') }}" TRACKER_URL: https://tracker.futureporn.net:6969 CACHE_DIR: /mnt/vfs/futureporn # we use Vultr File System to share cache among all Phoenix instances