【问题标题】:ansible-ec2: Enforce instance type changeansible-ec2:强制实例类型更改
【发布时间】:2017-11-29 10:45:14
【问题描述】:

我正在运行(到目前为止)幂等 ansible 脚本来创建 ec2 实例。

到目前为止,我的角色的默认部分中有一个带有 ec2 参数的字典,大致如下。

 my_instances:
 - instance_type: "t2.micro"
   exact_count: "1"
   assign_public_ip: "no"
 - instance_type: "t2.micro"
   exact_count: "1"
   assign_public_ip: "no"

并根据这些变量运行以下任务:

- name: Create my instances
  ec2:
    instance_type: "{{ item.ec2_instance_type }}"
    region: "us-east-1"
    image: "some-image"
    group_id: "some-group-id"
    vpc_subnet_id: "some-subnet-id"
    instance_tags:
  with_items: "{{ my_instances }}"

那些实例在那里并且正在运行,所以我所说的脚本是幂等的。

我想重新运行脚本,更改其中一种实例类型(来自t2.micro --> t2.small),例如如下:

 - instance_type: "t2.small"

但是,当我在上述变量中​​执行更改时,脚本再次幂等运行,尽管输出产生:

ok: [localhost] => (item={instance_type': u't2.small'})

(输出修剪)。

实例类型保持t2.micro

为什么会这样?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 ansible


    【解决方案1】:

    据我所知,开箱即用仍不支持调整大小。这是我们在项目中使用的ec2.py 的补丁:

    @@ -1416,6 +1381,13 @@
                     inst.modify_attribute('disableApiTermination', termination_protection)
                     changed = True
    
    +            # Check "instance_type" attribute
    +            if instance_type and inst.get_attribute('instanceType')['instanceType'] != instance_type:
    +                if inst.state != 'stopped':
    +                    module.fail_json(msg='Unable to resize running instance {}'.format(inst.id))
    +                inst.modify_attribute('instanceType', instance_type)
    +                changed = True
    +
                 # Check instance state
                 if inst.state != state:
                     instance_dict_array.append(get_instance_info(inst))
    

    希望我能抽出时间提交拉取请求。

    【讨论】:

    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2020-04-06
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多