Ansible запускает задачу, когда переменная содержит некоторое слово

#linux #ansible #devops

#linux #ansible #devops

Вопрос:

У меня есть задача ansible, которая получает все роли elasticsearch

 - name: Get all roles
  shell: curl -u elastic:123456789 "192.168.2.13:9200/_security/role"
  register: roles
  

и я хочу выполнить задачу ниже, только если переменная roles.stdout содержит слово Uzbekistan

 - name: register role (if doesn't exist)
  shell: curl -u elastic:123456789 "192.168.2.12:9200"
  when: roles.stdout =="Uzbekistan"
  

итак, как я могу это сделать?

Комментарии:

1. роли — это ключевое слово. Не используйте его как переменную.

2. Спасибо, Володя!

Ответ №1:

Есть много способов сделать это

Используя search

 - name: register role (if doesn't exist)
  shell: curl -u elastic:123456789 "192.168.2.12:9200"
  when: roles.stdout is search('Uzbekistan')
  

Используя in

 - name: register role (if doesn't exist)
  shell: curl -u elastic:123456789 "192.168.2.12:9200"
  when: "'Uzbekistan' in roles.stdout"
  

Используя find

 - name: register role (if doesn't exist)
  shell: curl -u elastic:123456789 "192.168.2.12:9200"
  when: roles.stdout.find('Uzbekistan')
  

Комментарии:

1. Спасибо! я угощу тебя блюдом со свежим пловом!