browsertrix/ansible/playbooks/do_teardown.yml
Ilya Kreymer b574f00d2b
Add Repository Index + Chart Rename + Docs Rename (#1708)
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>
2024-04-21 09:42:25 -07:00

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