aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles
diff options
context:
space:
mode:
authorMilo Casagrande <milo.casagrande@linaro.org>2014-11-03 18:08:02 +0100
committerMilo Casagrande <milo.casagrande@linaro.org>2014-11-03 18:08:02 +0100
commita4f3b53db083506ecb4cf8cb8251dc3a6d1f88ae (patch)
tree27f7daf97b1d645997b5e47e156fd1e2353700bc /ansible/roles
parent749252d19c3bcbd3c2e235ef7637630f5b17e3ab (diff)
ansible: Complete backup script.
Change-Id: I409393355b72055af4b3ef463fbf1c027022bb78
Diffstat (limited to 'ansible/roles')
-rw-r--r--ansible/roles/db-backup/files/mongodb-backup.sh15
-rw-r--r--ansible/roles/db-backup/tasks/main.yml40
-rw-r--r--ansible/roles/db-backup/templates/mongodb-backup.sh19
-rw-r--r--ansible/roles/db-backup/templates/s3cfg40
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