Ansible, чтобы сделать когда оператор на элементе в цикле - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать несколько 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 Ответ

0 голосов
/ 30 апреля 2018

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

...