Пример #1
0
def main(*args):
    """ Create an auto-scaling group and launch instances. 
    """
    # Parse command line options
    parser = argparse.ArgumentParser(description='Create ASG')
    parser.add_argument('-c', '--config_name', action="store", required=True)

    args, unknown = parser.parse_known_args()
    config_name = args.config_name

    # Read INI configuration file
    config = ConfigParser.SafeConfigParser()
    default_file = awsadmin_cfg.AWS_CONF_DIR + '/default'
    config_file = awsadmin_cfg.AWS_CONF_DIR + '/' + config_name
    if not config.read([default_file, config_file]):
        print "Configure file %s doesn't exist" % config_file
        sys.exit(1)
    if not config.has_section(config_name):
        print "No such configuration section: %s" % config_name
        sys.exit(1)

    # Get launch configuration
    try:
        ec2_type = config.get(config_name, 'ec2_type')
        ec2_role = config.get(config_name, 'ec2_role')
        image_id = config.get(config_name, 'image_id')
        keypair = config.get(config_name, 'keypair')
        version = config.get(config_name, 'version')
        launch_config_name = config.get(config_name, 'launch_config_name')
        security_group = config.get(config_name, 'security_group')
        userdata = config.get(config_name, 'userdata')
        block_device = config.get(config_name, 'block_device')
    except ConfigParser.NoOptionError, e:
        sys_exit(1,`e`)
Пример #2
0
def main():
    # Scripts directory for auto-generated help
    command_dir = paths.scripts
    try:
        opts, args = getopt.getopt(sys.argv[1:], '')
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #3
0
def main():
    # Scripts directory for auto-generated help
    command_dir = paths.scripts
    try:
        opts, args = getopt.getopt(sys.argv[1:],'')
    except getopt.error, msg:
        sys_exit(1,msg)
Пример #4
0
def main(*args):
    """ Create AWS AMI image
    """
    # Parse command line options
    parser = argparse.ArgumentParser(description='Create AWS AMI')
    parser.add_argument('-c', '--config_name', action="store", required=True)
    parser.add_argument('-i', '--instance_id', action="store", required=True)
    parser.add_argument('-r', '--reboot', action="store_true", default=False,
                        help="Reboot before making image, default is no reboot")

    args, unknown = parser.parse_known_args()
    config_name = args.config_name

    # Read INI configuration file
    config = ConfigParser.SafeConfigParser()
    config_file = awsadmin_cfg.AWS_CONF_DIR + '/' + config_name
    if not config.read([config_file]):
        print "Configure file %s doesn't exist" % config_file
        sys.exit(1)
    if not config.has_section(config_name):
        print "No such configuration section: %s" % config_name
        sys.exit(1)

    instance_id = args.instance_id
    reboot = '--no-reboot'
    if args.reboot:
        reboot = '--reboot'

    # Get launch configuration
    try:
        ec2_type = config.get(config_name, 'ec2_type')
    except ConfigParser.NoSectionError, e:
        sys_exit(1,`e`)
Пример #5
0
def main(*args):
    """ Deregister an AWS AMI image
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'ha:', ['help', 'ami-id='])
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #6
0
def main(*args):
    """ Print a load-balancer's information
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hn:', ['help', 'name='])
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #7
0
def main(*args):
    """ Deregister an AWS AMI image
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'ha:', ['help','ami-id='] )
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #8
0
def main(*args):
    """ Print a load-balancer's information
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hn:', ['help','name='] )
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #9
0
def main(*args):
    """ Set auto-scaling group's desired capacity.
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config-name='] )
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #10
0
def main(*args):
    """ Recycle all EC2 instances in auto-scaling group
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config_name='] )
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #11
0
def main(*args):
    """ Double the capacity of an auto-scaling group.
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config-name='] )
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #12
0
def main(*args):
    """ Set auto-scaling group's desired capacity.
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config-name='])
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #13
0
def main(*args):
    """ Double the capacity of an auto-scaling group.
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config-name='])
    except getopt.error, msg:
        sys_exit(1, msg)
Пример #14
0
def main(*args):
    """ Create new launch configuation and update an auto-scaling group's 
        configuration.
    """

    # Parse command line options
    parser = argparse.ArgumentParser(description='Update launch configuration')
    parser.add_argument('-c', '--config_name', action="store", required=True)
    parser.add_argument('-t', '--ec2-type', action="store", required=False,
                        help='An ec2 type. If given, override the default configuration. Useful for testing.')

    args, unknown = parser.parse_known_args()

    config_name = args.config_name

    # Read INI configuration file
    config = ConfigParser.SafeConfigParser()
    config_file = awsadmin_cfg.AWS_CONF_DIR + '/' + config_name
    if not config.read([config_file]):
        print "Configure file %s doesn't exist" % config_file
        sys.exit(1)
    if not config.has_section(config_name):
        print "No such configuration section: %s" % config_name
        sys.exit(1)

    if args.ec2_type:
        ec2_type = args.ec2_type
    else:
       ec2_type = config.get(config_name, 'ec2_type')
   
    # Generate a new lc file
    launch_config_name = "%s_%s_%s" % (config_name,ec2_type,(time.strftime("%Y-%m-%d-%H%M")))

    try:
        launch_config_name = config.get(config_name, 'launch_config_name')
        ec2_role = config.get(config_name, 'ec2_role')
        image_id = config.get(config_name, 'image_id')
        keypair = config.get(config_name, 'keypair')
        security_group = config.get(config_name, 'security_group')
        userdata = config.get(config_name, 'userdata')
        block_device = config.get(config_name, 'block_device')
        auto_scaling_group_name = config.get(config_name, 'auto_scaling_group_name')
    except ConfigParser.NoSectionError, e:
        sys_exit(1,`e`)
Пример #15
0
def main(*args):
    """ Describe auto-scaling group
    """
    # Parse command line options
    parser = argparse.ArgumentParser(description='Describe AWS ASG')
    parser.add_argument('-c', '--config_name', action="store", required=True)

    args, unknown = parser.parse_known_args()
    config_name = args.config_name

    # Read INI configuration file
    config = ConfigParser.SafeConfigParser()
    config_file = awsadmin_cfg.AWS_CONF_DIR + '/' + config_name
    if not config.read([config_file]):
        print "Configure file %s doesn't exist" % config_file
        sys.exit(1)
    if not config.has_section(config_name):
        print "No such configuration section: %s" % config_name
        sys.exit(1)

    try:
        auto_scaling_group_name = config.get(config_name, 'auto_scaling_group_name')
    except ConfigParser.NoOptionError, e:
        sys_exit(1,`e`)
Пример #16
0
def main(*args):
    """ Recycle all EC2 instances in auto-scaling group
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hc:', ['help', 'config_name='] )
    except getopt.error, msg:
        sys_exit(1, msg)

    config_name=''
    # Process options
    for option, arg in opts:
        if option in ('-c', '--config_name'):
            config_name=(arg)
        elif option in ('-h', '--help'):
            sys_exit(0,__doc__)

    if not config_name:
        sys_exit(1,"Configuration name is required")

    # Read INI configuration file
    config = ConfigParser.ConfigParser()
    try:
        config.read(awsadmin_cfg.AMI_CONF_INI)
    except AttributeError, e:
        sys_exit(1,e)
   
    # Get launch configuration
    try:
        ec2_type = config.get(config_name, 'ec2_type')
    except ConfigParser.NoSectionError, e:
Пример #17
0
def main(*args):
    """ Deregister an AWS AMI image
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'ha:', ['help', 'ami-id='])
    except getopt.error, msg:
        sys_exit(1, msg)

    ami_id = ''
    # Process options
    for option, arg in opts:
        if option in ('-a', '--ami-id'):
            ami_id = (arg)
        elif option in ('-h', '--help'):
            sys_exit(0, __doc__)

    if not ami_id:
        sys_exit(1, "AMI Id is required.")

    aws_cmd = ' '.join(['aws ec2 deregister-image --image-id', ami_id])
    (status, output) = commands.getstatusoutput(aws_cmd)
    print output
    sys.exit(0)


# Only execute the code when it's called as a script, not just imported.
if __name__ == '__main__':
    main(*sys.argv[1:])
Пример #18
0
                docstring += "%-20s %s" % (cmd.replace('_','-'), m.short_desc()) + '\n'
        except StandardError,e:
            pass
            
    return docstring

def main():
    # Scripts directory for auto-generated help
    command_dir = paths.scripts
    try:
        opts, args = getopt.getopt(sys.argv[1:],'')
    except getopt.error, msg:
        sys_exit(1,msg)

    if not args:
        sys_exit(0, generate_commands_list(command_dir))
    
    cmd = ''
    if args[0] == 'help':
        if args[1:]:
            cmd = args[1].lower().replace('-','_').replace('.py','')

            # Skip a few python system modules
            if cmd not in ('user', 'calendar', 'resource'):
                try:
                    m = __import__(cmd)
                    sys_exit(0, m.__doc__)
                except StandardError:
                    pass
        sys_exit(0, generate_commands_list(command_dir, cmd))
    
Пример #19
0
        sys.exit(1)

    # Get launch configuration
    try:
        ec2_type = config.get(config_name, 'ec2_type')
    except ConfigParser.NoSectionError, e:
        sys_exit(1, ` e `)

    # Get ASG configuration
    try:
        auto_scaling_group_name = config.get(config_name,
                                             'auto_scaling_group_name')
        desired_capacity = config.get(config_name, 'desired_capacity')
        elb = config.get(config_name, 'load-balancer')
    except ConfigParser.NoOptionError, e:
        sys_exit(1, e)

    # List all current instances running behind elb
    lb_cmd = ' '.join(
        ['aws elb describe-instance-health', '--load-balancer', elb])
    print "Getting old instances Id..."
    sys.stdout.flush()
    (status, output) = commands.getstatusoutput(lb_cmd)
    instance_pat = re.compile('i-\w+')
    if status != 0:
        print "ERROR in getting instances from elb " + elb
        print output
    else:
        old_instances = instance_pat.findall(output)

    # Scale out to keep service capcity while we recycle instances
Пример #20
0
    except ConfigParser.NoOptionError, e:
        elb = load_balancer = ''

    if elb:
        load_balancer = '--load-balancers ' + elb
    
    # Get ASG configuration
    try:
        auto_scaling_group_name = config.get(config_name, 'auto_scaling_group_name')
        availability_zones = config.get(config_name, 'availability_zones')
        min_size = config.get(config_name, 'min_size')
        max_size = config.get(config_name, 'max_size')
        desired_capacity = config.get(config_name, 'desired_capacity')
        tag = config.get(config_name, 'tag')
    except ConfigParser.NoOptionError, e:
        sys_exit(1,e)

    lc_cmd = ' '.join(['as-create-launch-config',launch_config_name,
                       '--image-id',image_id,'-t',ec2_type,
                       '--key',keypair,'--group',security_group,
                       '--user-data-file',userdata,
                       '--block-device-mapping',block_device,
                       '--iam-instance-profile',ec2_role])

    (status,output) = commands.getstatusoutput(lc_cmd)
    print output
    if status != 0:
        print "ERROR in creating LC" + launch_config_name
        print output
        sys.exit(1)
Пример #21
0
    """ Print a load-balancer's information
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hn:', ['help', 'name='])
    except getopt.error, msg:
        sys_exit(1, msg)

    name = ''
    instances = False
    # Process options
    for option, arg in opts:
        if option in ('-n', '--name'):
            name = (arg)
        elif option in ('-h', '--help'):
            sys_exit(0, __doc__)

    if not name:
        print "load balancer name is required."
        sys.exit(1)

    # Get load-balancer information
    elb_cmd = 'aws elb describe-load-balancers'
    exec_cmd = ' '.join(
        [elb_cmd, '--load-balancer-name', name, '--output json'])

    (status, output) = commands.getstatusoutput(exec_cmd)
    if status != 0:
        print output
        sys.exit(1)
Пример #22
0
    """ Print a load-balancer's information
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'hn:', ['help','name='] )
    except getopt.error, msg:
        sys_exit(1, msg)

    name=''
    instances = False
    # Process options
    for option, arg in opts:
        if option in ('-n', '--name'):
            name=(arg)
        elif option in ('-h', '--help'):
            sys_exit(0,__doc__)

    if not name:
        print "load balancer name is required."
        sys.exit(1)
  
    # Get load-balancer information
    elb_cmd = 'aws elb describe-load-balancers'
    exec_cmd = ' '.join([elb_cmd,'--load-balancer-name',name,
                       '--output json'])

    (status,output) = commands.getstatusoutput(exec_cmd)
    if status != 0:
        print output
        sys.exit(1)
Пример #23
0
    return "Deregister an AMI."

def main(*args):
    """ Deregister an AWS AMI image
    """
    # Parse command line options
    try:
        opts, args = getopt.getopt(args, 'ha:', ['help','ami-id='] )
    except getopt.error, msg:
        sys_exit(1, msg)

    ami_id = ''
    # Process options
    for option, arg in opts:
        if option in ('-a', '--ami-id'):
            ami_id=(arg)
        elif option in ('-h', '--help'):
            sys_exit(0,__doc__)

    if not ami_id:
        sys_exit(1,"AMI Id is required.")

    aws_cmd = ' '.join(['aws ec2 deregister-image --image-id',ami_id])
    (status,output) = commands.getstatusoutput(aws_cmd)
    print output
    sys.exit(0)
    
# Only execute the code when it's called as a script, not just imported.
if __name__ == '__main__':
    main(*sys.argv[1:])
Пример #24
0
        except StandardError, e:
            pass

    return docstring


def main():
    # Scripts directory for auto-generated help
    command_dir = paths.scripts
    try:
        opts, args = getopt.getopt(sys.argv[1:], '')
    except getopt.error, msg:
        sys_exit(1, msg)

    if not args:
        sys_exit(0, generate_commands_list(command_dir))

    cmd = ''
    if args[0] == 'help':
        if args[1:]:
            cmd = args[1].lower().replace('-', '_').replace('.py', '')

            # Skip a few python system modules
            if cmd not in ('user', 'calendar', 'resource'):
                try:
                    m = __import__(cmd)
                    sys_exit(0, m.__doc__)
                except StandardError:
                    pass
        sys_exit(0, generate_commands_list(command_dir, cmd))