我正在运行一个(到目前为止)幂等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
为什么会这样?
答案 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))
希望我能找到时间提交拉动请求。