django-fabfile 2013.08.29.2

Fabric tasks for Django and Amazon Web Services
django-fabfile is a Django app with Fabric tasks for Django and Amazon Web Services.

Required settings

Note - django_fabfile package should be listed in your path. It's already in place if your are installed it using pip install django-fabfile from http://pypi.odeskps.com/. But if you are working within repository, then:

export PYTHONPATH=< path-to-folder-with-django_fabfile-package >

in your shell.

Pre-run configuration

Django settings will be checked out if environment variable DJANGO_SETTINGS_MODULE configured properly. If not configured within Django settings, then options will be taken from ./fabfile.cfg file - copy-paste rows that should be overriden from django_fabfile/fabfile.cfg.def.

AWS IAM Policy

For using django_fabfile.backup and django_fabfile.instances Fabric tasks you need AWS account with following permissions:

 create-snapshot:

 {
 "Statement": [
 {
 "Sid": "Stmt1304003463574",
 "Action": [
 "ec2:CreateSnapshot",
 "ec2:CreateTags",
 "ec2:DescribeInstances",
 "ec2:DescribeRegions",
 "ec2:DescribeSnapshots",
 "ec2:DescribeTags",
 "ec2:DescribeVolumes"
 ],
 "Effect": "Allow",
 "Resource": "*"
 }
 ]
 }


 delete-snapshot:

 {
 "Statement": [
 {
 "Sid": "Stmt1306410750989",
 "Action": [
 "ec2:DescribeRegions",
 "ec2:DescribeSnapshots",
 "ec2:DeleteSnapshot"
 ],
 "Effect": "Allow",
 "Resource": "*"
 }
 ]
 }


 reboot-instance:

 {
 "Statement": [
 {
 "Sid": "Stmt1312204628195",
 "Action": [
 "ec2:RebootInstances"
 ],
 "Effect": "Allow",
 "Resource": "*"
 },
 {
 "Sid": "Stmt1312276311113",
 "Action": [
 "ec2:DetachVolume"
 ],
 "Effect": "Allow",
 "Resource": "*"
 }
 ]
 }


 rsync-snapshot:

 {
 "Statement": [
 {
 "Effect": "Allow",
 "Action": [
 "EC2:AttachVolume",
 "EC2:CreateKeyPair",
 "EC2:CreateVolume",
 "EC2:DeleteKeyPair",
 "EC2:DeleteVolume",
 "EC2:DescribeAvailabilityZones",
 "EC2:DescribeImages",
 "EC2:DescribeKeyPairs",
 "EC2:RunInstances",
 "EC2:TerminateInstances"
 ],
 "Resource": "*"
 }
 ]
 }


Backup script

NOTE: Instances and snaphots are filtered by tag "Earmarking" value "production". This can be configured in settings - see "Pre-run configuration" section above.

Following backup commands may be configured with crontab to run daily:

#!/bin/sh

VE=/home/backup-agent/.virtualenvs/backup

. $VE/bin/activate && \
fab -f $VE/lib/python2.6/site-packages/django_fabfile/backup.py \
 backup_instances_by_tag \
 trim_snapshots \
 rsync_region:src_region_name=us-east-1,dst_region_name=eu-west-1 \
 rsync_region:src_region_name=us-west-1,dst_region_name=eu-west-1 \
 rsync_region:src_region_name=eu-west-1,dst_region_name=us-east-1


With 30 production instances it tooks around 6 hours to replicate snapshots updates. First replication tooks much more time obviously.

last updated on:
September 18th, 2012, 17:04 GMT
price:
FREE!
homepage:
github.com
license type:
BSD License 
developed by:
Max Chervonec
category:
ROOT \ Internet \ Django Plugins
django-fabfile
Download Button

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Rate it!

Add your review!

SUBMIT