Repository Index: Generate an index.yaml in ./docx/helm-repo/index.yaml to allow for browsertrix to be a helm repository. docs: rename docs.browsertrix.cloud -> docs.browsertrix.com docs: update deployment doc to mention helm repo as preferred way to install docs build action: generate repository index in GH action publish action: update auto-generated message to mention installing from the repo. --------- Co-authored-by: Tessa Walsh <tessa@bitarchivist.net>
161 lines
5.7 KiB
YAML
161 lines
5.7 KiB
YAML
---
|
|
- name: teardown browsertrix on digital ocean
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: false
|
|
vars_files:
|
|
- ../group_vars/do/main.yml
|
|
- ../group_vars/do/teardown.yml
|
|
|
|
tasks:
|
|
|
|
# Init
|
|
# ===========================================
|
|
- name: d_ocean | init | set full domain
|
|
ansible.builtin.set_fact:
|
|
full_domain: "{{ subdomain + '.' + domain if subdomain else domain }}"
|
|
|
|
- name: d_ocean | init | install s3cmd and mongodump
|
|
ansible.builtin.package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
loop:
|
|
- mongodump
|
|
- s3cmd
|
|
|
|
# MongoDB
|
|
# ===========================================
|
|
- name: d_ocean | db | test for existing mongodb
|
|
ansible.builtin.command: doctl db list -o json
|
|
changed_when: false
|
|
failed_when: false
|
|
register: db_check
|
|
|
|
- name: d_ocean | db | does db exist
|
|
ansible.builtin.set_fact:
|
|
db_exists: "{{ db_check.stdout | from_json | json_query(name_query) | length >= 1 }}"
|
|
vars:
|
|
name_query: '[?name==`{{ db_name }}`]'
|
|
|
|
- name: d_ocean | db | set db id
|
|
ansible.builtin.set_fact:
|
|
db_uuid: "{{ db_check.stdout | from_json | json_query(name_query) | json_query('[0].id') }}"
|
|
vars:
|
|
name_query: '[?name==`{{ db_name }}`]'
|
|
|
|
- name: d_ocean | db | reset db user password
|
|
ansible.builtin.command: doctl databases user reset {{ db_uuid }} doadmin -o json
|
|
register: db_user
|
|
when: db_exists
|
|
changed_when: true
|
|
|
|
- name: Sleep 10 seconds to wait for admin password to change
|
|
ansible.builtin.wait_for:
|
|
timeout: 10
|
|
when: db_exists
|
|
|
|
- name: d_ocean | db | set db config
|
|
ansible.builtin.set_fact:
|
|
db_url: "{{ db_check.stdout | from_json | json_query(name_query) | json_query('[0].connection.uri') | replace(old, new) }}"
|
|
vars:
|
|
name_query: '[?name==`{{ db_name }}`]'
|
|
old: ":@"
|
|
new: ":{{ db_user.stdout | from_json | json_query('[0].password') }}@"
|
|
when: db_exists
|
|
|
|
- name: d_ocean | db | dump db
|
|
ansible.builtin.command: mongodump --uri={{ db_url }} --archive=mongobackup.gz --gzip
|
|
when: create_backup and db_exists
|
|
changed_when: true
|
|
|
|
- name: d_ocean | db | upload mongo to spaces
|
|
ansible.builtin.command: s3cmd put ./mongobackup.gz s3://{{ bucket_name }}/{{ bucket_path }} --host={{ droplet_region }}.digitaloceanspaces.com --access_key "{{ lookup('env', 'DO_AWS_ACCESS_KEY') }}" --secret_key "{{ lookup('env', 'DO_AWS_SECRET_KEY') }}"
|
|
when: create_backup and db_exists
|
|
changed_when: true
|
|
|
|
- name: d_ocean | db | destroy mongodb database
|
|
ansible.builtin.command: doctl databases delete {{ item }} --force
|
|
loop: "{{ db_check.stdout | from_json | json_query(name_query) }}"
|
|
vars:
|
|
name_query: '[?name==`{{ db_name }}`]'
|
|
when: db_exists
|
|
changed_when: true
|
|
|
|
# Storage (Space)
|
|
# ===========================================
|
|
- name: d_ocean | space | destroy storage spaces
|
|
community.digitalocean.digital_ocean_spaces:
|
|
name: "{{ bucket_name }}"
|
|
state: absent
|
|
oauth_token: "{{ lookup('env', 'DO_API_TOKEN') }}"
|
|
aws_access_key_id: "{{ lookup('env', 'DO_AWS_ACCESS_KEY') }}"
|
|
aws_secret_access_key: "{{ lookup('env', 'DO_AWS_SECRET_KEY') }}"
|
|
region: "{{ droplet_region }}"
|
|
when: delete_space
|
|
|
|
# K8S
|
|
# ===========================================
|
|
- name: d_ocean | k8s | test for existing k8s cluster
|
|
ansible.builtin.command: doctl k8s cluster list -o json
|
|
changed_when: false
|
|
failed_when: false
|
|
register: cluster_check
|
|
|
|
- name: d_ocean | k8s | does k8s cluster exist?
|
|
ansible.builtin.set_fact:
|
|
k8s_exists: "{{ cluster_check.stdout | from_json | json_query(name_query) | length >= 1 }}"
|
|
vars:
|
|
name_query: '[?name==`{{ k8s_name }}`]'
|
|
|
|
- name: d_ocean | k8s | Get information about our cluster
|
|
community.digitalocean.digital_ocean_kubernetes_info:
|
|
oauth_token: "{{ lookup('ansible.builtin.env', 'DO_API_TOKEN') }}"
|
|
name: "{{ k8s_name }}"
|
|
return_kubeconfig: true
|
|
register: my_cluster
|
|
when: k8s_exists
|
|
|
|
- name: d_ocean | registry | remove kubectl config
|
|
ansible.builtin.command: doctl k8s cluster kubeconfig remove {{ my_cluster.data.id }}
|
|
when: configure_kubectl and k8s_exists
|
|
changed_when: true
|
|
|
|
- name: d_ocean | k8s | destroy a kubernetes cluster named {{ k8s_name }}
|
|
ansible.builtin.command: doctl kubernetes cluster delete {{ k8s_name }} -f --dangerous
|
|
when: k8s_exists
|
|
changed_when: true
|
|
|
|
# DNS
|
|
# ===========================================
|
|
- name: d_ocean | dns | gather facts about dns
|
|
ansible.builtin.command: doctl compute domain records list {{ domain }} -o json --format ID,Name --no-header
|
|
register: domain_info
|
|
changed_when: true
|
|
|
|
- name: d_ocean | dns | remove the dns for browsertrix
|
|
ansible.builtin.command: "doctl compute domain records rm {{ domain }} {{ item }} -f"
|
|
loop: "{{ domain_info.stdout | from_json | json_query(name_query) }}"
|
|
vars:
|
|
name_query: '[?name.contains(@,`{{ subdomain }}`)].id'
|
|
changed_when: true
|
|
register: remove_dns
|
|
|
|
# Registry
|
|
# ===========================================
|
|
- name: d_ocean | registry | remove registry
|
|
ansible.builtin.command: doctl registry delete -f
|
|
when: use_do_registry
|
|
changed_when: true
|
|
|
|
# Packages
|
|
# ===========================================
|
|
- name: d_ocean | uninstall | remove installed applications
|
|
ansible.builtin.package:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- mongodump
|
|
- s3cmd
|
|
- doctl
|
|
- helm
|