コード例 #1
0
def create_autoscaling_group(autoscale, cluster_name, master_node, opts, slave_group):
    lclist = autoscale.get_all_launch_configurations(
        names=[cluster_name + "-lc"])
    if lclist:
        lc = lclist[0]
    else:
        lc = LaunchConfiguration(
            name=cluster_name + "-lc",
            image_id=opts.ami,
            key_name=opts.key_pair,
            security_groups=[slave_group.id],
            instance_type=opts.instance_type,
            user_data="SPARK_MASTER=" + master_node.private_dns_name + "\n",
            instance_monitoring=True,
            spot_price=opts.spot_price)
        autoscale.create_launch_configuration(lc)
    aglist = autoscale.get_all_groups(names=[cluster_name + "-ag"])
    if aglist:
        ag = aglist[0]
    else:
        ag = AutoScalingGroup(group_name=cluster_name + "-ag",
                              launch_config=lc,
                              min_size=2,
                              max_size=8,
                              connection=autoscale,
                              vpc_zone_identifier=opts.subnet_id,
                              availability_zones=[opts.zone])
        autoscale.create_auto_scaling_group(ag)
    as_tag = boto.ec2.autoscale.Tag(key='Name',
                                    value=cluster_name + '-worker',
                                    propagate_at_launch=True,
                                    resource_id=cluster_name + "-ag")
    autoscale.create_or_update_tags([as_tag])
コード例 #2
0
def create_autoscaling_group(autoscale, cluster_name, master_node, opts,
                             slave_group):
    lclist = autoscale.get_all_launch_configurations(
        names=[cluster_name + "-lc"])
    if lclist:
        lc = lclist[0]
    else:
        lc = LaunchConfiguration(name=cluster_name + "-lc",
                                 image_id=opts.ami,
                                 key_name=opts.key_pair,
                                 security_groups=[slave_group.id],
                                 instance_type=opts.instance_type,
                                 user_data="SPARK_MASTER=" +
                                 master_node.private_dns_name + "\n",
                                 instance_monitoring=True,
                                 spot_price=opts.max_spot_price)
        autoscale.create_launch_configuration(lc)
    aglist = autoscale.get_all_groups(names=[cluster_name + "-ag"])
    if aglist:
        ag = aglist[0]
    else:
        ag = AutoScalingGroup(group_name=cluster_name + "-ag",
                              launch_config=lc,
                              min_size=opts.min_instances,
                              max_size=opts.max_instances,
                              connection=autoscale,
                              vpc_zone_identifier=opts.subnet_id,
                              availability_zones=[opts.zone])
        autoscale.create_auto_scaling_group(ag)
    as_tag = boto.ec2.autoscale.Tag(key='Name',
                                    value=cluster_name + '-worker',
                                    propagate_at_launch=True,
                                    resource_id=cluster_name + "-ag")
    autoscale.create_or_update_tags([as_tag])
コード例 #3
0
ファイル: tasks.py プロジェクト: mozilla/build-proxxy
def update_asg(ami, name='proxxy', region='us-east-1'):
    """Update Proxxy autoscaling group with a fresh AMI"""

    if ami is None:
        print "AMI not specified"
        exit(1)

    ec2 = boto.ec2.connect_to_region(region)
    autoscale = boto.ec2.autoscale.connect_to_region(region, use_block_device_types=True)

    # get AMI metadata
    ami = ec2.get_all_images(image_ids=[ami])[0]
    new_launch_config_name = 'proxxy-'+ami.id

    # get autoscaling group
    autoscale_group = autoscale.get_all_groups(names=[name])[0]

    # get old launch configuration
    old_launch_config_name = autoscale_group.launch_config_name
    if old_launch_config_name == new_launch_config_name:
        print "Autoscale Group '%s' already uses launch config '%s'" % (name, new_launch_config_name)
        exit(0)

    old_launch_config = autoscale.get_all_launch_configurations(names=[old_launch_config_name])[0]
    print "Old Launch Configuration: %s" % old_launch_config

    # create new launch configuration based on the old one
    new_launch_config = _copy_launch_config(old_launch_config)
    new_launch_config.name = new_launch_config_name
    new_launch_config.image_id = ami.id
    autoscale.create_launch_configuration(new_launch_config)
    print "New Launch Configuration: %s" % new_launch_config

    # switch autoscaling group from old LC to new LC
    autoscale_group.launch_config_name = new_launch_config_name
    result = autoscale_group.update()
    print vars(result)

    # delete old launch configuration
    old_launch_config.delete()

    print "Done"
コード例 #4
0
except IndexError:
  print ("Couldn't found AutoScaling Launch Configuration")
  sys.exit(1)

try:
  as_group = autoscale.get_all_groups(names=[args.autoscale_group_name])[0]
except IndexError:
  print("Couldn't found autoscale group '{0}'".format(args.autoscale_group_name))
  sys.exit(1)

as_launch_config_tmp = copy(as_launch_config)
as_launch_config_new = copy(as_launch_config)

as_launch_config_tmp.name = "{0}-tmp".format(as_launch_config.name)
print("Creating temporary AutoScaling Launch Config named: {0}".format(as_launch_config_tmp.name))
autoscale.create_launch_configuration(as_launch_config_tmp)

print("Setting AutoScaling Group Launch Configuration to {0}".format(as_launch_config_tmp.name))
setattr(as_group, 'launch_config_name', as_launch_config_tmp.name)
as_group.update()

# Delete old AutoScale Launch Configuration
print("Deleting old AutoScaling Launch Config named: {0}".format(as_launch_config.name))
as_launch_config.delete()

if args.image_id != None and as_launch_config_new.image_id != args.image_id:
  as_launch_config_new.image_id = args.image_id
if args.instance_type != None and as_launch_config_new.instance_type != args.instance_type:
  as_launch_config_new.instance_type = args.instance_type

autoscale.create_launch_configuration(as_launch_config_new)
コード例 #5
0
ファイル: elb2.py プロジェクト: JianJiao/p2.3
hc=HealthCheck(interval=5,healthy_threshold=2,timeout=2,unhealthy_threshold=2,target='HTTP:80/heartbeat?username=jianj')
zones=['us-east-1a']
ports=[(80,80,'http')]
lb=elb.create_load_balancer('jianLb',zones,ports)
lb.configure_health_check(hc)
lbdns=lb.dns_name
print 'load banlancer dns name:%s'%(lbdns)

#Create a Launch Configuration for the instances that will become part of the auto scaling group, with the following parameters:
#AMI ID: ami-ec14ba84
#Instance Type: m3.medium
#Detailed Monitoring: enabled
autoscale=boto.ec2.autoscale.connect_to_region('us-east-1') #the client
#lc
lc=LaunchConfiguration(name='jianLaunchConfig',image_id='ami-3c8f3a54',key_name='jj',security_groups=['http'],instance_type='m3.medium',instance_monitoring=True)
autoscale.create_launch_configuration(lc)
print 'launch cofig created'
#ag
ag=AutoScalingGroup(group_name='jianGroup',load_balancers=['jianLb'],availability_zones=['us-east-1a'],launch_config=lc,min_size=2,max_size=4,connection=autoscale)
autoscale.create_auto_scaling_group(ag)
ag.put_notification_configuration(topic="arn:aws:sns:us-east-1:683895670525:launch",notification_types=['autoscaling:EC2_INSTANCE_LAUNCH', 'autoscaling:EC2_INSTANCE_LAUNCH_ERROR'])
ag.put_notification_configuration(topic="arn:aws:sns:us-east-1:683895670525:terminate",notification_types=['autoscaling:EC2_INSTANCE_TERMINATE','autoscaling:EC2_INSTANCE_TERMINATE_ERROR'])
print 'aotuscaling group createc'
#scaling policy
scale_up_policy=ScalingPolicy(name='jianScaleUp',adjustment_type='ChangeInCapacity',as_name='jianGroup',scaling_adjustment=2,cooldown=60)
scale_down_policy=ScalingPolicy(name='jianScaleDown',adjustment_type='ChangeInCapacity',as_name='jianGroup',scaling_adjustment=-2,cooldown=120)
#submit to aws
autoscale.create_scaling_policy(scale_up_policy)
autoscale.create_scaling_policy(scale_down_policy)
#request back again
scale_up_policy=autoscale.get_all_policies(as_group='jianGroup',policy_names=['jianScaleUp'])[0]
コード例 #6
0
    sys.exit(1)

try:
    as_group = autoscale.get_all_groups(names=[args.autoscale_group_name])[0]
except IndexError:
    print("Couldn't found autoscale group '{0}'".format(
        args.autoscale_group_name))
    sys.exit(1)

as_launch_config_tmp = copy(as_launch_config)
as_launch_config_new = copy(as_launch_config)

as_launch_config_tmp.name = "{0}-tmp".format(as_launch_config.name)
print("Creating temporary AutoScaling Launch Config named: {0}".format(
    as_launch_config_tmp.name))
autoscale.create_launch_configuration(as_launch_config_tmp)

print("Setting AutoScaling Group Launch Configuration to {0}".format(
    as_launch_config_tmp.name))
setattr(as_group, 'launch_config_name', as_launch_config_tmp.name)
as_group.update()

# Delete old AutoScale Launch Configuration
print("Deleting old AutoScaling Launch Config named: {0}".format(
    as_launch_config.name))
as_launch_config.delete()

if args.image_id != None and as_launch_config_new.image_id != args.image_id:
    as_launch_config_new.image_id = args.image_id
if args.instance_type != None and as_launch_config_new.instance_type != args.instance_type:
    as_launch_config_new.instance_type = args.instance_type