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?
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?
Respuestas:
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
)
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:
--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 estas dentro de sus archivos yml ansibles de esta manera:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)
se corresponde con el factor 12.
version: {{ version }}
está mal, como definir version
por sí mismo.
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-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 documentos
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
-e
es la forma abreviada de--extra-vars
-e
bandera
-e "firstvar=false second_var=value2"
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 lo mismo, puedes usar uno de ellos.
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
aquí se usan 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}}"
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') }}"
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`
--extra-vars
anularán las variables definidas dentro del libro de jugadas.