¿Cómo puedo pasar una variable al libro de jugadas ansible en la línea de comando?
¿Cómo se puede pasar una variable al libro de jugadas ansible en la línea de comando?
El siguiente comando no funcionó:
$ ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
¿ Dónde django_fixtures
está mi variable?
Al leer los documentos, encuentro la sección Pasar variables en la línea de comandos , que ofrece este ejemplo:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
Otros ejemplos demuestran cómo cargar desde una cadena JSON (≥ 1.2
) o un archivo (≥ 1.3
)
Otras respuestas indican cómo pasar las variables de la línea de comando pero no cómo acceder a ellas, así que si lo hace:
--extra-vars "version=1.23.45 other_variable=foo"
En su archivo yml, los asigna a variables ansibles con alcance haciendo algo como:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
Una alternativa al uso de argumentos de línea de comando es utilizar variables ambientales que ya están definidas dentro de su sesión; puede hacer referencia a ellas dentro de sus archivos ansible yml de esta manera:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"