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.