我正在尝试向现有的ec2_ENIs添加额外的security_groups。模块ec2_eni似乎不是幂等的。当我使用ec2_eni模块添加一个新的安全组时,它会删除现有的组,并且只添加我在攻略中提到的组。
因此,留给我的选择是获取现有的ec2_eni_facts并将其作为事实进行升级。这种方法的问题是,值是以嵌套数组的形式出现的,如下例所示。如何将安全组单独作为事实?
可能的版本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"
}
]
]
}发布于 2018-06-30 02:08:30
如果您提供了与您的弹性公网EIP关联的参数,这对您是否不起作用?https://docs.ansible.com/ansible/2.5/modules/ec2_group_facts_module.html#ec2-group-facts-module
https://stackoverflow.com/questions/51091896
复制相似问题