我正在尝试将其他security_groups添加到我现有的ec2_ENI中。 ec2_eni模块似乎是非幂等的。当我使用ec2_eni模块添加新的安全组时,它会删除现有的组并仅添加我在剧本中提到的组。
所以剩下的选择就是获取现有的ec2_eni_facts并对其进行更新。这种方法的问题是,值进入嵌套数组,如下面的示例所示。如何使安全组成为事实?
Ansible版本2.5.1
Playbook:
---
- hosts: ansiblecontroller
gather_facts: false
connection: local
user: root
tasks:
- ec2_eni_facts:
filters:
network-interface-id: "eni-xxxxxxxxxxxx"
register: enifacts
- debug: msg="{{ enifacts }}"
- name: set empty list
set_fact:
name1: "ENI1"
grouplist: []
fact1: []
parthas: []
security_groups: []
- name: set empty list
set_fact:
fact1: "{{ enifacts | json_query('network_interfaces[*].groups[*]') }}"
grouplist: "{{ grouplist }} + [ '{{ name1 }}' ]"
- debug: msg="{{ grouplist }}"
- debug: msg="{{ fact1 }}"
Result:
TASK [debug] ************************************************************************************************************************************************
ok: [10.21.10.155] => {
"msg": "[u'ENI1'] + [ '[[{u'group_id': u'sg-0bf33819021de5d15', u'group_name': u'default'}, {u'group_id': u'sg-008569a91671d5090', u'group_name': u'Lab4-INTRA-VPC-Subnet-Traffic'}]]' ]"
}
TASK [debug] ************************************************************************************************************************************************
ok: [10.21.10.155] => {
"msg": [
[
{
"group_id": "sg-0bf33819021de5d15",
"group_name": "default"
},
{
"group_id": "sg-008569a91671d5090",
"group_name": "Lab4-INTRA-VPC-Subnet-Traffic"
}
]
]
}
答案 0 :(得分:0)
如果为它提供与EIP相关的参数,这对您不起作用吗? https://docs.ansible.com/ansible/2.5/modules/ec2_group_facts_module.html#ec2-group-facts-module