【发布时间】:2020-05-13 14:19:10
【问题描述】:
我正在尝试向正在运行的实例添加 1 个额外的安全组。 阅读使用它时应该能够阅读的文档:
- name: "Attach SG"
ec2:
aws_access_key: "{{ assumed_role.sts_creds.access_key }}"
aws_secret_key: "{{ assumed_role.sts_creds.secret_key }}"
security_token: "{{ assumed_role.sts_creds.session_token }}"
region: "{{ region }}"
instance_ids:
- "{{ ec2_instances.instances.0.instance_id }}"
state: running
group_id:
- group1
- group2
现在这在我们的情况下不起作用,所以我正在获取所有安全组并将新的安全组添加到机器中,如下所示:
- name: "Attach SG"
ec2:
aws_access_key: "{{ assumed_role.sts_creds.access_key }}"
aws_secret_key: "{{ assumed_role.sts_creds.secret_key }}"
security_token: "{{ assumed_role.sts_creds.session_token }}"
region: "{{ region }}"
instance_ids:
- "{{ ec2_instances.instances.0.instance_id }}"
state: running
group_id:
- "{{ item.group_id }}"
when: total_group_list.stdout == "nok"
with_items:
- "{{ ec2_instances.instances.0.network_interfaces.0.groups }}"
- "{{ ic_sg_icinga_db }}"
loop_control:
label: "{{ item.group_id }}"
唯一的问题是,现在它为这些项目中的每个组运行此代码,因此如果 item1 有 3 个组并且 item2 1 它将 add 和 delete 所有组一个接一个地留给我最后一组仅它使用:
TASK [c-icinga2-agent : Attach SG]
changed: [bamboo] => (item=sg-1)
changed: [bamboo] => (item=sg-2)
changed: [bamboo] => (item=sg-3)
changed: [bamboo] => (item=sg-4)
结果:
主机只有sg-4,缺少sg-[1:3]
关于如何使用 ansible 模块附加 1 个安全组并保留主机上已经存在的旧安全组的任何想法?
我目前的任务是:
- 获取所有当前安全组:
ec2_instance_infoof 1 个实例 - 过滤当前附加组并检查是否已添加新组
- 如果未添加新的安全组,则附加 SG。
期望的结果是Attach SG 只与来自with_items 的所有组一起运行一次,但我没有想法/地方来看看如何完成这项工作。
感谢您的帮助。
【问题讨论】:
-
查看ec2_instance 模块来管理现有实例。
-
是的,我试过了,但没有更改,现在说好的,但仍然没有新的安全组,只是旧的 3 和 4 仍未连接
标签: amazon-ec2 ansible