2017-05-08 74 views
1

我一直试图使用特定标签提取自动调节组的列表。下面的脚本执行此操作。使用AWS CLI或Python增加自动调节组中实例的数量

#!/usr/bin/python 

import boto3 
import base64 
import time 

client = boto3.client('autoscaling', region_name='us-west-2') 
paginator = client.get_paginator('describe_auto_scaling_groups') 
page_iterator = paginator.paginate(
    PaginationConfig={'PageSize': 100} 
) 

filtered_asgs = page_iterator.search(
    'AutoScalingGroups[] | [?contains(Tags[?Key==`{}`].Value, `{}`)]'.format(
     'Application', 'CCP') 
) 

for asg in filtered_asgs: 
# print asg['AutoScalingGroupName'] 

现在,我想从输出列表中增加每个ASG中实例的数量。我有一个新的启动配置与一个新的AMI,我已经推入这个ASG。现在,将实例数加倍将会在新的AMI中使用新的AMI创建新的实例。请有关如何一倍实例数建议..

回答

0

这样做首先你必须创造一个更新的图像ID的新的启动配置,因为你不能修改的启动配置:

aws autoscaling create-launch-configuration \ 
--launch-configuration-name my-launch-config \ 
--image-id ami-c6169af6 --instance-type m1.medium 

然后贴创建启动配置自动缩放

update-auto-scaling-group \ 
--auto-scaling-group-name <value> \ 
--launch-configuration-name <value> \ 
--min-size <value> --max-size <value> 

这样做会增加一倍无后。实例和所有新实例将与新图像。

但是,所有旧的实例仍旧使用旧的image-id,因此一旦启动配置更新后您必须删除这些实例。

只要您删除实例自动缩放将旋转带有新图像ID的新实例。

这种更新方法称为滚动更新。


另一种方法是蓝绿色的方法,其中

  1. 创建一个新的启动配置
  2. 一旦创建新的自动伸缩群

为新的堆准备将它附加到您的ELB或您正在使用的任何方法,并删除旧的。

这两种方法都会有自己的使用情况取决于你的使用要求:

如果你希望你的所有实例可以同步所有的时间去第二种方法

+0

我已经编写脚本来创建新的LC带有新的AMI ID。没事儿。我坚持在新的ASG中将实例数加倍。 '更新自动缩放组\ --auto缩放组名 \ --launch配置名称 \ --min尺寸 --max尺寸' 使用这一个我可以设置我知道的特定数量的实例。但是,如何获得这些ASG中的实例数并在脚本中加倍?!。 – Ashfaq

+0

您可以使用describe-autoscaling来获取自动缩放参数获取MinSize和MaxSize – jzaa