¿Cómo exactamente las variables booleanas analizadas por Ansible?

En Ansible, hay varios lugares donde se pueden definir variables: en el inventario, en un libro de jugadas, en archivos de variables, etc. ¿Alguien puede explicar las siguientes observaciones que he hecho?

Al definir una variable booleana en un inventario, DEBE estar en mayúscula (es decir, verdadero / falso), de lo contrario (es decir, verdadero / falso) no se interpretará como un booleano sino como una cadena.En cualquiera de los archivos con formato YAML (libros de jugadas, roles, etc.), tanto True / False como true / false se interpretan como booleanos.

Por ejemplo, definí dos variables en un inventario:

abc=false
xyz=False

Y al depurar el tipo de estas variables dentro de un rol ...

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

... luegoabc se convierteunicode peroxyz se interpreta como unbool:

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

Sin embargo, al definir las mismas variables en un libro de jugadas, así:

  vars:
    abc: false
    xyz: False

... entonces ambas variables se reconocen comobool.

Tuve que darme cuenta de esto de la manera difícil después de ejecutar un libro de jugadas en producción, ejecutando algo que no debería haberse ejecutado debido a una variable establecida en 'falso' en lugar de 'Falso' en un inventario. Por lo tanto, me gustaría encontrar una respuesta clara sobre cómo Ansible entiende los booleanos y cómo depende de dónde / cómo se define la variable. ¿Debo usar siempre verdadero / falso en mayúscula para estar seguro? ¿Es válido decir que booleanos en archivos YAML (con formatokey: value) no distinguen entre mayúsculas y minúsculas, mientras que en los archivos de propiedades (con formatokey=value) son sensibles a mayúsculas y minúsculas? Cualquier idea más profunda sería muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta