diff --git a/roles/slurm_sql_bk/tasks/main.yml b/roles/slurm_sql_bk/tasks/main.yml index 1bfd3276eaa3bf0ec48d495b97ee3b4968c4cd13..4c6e0b7e3619e896a8bf3a186b954ced1c5af441 100644 --- a/roles/slurm_sql_bk/tasks/main.yml +++ b/roles/slurm_sql_bk/tasks/main.yml @@ -1,40 +1,67 @@ --- -# 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' + # + #first generate ssh keys Gif the variable "create_key" is defined. + # + - name: delete any existing local private key + local_action: command rm -f ./slm_db_backup + when: create_key is defined and create_key=="True" + - name: delete any existing local public keys + local_action: command rm -f ./slm_db_backup.pub + when: create_key is defined and create_key=="True" + - name: generate ssh keys if necessary + #this command will create a two files "slm_db_backup" and "slm_db_backup.pub" + local_action: command ssh-keygen -t rsa -f slm_db_backup -P "" + when: create_key is defined and create_key=="True" + - name: copy private key to management node + copy: + src: "./slm_db_backup" + dest: "/root/.ssh" + owner: root + group: root + mode: '600' + become: True + become_user: root + when: create_key is defined and create_key=="True" + - name: copy public key to authorised key file of backup volume machine + local_action: command ssh-copy-id -i ./slm_db_backup.pub {{ SQL_BK_DEST_HOST }} + when: create_key is defined and create_key=="True" + # + # now setup cronjob on management node + # + - name: ensure {{ MGMT_BIN_DIR }} exists + file: + path: "{{ MGMT_BIN_DIR }}" + state: directory + become: true + become_user: root + - name: "template sql backupscript to {{ MGMT_BIN_DIR }}" + template: src="backup_mysql_for_slurm.sh.j2" dest="{{ MGMT_BIN_DIR }}/backup_mysql_for_slurm.sh" mode="700" + become: true + become_user: root + - name: Make a daily crontab entry + cron: + name: "Backup of MySQL Database for Slurm" + job: "{{ MGMT_BIN_DIR }}/backup_mysql_for_slurm.sh" + hour: 23 + minute: 55 + become: true + become_user: root + - name: Create directory {{ SQL_BK_DATA_DIR }} + file: path={{ SQL_BK_DATA_DIR }} state=directory + become: true + become_user: root - 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' + template: src="mysql.conf.j2" dest="{{ MGMT_BIN_DIR }}/mysql.conf" mode="600" + become: true + become_user: root + # + # template delete file to localhost.then copy to remote host + # + - name: delete local del file + local_action: command rm -f ./delete_old_mysql_bk.sh + - name: template delete script to local dir + local_action: template src=delete_old_mysql_bk.sh.j2 dest=./delete_old_mysql_bk.sh + - name: copy backup script to server ec2-user@{{ SQL_BK_DEST_HOST }} + local_action: command scp -i ./slm_db_backup ./delete_old_mysql_bk.sh "ec2-user@{{ SQL_BK_DEST_HOST }}:" + - name: insert delete cron job entry on remote server + local_action: command ssh ec2-user@{{ SQL_BK_DEST_HOST }} "{ crontab -l ; echo '#delete old slurm backups' ; echo '00 23 * * * /home/ec2-user/backup_mysql_for_slurm.sh' ; } | crontab - "