Я пытаюсь преобразовать существующую сборную плейбука (для извлечения содержимого веб-страницы из нескольких URL-адресов веб-страницы параллельно) в повторно используемые роли.Мне нужна роль, чтобы принимать переменные в цикле и производить вывод для всех элементов в одной задаче, которую может выполнять мой текущий playbook.Но текущая роль способна только выводить последний элемент в цикле
Я пытался зарегистрировать содержимое веб-страницы внутри и вне ролей, но безрезультатно.А также зацикливание результатов ответа with_items так же, как и для роли, приводит к получению результатов для значений, отличных от 200
К вашему сведению Я получил ожидаемый результат, включив цикл в роль, но он побеждает цель поддержанияроль для вызова GET, потому что мне не понадобится цикл каждый раз для вызова GET.Поэтому я ожидаю зациклить роль в testplaybook.yml.
Test-Role: main.yml
uri:
url: "{{ URL_Variable }}"
method: GET
status_code: 200
return_content: yes
register: response
ignore_errors: true
testplaybook.yml:
- hosts: localhost
gather_facts: true
tasks:
- name: Include roles
include_role:
name: Test-Role
vars:
URL_Variable: "http://{{ item }}:{{ hostvars[groups['group1'][0]]['port'] }}/{{ hostvars[groups['group1'][0]]['app'] }}/"
with_items: "{{ groups['group1'] }}"
- name: "Display content"
debug:
var: response.results
Ожидаемый результат:
response.results:
ok: [127.0.0.1] => (item=[0, 'item1']) => {
"ansible_loop_var": "item",
"item": [
0,
"item1"
],
"response": {
"accept_ranges": "bytes",
"changed": false,
"connection": "close",
"content": "content1",
"content_length": "719",
"content_type": "text/html",
"cookies": {},
"failed": false,
"msg": "OK (719 bytes)",
"redirected": false,
"server": "42",
"status": 200,
"url": "http://item1:port/app/"
}
}
ok: [127.0.0.1] => (item=[1, 'item2']) => {
"ansible_loop_var": "item",
"item": [
1,
"item2"
],
"response": {
"accept_ranges": "bytes",
"changed": false,
"connection": "close",
"content": "content2",
"content_length": "719",
"content_type": "text/html",
"cookies": {},
"failed": false,
"msg": "OK (719 bytes)",
"redirected": false,
"server": "42",
"status": 200,
"url": "http://item2:port/app/"
}
}