Como exatamente o Ansible analisa variáveis booleanas?

No Ansible, existem vários locais onde variáveis podem ser definidas: no inventário, em um manual, em arquivos de variáveis etc. Alguém pode explicar as seguintes observações que eu fiz?

Ao definir uma variável booleana em um inventário, DEVE ser maiúscula (ou seja, Verdadeiro / Falso), caso contrário (ou seja, verdadeiro / falso), não será interpretada como um Booleano, mas como uma String.Em qualquer um dos arquivos formatados em YAML (playbooks, papéis etc.), True / False e true / false são interpretados como booleanos.

Por exemplo, eu defini duas variáveis em um inventário:

abc=false
xyz=False

E ao depurar o tipo dessas variáveis dentro de uma função ...

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

... entãoabc torna-seunicode masxyz é interpretado comobool:

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

No entanto, ao definir as mesmas variáveis em um manual, desta forma:

  vars:
    abc: false
    xyz: False

... então ambas as variáveis são reconhecidas comobool.

Eu tive que perceber isso da maneira mais difícil depois de executar um manual de produção, executando algo que não deveria ter sido executado devido a uma variável definida como 'false' em vez de 'False' em um inventário. Assim, eu realmente gostaria de encontrar uma resposta clara sobre como o Ansible entende os booleanos e como isso depende de onde / como a variável é definida. Devo sempre usar sempre True / False maiúsculo para estar no lado seguro? É válido dizer que os booleanos nos arquivos YAML (com formatokey: value) não diferenciam maiúsculas de minúsculas, enquanto nos arquivos de propriedades (com o formatokey=value) diferenciam maiúsculas de minúsculas? Qualquer visão mais profunda seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion