2017-01-18 15 views
0

У меня есть плейер, в котором размещается витруальная машина. Я хочу, чтобы проигрыватель задерживался, пока vm не получил ip-адрес. Я пытаюсь сделать цикл, но имеет ошибку.Как проверить переменную ipaddresses из результатов vsphere_guest в playbook?

tasks: 
    - vsphere_guest: 
     vcenter_hostname: "{{ vcenter_hostname }}" 
     username: "{{ vcenter_user }}" 
     password: "{{ vcenter_pass }}" 
     guest: "{{ inventory_hostname }}" 
     vmware_guest_facts: yes 
     validate_certs: no 
     register: vsphere_facts 
     until: vsphere_facts.ansible_facts.hw_eth0.ipaddresses[0] = "192.168.250.*" 
     retries: 20 
     delay: 60 

{ "не удалось": true "MSG": "Условный проверка «vsphere_facts.ansible_facts.hw_eth0.ipaddresses [0] = \" 192.168.250. \ "" Ошибка: ошибка шаблона в то время как строка шаблона: ожидаемый токен 'конец блока оператора', полученный '='. Строка: {% if vsphere_facts.ansible_facts.hw_eth0.ipaddresses [0] = \ «192.168.250. \ "%} {% Правда еще%} {Ложные% ENDIF%}"}

+1

Попробуйте '==' вместо '=' ... И это не будет работать из-за '*'. Вам нужно использовать фильтр 'match'. –

+0

@ KonstantinSuvorov yep, '==' работает. Пожалуйста, дайте пример 'match' или укажите URL-адрес, так как я не могу найти – Nikita

ответ

2

Вы должны выбрать:

until: vsphere_facts.ansible_facts.hw_eth0.ipaddresses[0] | match("192.168.250.") 

прямого сравнения (с ==) не может обрабатывать символы как * ,

 Смежные вопросы

  • Нет связанных вопросов^_^