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
Puede usar la opción
--extra-vars
.
Ver los documentos
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.