2014-09-18

Rsync iterado, integración con EC2

Ayer hice un script para coordinar directorios con rsync. Hoy lo integré con EC2, usando boto. Así no tengo que andar buscando el nombre de dns de la instancia cada vez. Cambien las constantes que aparecen arriba y úsenlo a piaccere. Para que sea usable tienen que poner la clave para loguearse en la instancia en su agente de SSH.

#!/usr/bin/env python

import subprocess
import sys
import time
import boto
import getpass

AKI = "AKIVAUNACCESSKEY"
USER = "ubuntu"
INAME = "INSTANCENAME"
TARGET = "TARGET_DIR"
SOURCE = "SOURCE_DIR"

def main():
    sak = getpass.getpass("Enter secret access key:")
    ec2 = boto.connect_ec2( AKI, sak )
    dns_name = ec2.get_only_instances(filters={"tag:Name":INAME})[0].dns_name
    while True:
        try:
            subprocess.check_call([
                "rsync",
                "-z",
                "-r",
                "--delete",
                "--exclude=*.pyc",
                "--exclude=*.log",
                SOURCE,
                "%s@%s:%s" % (USER, dns_name, TARGET)
            ])
            print ".",
            sys.stdout.flush()
            time.sleep(1)
        except subprocess.CalledProcessError, e:
            if e.returncode in [10,11,12,14,22,23,24,30,35]: # See http://wpkg.org/Rsync_exit_codes
                print "R",
                sys.stdout.flush()
            else:
                raise

if __name__ == '__main__':
    main()


Espero que les sirva,
Aureliano.

No hay comentarios.: