diff --git a/roles/slurm_sql_bk/defaults/main.yml b/roles/slurm_sql_bk/defaults/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..efd656281b7008f562b3accfcb24d3838bbde76b --- /dev/null +++ b/roles/slurm_sql_bk/defaults/main.yml @@ -0,0 +1,6 @@ +--- +# for slurm mysql backup +SQL_BK_DIR: "/mnt/db_backup" +SQL_BK_DEST_HOST: "m3-mgmt1" +SQL_BK_DEST_DIR: "/mnt/home/slurm_db_backup" +SQL_USER: "slurmsqlbk" diff --git a/roles/slurm_sql_bk/tasks/main.yml b/roles/slurm_sql_bk/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..1bfd3276eaa3bf0ec48d495b97ee3b4968c4cd13 --- /dev/null +++ b/roles/slurm_sql_bk/tasks/main.yml @@ -0,0 +1,40 @@ +--- +# this code is for the sql server only + - name: template sql backupscript to /etc/cron.daily + template: src="backup_mysql_for_slurm.sh.j2" dest="/etc/cron.daily/backup_mysql_for_slurm.sh" mode="700" + sudo: true + when: server == 'True' + - name: Create directory {{ SQL_BK_DIR }} + file: path={{ SQL_BK_DIR }} state=directory + sudo: true + when: server == 'True' + - name: template mysql config file to server + template: src="mysql.conf.j2" dest="{{ SQL_BK_DIR }}/mysql.conf" mode="600" + sudo: true + when: server == 'True' + - name: copy ssh pub key to .ssh if it does not exist already + copy: src="id_rsa.pub" dest="/root/.ssh/id_rsa.pub" + sudo: true + when: server == 'True' + - name: copy ssh private key to .ssh if it does not exist already + copy: src="id_rsa" dest="/root/.ssh/id_rsa" mode="600" + sudo: true + when: server == 'True' + +#this code is for the Destination Node only + - name: create dummy user account + user: name="{{ SQL_USER }}" comment="Account for scp of slurm sql backups" + sudo: true + when: server == 'False' + - name: Add MySQL server ssh key to authorised_files on management nodes" + authorized_key: user="{{ SQL_USER }}" state=present key="{{ lookup('file', 'id_rsa.pub') }}" #" + sudo: true + when: server == 'False' + - name: ensure the dest directory exists (for backups to be copied too) + file: path={{ SQL_BK_DEST_DIR }} state=directory owner={{ SQL_USER }} + sudo: true + when: server == 'False' + - name: setup cron job to delete old slurm logs + template: src="delete_old_mysql_bk.sh.j2" dest="/etc/cron.daily/delete_old_mysql_bk.sh" mode="700" + sudo: true + when: server == 'False' diff --git a/roles/slurm_sql_bk/templates/backup_mysql_for_slurm.sh.j2 b/roles/slurm_sql_bk/templates/backup_mysql_for_slurm.sh.j2 new file mode 100644 index 0000000000000000000000000000000000000000..8b5c9cdcfb3a1629291d5c1fc1c20ed7c502a3a9 --- /dev/null +++ b/roles/slurm_sql_bk/templates/backup_mysql_for_slurm.sh.j2 @@ -0,0 +1,17 @@ +#!/bin/sh +# +# mysql dump for slurm. +# S.Michnowicz +# 20/Jan/2016 +# + +TIME=$(date '+%y-%m-%d') +DIR={{ SQL_BK_DIR }} +NAME="$DIR/mysql_dump_20${TIME}.sql" + +sudo mysqldump --defaults-file=$DIR/mysql.conf slurm_acct_db > $NAME +sudo chmod go-r $NAME +sudo gzip -f $NAME +#scp file to dummy user @ Destination Node and Directory +scp ${NAME}.gz {{ SQL_USER }}@{{ SQL_BK_DEST_HOST }}:{{ SQL_BK_DEST_DIR }} +rm -f ${NAME}.gz diff --git a/roles/slurm_sql_bk/templates/delete_old_mysql_bk.sh.j2 b/roles/slurm_sql_bk/templates/delete_old_mysql_bk.sh.j2 new file mode 100644 index 0000000000000000000000000000000000000000..6f012295891ba37724ee3dc8076b2e6af451c4d9 --- /dev/null +++ b/roles/slurm_sql_bk/templates/delete_old_mysql_bk.sh.j2 @@ -0,0 +1,11 @@ +#!/bin/sh +# +# delete old backups from slurm mysql +# S.Michnowicz +# + +# 2 day timeframe specified by -mtime +2 +# also includes email check +#find {{ SQL_BK_DEST_DIR }} -type f -mtime +2 -name 'mysql_dump_*.gz' -execdir mail -s "Deleting {}" simon.michnowicz@monash.edu < /dev/null \; -execdir rm -f {} \; +find {{ SQL_BK_DEST_DIR }} -type f -mtime +7 -name 'mysql_dump_*.gz' -execdir rm -f {} \; + diff --git a/roles/slurm_sql_bk/templates/mysql.conf.j2 b/roles/slurm_sql_bk/templates/mysql.conf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..ea91192ca855a9b218f9714654ca91f14e58ab84 --- /dev/null +++ b/roles/slurm_sql_bk/templates/mysql.conf.j2 @@ -0,0 +1,3 @@ +[client] +password="{{ sqlrootPasswd }}" +user=root