фильтр)

ible есть несколько мест, где переменные могут быть определены: в инвентаре, в сборнике игр, в файлах переменных и т. Д. Кто-нибудь может объяснить следующие наблюдения, которые я сделал?

При определении логической переменной в инвентаре она ДОЛЖНА быть заглавной (т. Е. True / False), в противном случае (т. Е. True / false) она будет интерпретироваться не как Boolean, а как String.В любом из файлов в формате YAML (книгах воспроизведения, ролях и т. Д.) Значения True / False и true / false интерпретируются как логические значения.

Например, я определил две переменные в инвентаре:

abc=false
xyz=False

И при отладке типа этих переменных внутри роли ...

- debug:
    msg: "abc={{ abc | type_debug }}  xyz={{ xyz | type_debug }}"

... тогдаabc становитсяunicode ноxyz интерпретируется какbool:

ok: [localhost] => {
    "msg": "abc=unicode  xyz=bool"
}

Тем не менее, при определении тех же переменных в playbook, вот так:

  vars:
    abc: false
    xyz: False

... тогда обе переменные распознаются какbool.

Я должен был понять это нелегко после того, как выполнил пьесу на производстве, запустив что-то, что не должно было выполняться из-за того, что в инвентаре установлена ​​переменная «false» вместо «False». Таким образом, мне бы очень хотелось найти четкий ответ о том, как Ansible понимает логические значения и как это зависит от того, где и как определяется переменная. Должен ли я просто всегда использовать заглавные буквы True / False, чтобы быть в безопасности? Можно ли сказать, что логические значения в файлах YAML (с форматомkey: value) нечувствительны к регистру, а в файлах свойств (с форматомkey=value) они чувствительны к регистру? Любое более глубокое понимание будет высоко оценено.

Ответы на вопрос(1)

Ваш ответ на вопрос