Ansible: ec2_eni не может подключать интерфейс

Используя ansible, я пытаюсь создать экземпляры ec2 и подключить к каждому экземпляру дополнительный сетевой интерфейс, чтобы у них было два частных IP-адреса. Однако по какой-то причине кажется, что модуль ec2_eni может создавать сетевые интерфейсы, но не будет прикреплять их к указанным экземплярам. Что я делаю неправильно? Ниже мой сценарий:

---
- hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - name: Create new servers
      ec2:
        region: "{{ region }}"
        vpc_subnet_id: "{{ subnet }}"
        group_id: "{{ sec_group }}"
        assign_public_ip: yes
        wait: true
        key_name: '{{ key }}'
        instance_type: t2.micro
        image: '{{ ami }}'
        exact_count: '{{ count }}'
        count_tag:
          Name: "{{ server_name }}"
        instance_tags:
          Name: "{{ server_name }}"
      register: ec2

    - name: Show ec2 instance json data
      debug:
        msg: "{{ ec2['tagged_instances'] }}"

    - name: allocate new elastic IPs and associate it with instances
      ec2_eip:
        region: "{{ region }}"
        device_id: "{{ item['id'] }}"
      with_items: "{{ ec2['tagged_instances'] }}"
      register: eips

    - name: Show eip instance json data
      debug:
        msg: "{{ eips['results'] }}"

    - ec2_eni:
        subnet_id: "{{ subnet }}"
        state: present
        secondary_private_ip_address_count: 1
        security_groups: "{{ sec_group }}"
        region: "{{ region }}"
        device_index: 1
        description: "test-eni"
        instance_id: "{{ item['id'] }}"
      with_items: "{{ ec2['tagged_instances'] }}"

Странно то, что задача ec2_eni успешно выполняется, говоря, что она подключила сетевой интерфейс к каждому экземпляру, тогда как на самом деле она просто создает сетевой интерфейс, а затем ничего с ним не делает.


person Alex Cohen    schedule 14.08.2018    source источник


Ответы (1)


Насколько я могу судить, так как _ 1_ по умолчанию None, но в документации модуля говорится:

Указывает, должен ли сетевой интерфейс быть присоединен к экземпляру или отсоединен от него. Если опущено, статус прикрепленного файла не изменится.

затем выполняет то, что они заявляют, и пропускает этап прикрепления.

Похоже, это ошибка в документации, которая утверждает, что по умолчанию установлено "да", но это неточно.

person mdaniel    schedule 22.08.2018
comment
Я начал процесс исправления документов: github.com/ansible/ansible/pull/44523 - person mdaniel; 22.08.2018
comment
Спасибо, я добавил attached: yes, и теперь к нему будет прикреплен дополнительный интерфейс. - person Alex Cohen; 23.08.2018
comment
Я заметил еще одну ошибку, когда, если я укажу, что хочу мое secondary_private_ip_address_count: 2 или значение больше 1 (какие экземпляры t2.micro не поддерживают), я получаю сообщение об ошибке "msg": "Network interface 'eni-asdfagibberishadsf' is currently in use." вместо того, чтобы сказать, что дополнительный интерфейс не может быть присоединен из-за ограничений типа ec2. Затем он приступает к подключению интерфейса, несмотря на эту ошибку, добавляя к интерфейсу только один из двух дополнительных частных IP-адресов. - person Alex Cohen; 23.08.2018
comment
Не могли бы вы открыть ответный вопрос об этой проблеме t2.micro? Я не знаю, можно ли отличить это состояние ошибки от API AWS, но не помешает спросить - person mdaniel; 23.08.2018
comment
Хорошо, я открою новый выпуск. - person Alex Cohen; 24.08.2018