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