Soy nuevo en ansible y me pregunto cómo hacerlo, ya que lo siguiente 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?
variables
command-line
command-line-arguments
ansible
ansible-playbook
Édouard Lopez
fuente
fuente
--extra-vars
anularán las variables definidas dentro del libro de jugadas.key=value
sintaxis se interpretan como cadenas . Use el formato JSON si necesita pasar algo que no debería ser una cadena (booleanos, enteros, flotantes, listas, etc.). Por ejemplo:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
Otras respuestas indican cómo pasar las variables de la línea de comandos pero no cómo acceder a ellas, así que si lo hace:
En su archivo yml, los asigna a variables ansibles de ámbito haciendo algo como:
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 estas dentro de sus archivos yml ansibles de esta manera:
fuente
lookup('env', SOMETHING)
se corresponde con el factor 12.version: {{ version }}
está mal, como definirversion
por sí mismo.fuente
-e
bandera es la forma abreviada de--extra-vars
--extra-vars "@some_file.json"
--extra-vars
indicador para pasar variables que no están en el archivo. Por ejemplo--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Puedes usar la
--extra-vars
opción. Ver los documentosfuente
Por alguna razón, ninguna de las respuestas anteriores funcionó para mí. Como necesito pasar varios vars adicionales a mi libro de jugadas en Ansbile 2.2.0, así es como lo hice funcionar (tenga en cuenta la opción -e antes de cada var):
fuente
-e
es la forma abreviada de--extra-vars
-e
bandera-e "firstvar=false second_var=value2"
En el archivo yml puedes usarlos así
Además,
--extra-vars
y-e
son lo mismo, puedes usar uno de ellos.fuente
aquí se usan las variables denominadas 'pathoftsfiles' y 'carpeta'. Ahora el valor de esta variable puede ser dado por el siguiente comando
Nota: No use las comillas invertidas al pasar los valores a la variable en el comando de shell
fuente
fuente
Esto también funcionó para mí si desea utilizar variables de entorno de shell:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
fuente
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Puede usar el comando anterior en los siguientes libros de jugadas.
fuente