Одна проблема с вашей книгой игр в том, что - no
автоматически переводится в логическое значение false
.Вы должны использовать «нет», чтобы Ansible рассматривал переменную как строку.без кавычек:
---
- hosts: localhost
connection: local
gather_facts: false
vars:
badcmds:
- clear
- no
my_command: clear
tasks:
- name: print variable
debug:
msg: "{{ item }}"
with_items:
- "{{ badcmds }}"
вывод:
TASK [print variable] ***********************************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
"msg": "clear"
}
ok: [localhost] => (item=None) => {
"msg": false
}
Я полагаю, вы должны заключить в кавычки no
, потому что это не было вашим намерением.
сделатьцикл и проверьте, соответствует ли переменная любому элементу из списка badcmds
, вы можете использовать:
---
- hosts: localhost
connection: local
gather_facts: false
vars:
badcmds:
- "clear"
- "no"
tasks:
- name: validate input
debug:
msg: "{{ item }}"
when: item == my_command
with_items:
- "{{ badcmds }}"
надеюсь, это поможет