Add a playbook to sync the Badges DB to staging

Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
Aurélien Bompard 2025-03-13 17:12:05 +01:00
parent 2ccdc83dce
commit a32457a7aa
No known key found for this signature in database
GPG key ID: 31584CFEB9BF64AD

View file

@ -0,0 +1,57 @@
# This playbook syncs the production badges instance with staging.
---
- name: Bring staging services down
hosts: os-control01.stg.iad2.fedoraproject.org
user: root
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- "/srv/private/ansible/vars.yml"
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
tasks:
- ansible.builtin.command: oc -n badges scale dc/frontend --replicas=0
- ansible.builtin.command: oc -n badges scale dc/consumer --replicas=0
# Here's the meaty part in the middle
- name: Drop and re-create the staging db entirely
hosts: db01.stg.iad2.fedoraproject.org
user: root
become: yes
become_user: postgres
become_method: sudo
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- "/srv/private/ansible/vars.yml"
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
handlers:
- import_tasks: "{{ handlers_path }}/restart_services.yml"
tasks:
- ansible.builtin.copy:
src: /srv/web/infra/db-dumps/{{ badges_db_name }}.dump.xz
dest: /var/tmp/{{ badges_db_name }}.dump.xz
owner: postgres
group: postgres
- ansible.builtin.command: unxz /var/tmp/{{ badges_db_name }}.dump.xz
args:
creates: /var/tmp/{{ badges_db_name }}.dump
- ansible.builtin.command: dropdb {{ badges_db_name }}
- ansible.builtin.command: createdb -O {{ tahrirDBUser }} {{ badges_db_name }}
- name: Import the prod db.
ansible.builtin.shell: cat /var/tmp/{{ badges_db_name }}.dump | psql {{ badges_db_name }}
- ansible.builtin.file: path=/var/tmp/{{ badges_db_name }}.dump state=absent
- name: rename prod users to staging users
ansible.builtin.shell: psql -v ON_ERROR_STOP=1 koji <<< "UPDATE persons SET email = REPLACE(email, '@fedoraproject.org', '@stg.fedoraproject.org')"
- name: Bring staging services up
hosts: os-control01.stg.iad2.fedoraproject.org
user: root
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- "/srv/private/ansible/vars.yml"
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
tasks:
- ansible.builtin.command: oc -n badges scale dc/frontend --replicas=1
- ansible.builtin.command: oc -n badges scale dc/consumer --replicas=1