Add a playbook to snapshot production koji and stand it up in staging.
This commit is contained in:
parent
b861e6b1f1
commit
55e91c3f45
1 changed files with 99 additions and 0 deletions
99
playbooks/manual/staging-sync/koji.yml
Normal file
99
playbooks/manual/staging-sync/koji.yml
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
# This playbook syncs the production koji instance with staging and manages all
|
||||||
|
# the steps we need to keep our setup intact.
|
||||||
|
#
|
||||||
|
# For a description of what we're doing, see
|
||||||
|
# https://lists.fedoraproject.org/pipermail/infrastructure/2015-June/016377.html
|
||||||
|
# For a description of the koji 'secondary volumes' feature, see
|
||||||
|
# https://lists.fedoraproject.org/pipermail/buildsys/2012-May/003892.html
|
||||||
|
# For a description of the sql migration we do, see
|
||||||
|
# https://lists.fedoraproject.org/pipermail/buildsys/2015-June/004779.html
|
||||||
|
|
||||||
|
|
||||||
|
- name: grab the latest production backup
|
||||||
|
hosts: db-koji01.phx2.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
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- fetch: src=/backups/koji-{{ansible_date_time['date']}}.dump.xz
|
||||||
|
dest=/var/tmp/prod-koji-dump/
|
||||||
|
fail_on_missing=yes
|
||||||
|
|
||||||
|
- name: sync config and sql migration script
|
||||||
|
hosts: koji-stg
|
||||||
|
user: root
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- koji_hub
|
||||||
|
|
||||||
|
- name: bring staging services down
|
||||||
|
hosts: koji-stg
|
||||||
|
user: root
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- service: name=httpd state=stopped
|
||||||
|
- service: name=kojid state=stopped
|
||||||
|
- service: name=kojira state=stopped
|
||||||
|
|
||||||
|
|
||||||
|
- name: drop and re-create the staging db entirely
|
||||||
|
hosts: db01.stg.phx2.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:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- template: src=templates/koji-reset-staging.sql dest=/var/lib/pgsql/koji-reset-staging.sql
|
||||||
|
- copy: src=/var/tmp/prod-koji-dump/db-koji01.phx2.fedoraproject.org/backups/koji-{{ansible_date_time['date']}}.dump.xz
|
||||||
|
dest=/var/tmp/koji-{{ansible_date_time['date']}}.dump.xz
|
||||||
|
owner=postgres group=postgres
|
||||||
|
- command: unxz /var/tmp/koji-{{ansible_date_time['date']}}.dump.xz
|
||||||
|
creates=/var/tmp/koji-{{ansible_date_time['date']}}.dump
|
||||||
|
- command: dropdb koji
|
||||||
|
- command: createdb -O koji koji
|
||||||
|
- name: Import the prod db. This will take quite a while. Go get a snack!
|
||||||
|
shell: cat /var/tmp/koji-{{ansible_date_time['date']}}.dump | psql koji
|
||||||
|
- name: repoint all the prod rpm entries at the secondary volume (and other stuff)
|
||||||
|
shell: psql koji < /var/lib/pgsql/koji-reset-staging.sql
|
||||||
|
|
||||||
|
# TODO -- nuke old staging content in /mnt/fedora_koji/koji/
|
||||||
|
|
||||||
|
- name: bring staging services up
|
||||||
|
hosts: koji-stg
|
||||||
|
user: root
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- service: name=httpd state=started
|
||||||
|
- service: name=kojid state=started
|
||||||
|
- service: name=kojira state=started
|
Loading…
Add table
Add a link
Reference in a new issue