Как мне проверить соответствие var списку подстрок в ansible? - PullRequest
0 голосов
/ 30 мая 2018

Я довольно новичок в ansible, и я пытаюсь определить, как проверить, соответствует ли переменная, передаваемая моей пьесе, списку подстрок.

Я пробовал что-то вроде следующего.Зацикливаясь на моем списке badcmds и затем проверяя, находится ли он в переданной переменной.

vars:
    badcmds:
     - clear
     - no

  tasks:


  - name: validate input
    debug:
       msg: " {{ item }}"
    when: item in my_command
    with_items: "{{ badcmds }}"

Я получаю следующую ошибку:

  "msg": "The conditional check 'item in my_command' failed. 
  The error was: Unexpected templating type error occurred on
 ({% if item in my_command %} True {% else %} False {% endif %}):  
 coercing to Unicode: need string or buffer, bool found

Большое спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Одна проблема с вашей книгой игр в том, что - 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 }}"

надеюсь, это поможет

...