Это было бы легко реализовать с использованием until
для выполнения цикла ansible do-till , если ответ был в формате JSON.
Но вот рабочий пример с xml response.
Предварительные условия: (Убедитесь, что у вас на компьютере ANSI установлены зависимости python)
1) Использование пользовательского фильтра xml_to_json .
2) Использование json_query filter
P.S. Выполнение следующего воспроизведения не приведет к повторной попытке, поскольку условие until
уже выполнено.
Если вы хотите проверить, работает ли повтор, измените условие until
или значение тега в заголовке запроса.
---
- name: Retry url until xml content equals certain value
hosts: 127.0.0.1
connection: local
become_user: root
become: yes
tasks:
- name: Check job status
uri:
url: "https://httpbin.org/anything"
method: GET
timeout: 10
validate_certs: no
headers:
content: "<envelope><body><request><status>2</status></request></body></envelope>"
register: get_search_job_status_response
until: get_search_job_status_response.json.headers.Content|from_xml|json_query('envelope.body.request.status')|int == 2
retries: 2
delay: 2
...