variable register playbook facts example variables command-line command-line-arguments ansible ansible-playbook

variables - register - ¿Cómo puedo pasar variable a libro de jugadas ansible en la línea de comando?



ansible variables (10)

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"

Donde django_fixtures es mi variable.


Al leer los documentos, encuentro la sección Pasando variables en la línea de comandos , que dan 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 )


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'') }}"


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:

--extra-vars "version=1.23.45 other_variable=foo"

En su archivo yml, los asigna a variables ansibles de ámbito 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 ansibles yml de esta manera:

vars: my_version: "{{ lookup(''env'', ''version'') }}" my_other_variable: {{ lookup(''env'', ''other_variable'') }}


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):

ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2



ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"

Puede usar el comando anterior en los siguientes libros de jugadas.

--- - name: Service Status gather_facts: False tasks: - name: Check Service Status (Linux) shell: pgrep "{{ proc_name }}" register: service_status ignore_errors: yes debug: var=service_status.rc`


s3_sync: bucket: ansible-harshika file_root: "{{ pathoftsfiles }}" validate_certs: false mode: push key_prefix: "{{ folder }}"

aquí se utilizan las variables denominadas ''pathoftsfiles'' y ''carpeta''. Ahora el valor de esta variable puede ser dado por el siguiente comando

sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"

Nota: No use las comillas invertidas al pasar los valores a la variable en el comando de shell


ansible-playbook release.yml --extra-vars "username=hello password=bye" #you can now use the above command anywhere in the playbook as an example below: tasks: - name: Create a new user in Linux shell: useradd -m -p {{username}} {{password}}"


ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"


ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"

En el archivo yml puedes usarlos así

--- arg1: "{{ var1 }}" arg2: "{{ var2 }}"

Además, --extra-vars y -e son iguales, puede usar uno de ellos.