такая таска и в нее вложена другая таска:
- name: Import
include_tasks: import.yml
loop: "{{ addr }}"
import.yml описан таким образом:
- name: Import through API
uri:
url: "http://{{ item.path }}:{{ item.port }}/api/dashboards/db"
body: >
{
"file": "{{ item }}"
}
loop: "{{ lookup('fileglob', 'source_files/*.json', wantlist=True) }}"
Переменные описаны так:
addr:
- path: 10.10.10.10
port: 10
- path: 10.10.10.11
port: 11
Ну и собственно идет ругань о том, "has no attribute path" потому что в loop: "{{ lookup('fileglob', 'source_files/*.json', wantlist=True) }}" не про item.path и item.port которые из loop: "{{ addr }}". Собственно, как в таске "Import through API" описать собственный loop со своими item?
loop_control: loop_var: addr
спс, сейчас попробую.
описав так: - name: Import include_tasks: import.yml loop: addr loop_control: loop_var: addr сразу падает на ошибку "The task includes an option with an undefined variable. The error was: 'item' is undefined"
что то не то делаешь, проверил у себя - name: Test hosts: localhost gather_facts: no vars: my_list: ['one', 'two', 'three'] tasks: - name: Include task include_tasks: "{{ curr_file }}.yml" loop: "{{ my_list }}" loop_control: loop_var: curr_file
понял, что после loop_var надо все item на указанное заменить
спс, то что нужно
Обсуждают сегодня