1
0
Fork 0

chore: imported ansible into monorepo

This commit is contained in:
joostdecock 2021-10-17 11:45:41 +02:00
parent 6a5c4f586c
commit c89ef9ff52
9 changed files with 202 additions and 0 deletions

View file

@ -0,0 +1,5 @@
---
ansible_ssh_private_key_file: ~/.ssh/ansibot_id_rsa
ansible_user: ansibot
tmp: /tmp/ansible
backup_dir: /fs/backup

21
ansible/inventory.yaml Normal file
View file

@ -0,0 +1,21 @@
# This is the Ansible inventory file for FreeSewing infrastructure
local:
hosts:
localhost: {}
all:
children:
main:
hosts:
backend.freesewing.org:
db: freesewing
next:
hosts:
next.backend.freesewing.org:
db: next_freesewing
2022:
hosts:
maze.backend.freesewing.org:
db: freesewing

View file

@ -0,0 +1,20 @@
---
- hosts: '!localhost'
gather_facts: false
become: true
tasks:
- name: Copy backup script to host
copy:
src: fs_backup_mongo.sh
dest: /usr/sbin
owner: root
group: root
mode: '0755'
- name: Backup mongo database
shell:
cmd: "/usr/sbin/fs_backup_mongo.sh {{ db }}"
args:
executable: /bin/bash

View file

@ -0,0 +1,10 @@
---
# Hardcoding this to prevent accidentally dropping the production database
- hosts: backend.freesewing.org
gather_facts: false
become: true
tasks:
- name: Clone production database
shell: "mongodump --archive --db=freesewing | mongorestore --archive --nsFrom='freesewing.*' --nsTo='next_freesewing.*'"

View file

@ -0,0 +1,9 @@
#!/bin/bash
date=$(date +%F)
backupDir="/fs/backup/mongo/${date}/"
[ -z "$1" ] && echo "Missing param" && exit 1
database=$1
mkdir -p $backupDir
mongodump --db $database --out $backupDir

View file

@ -0,0 +1,85 @@
/*
* This migrates 2.6 data to 2.7
*/
// The shoulderSlope measurement is now different, so we need to remove it
db.people.updateMany({}, {$unset: { 'measurements.shoulderSlope': '' }})
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.shoulderSlope': '' }})
// The seatDepth measurement is no longer used, so we remove it
db.people.updateMany({}, {$unset: { 'measurements.seatDepth': '' }})
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.seatDepth': '' }})
// The hipsToUpperLeg measurement is no longer used, so we remove it
db.people.updateMany({}, {$unset: { 'measurements.hipsToUpperLeg': '' }})
db.patterns.updateMany({}, {$unset: { 'data.settings.measurements.hipsToUpperLeg': '' }})
/* A bunch of circumference measurements have been renamed */
// ankle
db.people.updateMany({}, {$rename: {'measurements.ankleCircumference': 'measurements.ankle'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.ankleCircumference': 'data.settings.measurements.ankle'}})
// biceps
db.people.updateMany({}, {$rename: {'measurements.bicepsCircumference': 'measurements.biceps'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.bicepsCircumference': 'data.settings.measurements.biceps'}})
// chest
db.people.updateMany({}, {$rename: {'measurements.chestCircumference': 'measurements.chest'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.chestCircumference': 'data.settings.measurements.chest'}})
// head
db.people.updateMany({}, {$rename: {'measurements.headCircumference': 'measurements.head'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.headCircumference': 'data.settings.measurements.head'}})
// hips
db.people.updateMany({}, {$rename: {'measurements.hipsCircumference': 'measurements.hips'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.hipsCircumference': 'data.settings.measurements.hips'}})
// knee
db.people.updateMany({}, {$rename: {'measurements.kneeCircumference': 'measurements.knee'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.kneeCircumference': 'data.settings.measurements.knee'}})
// neck
db.people.updateMany({}, {$rename: {'measurements.neckCircumference': 'measurements.neck'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.neckCircumference': 'data.settings.measurements.neck'}})
// seat
db.people.updateMany({}, {$rename: {'measurements.seatCircumference': 'measurements.seat'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.seatCircumference': 'data.settings.measurements.seat'}})
// upperleg
db.people.updateMany({}, {$rename: {'measurements.upperLegCircumference': 'measurements.upperLeg'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.upperLegCircumference': 'data.settings.measurements.upperLeg'}})
// wrist
db.people.updateMany({}, {$rename: {'measurements.wristCircumference': 'measurements.wrist'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.wristCircumference': 'data.settings.measurements.wrist'}})
/* Natural waist is now just waist */
// Waist
db.people.updateMany({}, {$rename: {'measurements.naturalWaist': 'measurements.waist'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaist': 'data.settings.measurements.waist'}})
// WaistToFloor
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToFloor': 'measurements.waistToFloor'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToFloor': 'data.settings.measurements.waistToFloor'}})
// WaistToKnee
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToKnee': 'measurements.waistToKnee'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToKnee': 'data.settings.measurements.waistToKnee'}})
// WaistToSeat
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToSeat': 'measurements.waistToSeat'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToSeat': 'data.settings.measurements.waistToSeat'}})
// WaistToUnderbust
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToUnderbust': 'measurements.waistToUnderbust'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToUnderbust': 'data.settings.measurements.waistToUnderbust'}})
// WaistToHips
db.people.updateMany({}, {$rename: {'measurements.naturalWaistToHip': 'measurements.waistToHips'}})
db.patterns.updateMany({}, {$rename: {'data.settings.measurements.naturalWaistToHip': 'data.settings.measurements.waistToHips'}})
/* seatDepth is no longer uses */

View file

@ -0,0 +1,11 @@
---
- hosts: '!localhost'
gather_facts: false
become: true
tasks:
- name: Update all packages to their latest version
apt:
name: '*'
state: latest
update_cache: yes

View file

@ -0,0 +1,22 @@
---
# Hardcoding this to prevent accidentally migrating the production database
- hosts: next.backend.freesewing.org
gather_facts: false
become: true
tasks:
- name: Create temporary directory
file:
path: "{{tmp}}"
state: directory
mode: '0755'
- name: Copy migration file to remote host
copy:
src: migrate_data.js
dest: "{{tmp}}"
owner: root
group: root
mode: '0755'
- name: Migrate 2.6 data to 2.7
shell: "mongo next_freesewing {{tmp}}/migrate_data.js"

View file

@ -0,0 +1,19 @@
---
- hosts: '!localhost'
gather_facts: false
become: true
tasks:
- name: Copy backup script to host
copy:
src: fs_backup_mongo.sh
dest: /usr/sbin
owner: root
group: root
mode: '0755'
- name: Schedule cron job for database backup
cron:
name: "Backup mongodb {{ db }}"
minute: 25
hour: 8
job: "/usr/sbin/fs_backup_mongo.sh {{ db }}"