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
 |