ansible-ec2:强制实例类型更改

时间:2017-11-29 10:45:14

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

我正在运行一个(到目前为止)幂等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

为什么会这样?

1 个答案:

答案 0 :(得分:0)

据我所知,仍然不支持调整大小。这是我们在项目中使用的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))

希望我能找到时间提交拉动请求。