chore: imported ansible into monorepo
This commit is contained in:
parent
6a5c4f586c
commit
c89ef9ff52
9 changed files with 202 additions and 0 deletions
5
ansible/group_vars/all.yaml
Normal file
5
ansible/group_vars/all.yaml
Normal 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
21
ansible/inventory.yaml
Normal 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
|
||||||
|
|
20
ansible/playbooks/backup_mongo.yaml
Normal file
20
ansible/playbooks/backup_mongo.yaml
Normal 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
|
||||||
|
|
||||||
|
|
10
ansible/playbooks/clone_production_database.yaml
Normal file
10
ansible/playbooks/clone_production_database.yaml
Normal 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.*'"
|
||||||
|
|
||||||
|
|
9
ansible/playbooks/files/fs_backup_mongo.sh
Executable file
9
ansible/playbooks/files/fs_backup_mongo.sh
Executable 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
|
85
ansible/playbooks/files/migrate_data.js
Normal file
85
ansible/playbooks/files/migrate_data.js
Normal 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 */
|
11
ansible/playbooks/install_updates.yaml
Normal file
11
ansible/playbooks/install_updates.yaml
Normal 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
|
||||||
|
|
22
ansible/playbooks/migrate_data_for_2.7.yaml
Normal file
22
ansible/playbooks/migrate_data_for_2.7.yaml
Normal 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"
|
||||||
|
|
||||||
|
|
19
ansible/playbooks/schedule_daily_mongo_backup.yaml
Normal file
19
ansible/playbooks/schedule_daily_mongo_backup.yaml
Normal 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 }}"
|
Loading…
Add table
Add a link
Reference in a new issue