Ansible ec2_eni模块。如何为ec2_eni界面添加其他security_groups?

时间:2018-06-28 22:17:19

标签: ansible ansible-2.x ansible-facts

我正在尝试将其他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"
            }
        ]
    ]
}

1 个答案:

答案 0 :(得分:0)

如果为它提供与EIP相关的参数,这对您不起作用吗? https://docs.ansible.com/ansible/2.5/modules/ec2_group_facts_module.html#ec2-group-facts-module