Ansible модуль ec2_eni. Как добавить дополнительные security_groups для интерфейса ec2_eni? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь добавить дополнительные 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 голосов
/ 29 июня 2018

Не будет ли это работать для вас, если вы предоставите ему параметры, связанные с вашим EIP? https://docs.ansible.com/ansible/2.5/modules/ec2_group_facts_module.html#ec2-group-facts-module

...