vars variable register playbook ansible ansible-role

register - ansible set variable



Ansible: ¿Puedo ejecutar el rol desde la línea de comando? (7)

Supongamos que tengo un rol llamado "apache"

Ahora quiero ejecutar ese rol en el host 192.168.0.10 desde la línea de comando del host Ansible

ansible-playbook -i "192.168.0.10" --role "path to role"

¿Hay una manera de hacerlo?


¿Has intentado eso? Es súper genial. Estoy usando ''update-os'' en lugar de ''apache'' para dar un ejemplo más significativo. Tengo un rol llamado digamos ./roles/update-os/ en mi ./ Agrego un archivo llamado ./role-update-os.yml que se ve así:

#!/usr/bin/ansible-playbook --- - hosts: all gather_facts: yes become: yes roles: - update-os

Haga que este archivo sea ejecutable ( chmod +x role-update-os.yml ). Ahora puede ejecutar y limitar lo que tenga en su inventario ./update-os.yml -i inventory-dev --limit 192.168.0.10 el límite, también puede pasar los nombres de los grupos.
--limit web,db > web y db es el grupo definido en su inventario
--limit 192.168.0.10,192.168.0.201

;./inventory-dev [web] 192.168.0.10 [db] 192.168.0.201

Tenga en cuenta que puede configurar las políticas ssh-keys y sudoers para poder ejecutarlas sin tener que escribir una contraseña; ideal para la automatización, existen implicaciones de seguridad con esto. por lo tanto, debe analizar su entorno para ver si es adecuado.


Con ansible 2.7 puedes hacer esto:

$ cd /path/to/ansible/ $ ansible localhost -m include_role -a name=<role_name> localhost | SUCCESS => { "changed": false, "include_variables": { "name": "<role_name>" } } localhost | SUCCESS => { "msg": "<role_name>" }

Esto ejecutará el rol de / ruta / a / ansible / roles o la ruta de rol configurada.

Lea más aquí: https://github.com/ansible/ansible/pull/43131


He escrito un pequeño complemento Ansible, llamado auto_tags , que genera dinámicamente para cada rol en su libro de jugadas una etiqueta con el mismo nombre. Lo puedes encontrar here .

Después de instalarlo (las instrucciones se encuentran en el resumen anterior), puede ejecutar un rol específico con:

ansible-playbook -i "192.168.0.10" --tags "name_of_role"


No conozco esta característica, pero puede usar etiquetas para ejecutar una función desde su libro de jugadas.

roles: - {role: ''mysql'', tags: ''mysql''} - {role: ''apache'', tags: ''apache''} ansible-playbook webserver.yml --tags "apache"


No existe tal cosa en Ansible, pero si este es un caso de uso frecuente para usted, pruebe este script.
Póngalo en algún lugar dentro de su RUTA de búsqueda bajo el nombre ansible-role :

#!/bin/bash if [[ $# < 2 ]]; then cat <<HELP Wrapper script for ansible-playbook to apply single role. Usage: $0 <host-pattern> <role-name> [ansible-playbook options] Examples: $0 dest_host my_role $0 custom_host my_role -i ''custom_host,'' -vv --check HELP exit fi HOST_PATTERN=$1 shift ROLE=$1 shift echo "Trying to apply role /"$ROLE/" to host/group /"$HOST_PATTERN/"..." export ANSIBLE_ROLES_PATH="$(pwd)/roles" export ANSIBLE_RETRY_FILES_ENABLED="False" ansible-playbook "$@" /dev/stdin <<END --- - hosts: $HOST_PATTERN roles: - $ROLE END


También puede consultar el repositorio ansible-toolbox . Te permitirá usar algo como

ansible-role --host 192.168.0.10 --gather --user centos --become my-role


en ansible 2.8 funciona un poco diferente

wohlgemuth@leela:~/workspace/rtmtb-ansible/kvm-cluster$ ansible localhost -m import_role -a name=rtmtb [WARNING]: No inventory was parsed, only implicit localhost is available localhost | CHANGED => { "changed": true, "checksum": "d31b41e68997e1c7f182bb56286edf993146dba1", "dest": "/root/.ssh/id_rsa.github", "gid": 0, "group": "root", "md5sum": "b7831c4c72f3f62207b2b96d3d7ed9b3", "mode": "0600", "owner": "root", "size": 3389, "src": "/home/wohlgemuth/.ansible/tmp/ansible-tmp-1561491049.46-139127672211209/source", "state": "file", "uid": 0 } localhost | CHANGED => { "changed": true, "checksum": "1972ebcd25363f8e45adc91d38405dfc0386b5f0", "dest": "/root/.ssh/config", "gid": 0, "group": "root", "md5sum": "f82552a9494e40403da4a80e4c528781", "mode": "0644", "owner": "root", "size": 147, "src": "/home/wohlgemuth/.ansible/tmp/ansible-tmp-1561491049.99-214274671218454/source", "state": "file", "uid": 0 }