Am un fișier simplu ansible main_task.yml care este în buclă dintr-un main.yml .
inventar.ini
[port_22]
192.168.0.189
192.168.0.199
[port_222]
192.168.0.199
[port_888]
192.168.0.200
sarcină_principală.yml
---
- nume: „rulați acest lucru pe gazde {{ item }}”
depanare: msg= "acest lucru rulează numai pe p{{ item }} gazde"
când: „{{ item }} în group_names”
#când: nume_grup | select("articol|șir") | lista | numără > 0
principal.yml
- gazde: port_22, port_222
conexiune: locală
vars:
porturi:
- 22
- 222
sarcini:
- nume: Verificare
include_tasks: principal_task.yml
buclă: „{{ porturi }}”
Se plânge
[AVERTISMENT]: instrucțiunile condiționate nu ar trebui să includă delimitatori de șablon jinja2, cum ar fi {{ }} sau {% %}. S-a găsit: {{ item }} în group_names
când eliminați șablonul jinja2, obțineți acest lucru:
săriți peste: [192.168.0.189]
Cum pot realiza acest lucru?
Actualizați:
Main.yml modificat
- gazde: host_22, host_222
#conexiune: locală
vars:
porturi:
- 22
sarcini:
- nume: implementați fișiere cu adresa de rețea în ele
include_tasks: principal_task.yml
buclă: „{{ porturi }}”
Main_task.yml modificat
- nume: „rulați acest lucru pe gazde {{ item }}”
depanare: msg= "acest lucru rulează numai pe p{{ item }} gazde"
când: element din nume_grup
#când: nume_grup | select("articol|șir") | lista | numără > 0
- nume: numele meu de gazdă
shell: nume de gazdă; numele gazdă -I
când: element din nume_grup
înregistrare: hostname_result
- depanare:
var: hostname_result.stdout_lines
Ieșire:
ansible-playbook main.yaml -i inventory.ini -u root
PLAY [gazdă_22, gazdă_222] ******************************************** **************************************************** **************************************************** **************************************************** **************************************************** *****
SARCINA [Adunarea faptelor] ********************************************* **************************************************** **************************************************** **************************************************** **************************************************** *****
ok: [192.168.0.189]
ok: [192.168.0.199]
SARCINA [Verificare] ************************************************ **************************************************** **************************************************** **************************************************** ****************************
incluse: /home/ubuntu/ansible/test/testing_loo/main_task.yml pentru 192.168.0.199, 192.168.0.189 => (articol=22)
SARCINA [rulați acest lucru pe 22 de gazde] ******************************************** **************************************************** **************************************************** **************************************************** **************************************************** ****
omitere: [192.168.0.199]
săriți peste: [192.168.0.189]
SARCINA [numele meu de gazdă] ********************************************* **************************************************** **************************************************** **************************************************** **************************************************** *********
omitere: [192.168.0.199]
săriți peste: [192.168.0.189]
SARCINA [depanare] ************************************************ **************************************************** **************************************************** **************************************************** **************************************************** ***************
ok: [192.168.0.199] => {
"hostname_result.stdout_lines": "VARIABILA NU ESTE DEFINITĂ!"
}
ok: [192.168.0.189] => {
"hostname_result.stdout_lines": "VARIABILA NU ESTE DEFINITĂ!"
}