¿Cómo puedo pasar una variable al libro de jugadas ansible en la línea de comando?

Resuelto Édouard Lopez asked hace 9 años • 11 respuestas

¿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_fixturesestá mi variable?

Édouard Lopez avatar Jun 05 '15 15:06 Édouard Lopez
Aceptado

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)

Édouard Lopez avatar Jun 05 '2015 08:06 Édouard Lopez

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') }}
GreensterRox avatar Feb 20 '2017 15:02 GreensterRox
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
lanni654321 avatar Jun 22 '2016 08:06 lanni654321