diff options
author | Milo Casagrande <milo.casagrande@linaro.org> | 2014-11-03 18:08:02 +0100 |
---|---|---|
committer | Milo Casagrande <milo.casagrande@linaro.org> | 2014-11-03 18:08:02 +0100 |
commit | a4f3b53db083506ecb4cf8cb8251dc3a6d1f88ae (patch) | |
tree | 27f7daf97b1d645997b5e47e156fd1e2353700bc /ansible/roles | |
parent | 749252d19c3bcbd3c2e235ef7637630f5b17e3ab (diff) |
ansible: Complete backup script.
Change-Id: I409393355b72055af4b3ef463fbf1c027022bb78
Diffstat (limited to 'ansible/roles')
-rw-r--r-- | ansible/roles/db-backup/files/mongodb-backup.sh | 15 | ||||
-rw-r--r-- | ansible/roles/db-backup/tasks/main.yml | 40 | ||||
-rw-r--r-- | ansible/roles/db-backup/templates/mongodb-backup.sh | 19 | ||||
-rw-r--r-- | ansible/roles/db-backup/templates/s3cfg | 40 |
4 files changed, 95 insertions, 19 deletions
diff --git a/ansible/roles/db-backup/files/mongodb-backup.sh b/ansible/roles/db-backup/files/mongodb-backup.sh deleted file mode 100644 index de7c5be..0000000 --- a/ansible/roles/db-backup/files/mongodb-backup.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -MONGODUMP_PATH=`which mongodump` -TIMESTAMP=`date +%F-%H%M` -S3_BUCKET_NAME="bucketname" -S3_BUCKET_PATH="mongodb-backups" - -$MONGODUMP_PATH --host $HOST -o /tmp/mongodump - -mv /tmp/mongodump /tmp/mongodump-$TIMESTAMP -tar cf /tmp/mongodump-$TIMESTAMP.tar /tmp/mongodump-$TIMESTAMP - -# Upload to S3 -# Need to configure s3cmd before. -s3cmd put /tmp/mongodump-$TIMESTAMP.tar s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodump-$TIMESTAMP.tar diff --git a/ansible/roles/db-backup/tasks/main.yml b/ansible/roles/db-backup/tasks/main.yml index 93a288d..1ac7724 100644 --- a/ansible/roles/db-backup/tasks/main.yml +++ b/ansible/roles/db-backup/tasks/main.yml @@ -5,14 +5,46 @@ update_cache=yes with_items: - s3cmd + - xz-utils tags: - backup +- name: Create dedicated user + user: name=kernelci + state=present + system=yes + home=/home/kernelci + tags: + - backup + +- name: Copy s3cmd config file + template: src=s3cfg + dest=/home/kernelci/.s3cfg + owner=kernelci + group=nogroup + mode=0444 + tags: + - backup + - secrets + - name: Copy backup script - copy: src=mongodb-backup.sh - dest=/root/mongodb-backup.sh - owner=root - group=root + template: src=mongodb-backup.sh + dest=/home/kernelci/mongodb-backup.sh + owner=kernelci + group=nogroup mode=0554 tags: - backup + +- name: Set up cronjob for backup + cron: name="Backup Kernel CI MongoDB" + user=kernelci + state=present + job="/home/kernelci/mongodb-backup.sh" + cron_file=kernelci-backup + weekday=1-6 + hour=4 + minute=5 + tags: + - backup + - cron diff --git a/ansible/roles/db-backup/templates/mongodb-backup.sh b/ansible/roles/db-backup/templates/mongodb-backup.sh new file mode 100644 index 0000000..33e3be2 --- /dev/null +++ b/ansible/roles/db-backup/templates/mongodb-backup.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +MONGODUMP_PATH=`which mongodump` +S3CMD=`which s3cmd` +TIMESTAMP=`date --utc +%FT%TZ` +S3_BUCKET_NAME="{{ bucket_name }}" +S3_BUCKET_PATH="{{ bucket_backup_dir }}" + +echo "Dumping mongodb database..." +$MONGODUMP_PATH -d kernel-ci --dumpDbUsersAndRoles -o /tmp/mongodump > /dev/null + +echo "Creating compressed archive..." +mv /tmp/mongodump /tmp/mongodump-$TIMESTAMP +tar cfP /tmp/mongodump-$TIMESTAMP.tar /tmp/mongodump-$TIMESTAMP/ +xz -7 /tmp/mongodump-$TIMESTAMP.tar && rm -rf /tmp/mongodump-$TIMESTAMP/ + +# Upload to S3 +# Need to configure s3cmd before. +$S3CMD put /tmp/mongodump-$TIMESTAMP.tar.xz s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodump-$TIMESTAMP.tar.xz && rm -rf /tmp/mongodump-$TIMESTAMP.tar.xz diff --git a/ansible/roles/db-backup/templates/s3cfg b/ansible/roles/db-backup/templates/s3cfg new file mode 100644 index 0000000..046d538 --- /dev/null +++ b/ansible/roles/db-backup/templates/s3cfg @@ -0,0 +1,40 @@ +[default] +access_key = {{ s3_access_key }} +secret_key = {{ s3_secret_key }} +bucket_location = US +cloudfront_host = cloudfront.amazonaws.com +default_mime_type = binary/octet-stream +delay_updates = False +delete_after = False +delete_after_fetch = False +delete_removed = False +dry_run = False +enable_multipart = True +encoding = UTF-8 +encrypt = False +follow_symlinks = False +force = False +get_continue = False +guess_mime_type = True +host_base = s3.amazonaws.com +host_bucket = %(bucket)s.s3.amazonaws.com +human_readable_sizes = False +ignore_failed_copy = False +list_md5 = False +max_delete = -1 +multipart_chunk_size_mb = 15 +preserve_attrs = True +progress_meter = False +put_continue = False +recursive = False +recv_chunk = 4096 +reduced_redundancy = False +restore_days = 1 +send_chunk = 4096 +server_side_encryption = False +simpledb_host = sdb.amazonaws.com +skip_existing = False +socket_timeout = 300 +use_https = False +use_mime_magic = True +verbosity = WARNING |