Ansible, чтобы сделать когда оператор на элементе в цикле

Я пытаюсь создать несколько IP-адресов AWS Elastic на основе числа в переменной - до этого все хорошо. НО мне нужно проверить, существует ли этот EIP в наборе переменных, которые я загрузил из файла. Если EIP существует, я хочу пропустить его создание, например:

- set_fact: "number_of_ips=3
- name: load the local config file
  include_vars: profiles/{{ ec2_tag_environment }}/file_with_variables

- name: allocate a new elastic IP for server {{ item }} if not exists already
  ec2_eip:
    profile: "{{ boto_profile }}"
    region: "{{ ec2_region }}"
    state: present
  register: reg_eip_server_{{ item }}
  when: server_eip_{{ item }} is not defined
  with_sequence: start=1 end={{ number_of_ips}}

(пожалуйста, не берите в голову отступ - он работает, но здесь может быть проблема с копированием / вставкой) В строке "когда" я получаю предупреждение и, конечно, не получается, если я пытаюсь использовать reg_eip_server_1.public_ip так как он не существует

Вот вопросы:

  1. Можно ли это сделать?
  2. Как я могу взять публичный IP-адрес элемента и использовать его на следующем шаге?
  3. Как я могу использовать условие, чтобы пропустить элемент, когда я использую этот вид счета?

1 ответ

Решение

Мне удалось это выяснить. Используя сами элементы, предупреждение является только предупреждением, но оно действительно работает, поэтому, если переменная из файла действительно существует, она будет игнорировать экземпляр цикла и двигаться дальше. Итак: 1. Да, возможно. 2. взять публичный IP из элемента результатов (используя номер элемента результатов в качестве индекса). 3. предупреждение все еще работает, хотя само предупреждение.

Другие вопросы по тегам