Nuestro team de especialistas pasados algunos días de trabajo y recopilar de información, dimos con la solución, deseamos que te resulte útil en tu plan.
Un comando ad hoc de Ansible utiliza el /usr/bin/ansible
herramienta de línea de comandos para automatizar una sola tarea en uno o más nodos administrados. Los comandos ad hoc son rápidos y fáciles, pero no son reutilizables. Entonces, ¿por qué aprender primero sobre los comandos ad hoc? Los comandos ad hoc demuestran la simplicidad y el poder de Ansible. Los conceptos que aprenda aquí se transferirán directamente al lenguaje del libro de jugadas. Antes de leer y ejecutar estos ejemplos, lea Cómo construir su inventario.
- ¿Por qué utilizar comandos ad hoc?
-
Casos de uso para tareas ad hoc
- Reiniciar servidores
- Administrar archivos
- Gestionar paquetes
- Gestionar usuarios y grupos
- Gestionar servicios
- Recopilación de hechos
¿Por qué utilizar comandos ad hoc?
Los comandos ad hoc son excelentes para tareas que se repiten con poca frecuencia. Por ejemplo, si desea apagar todas las máquinas de su laboratorio durante las vacaciones de Navidad, puede ejecutar una frase rápida en Ansible sin escribir un libro de jugadas. Un comando ad hoc tiene este aspecto:
$ ansible [pattern] -m [module] -a "[module options]"
Puedes aprender más sobre patrones y modulos en otras páginas.
Casos de uso para tareas ad hoc
Las tareas ad hoc se pueden utilizar para reiniciar servidores, copiar archivos, administrar paquetes y usuarios, y mucho más. Puede utilizar cualquier módulo de Ansible en una tarea ad hoc. Las tareas ad hoc, como los libros de jugadas, utilizan un modelo declarativo, calculando y ejecutando las acciones necesarias para alcanzar un estado final específico. Alcanzan una forma de idempotencia al verificar el estado actual antes de comenzar y no hacer nada a menos que el estado actual sea diferente del estado final especificado.
Reiniciar servidores
El módulo predeterminado para el ansible
La utilidad de línea de comandos es la módulo ansible.builtin.command. Puede usar una tarea ad hoc para llamar al módulo de comando y reiniciar todos los servidores web en Atlanta, 10 a la vez. Antes de que Ansible pueda hacer esto, debe tener todos los servidores en Atlanta listados en un grupo llamado [atlanta] en su inventario, y debe tener credenciales SSH que funcionen para cada máquina en ese grupo. Para reiniciar todos los servidores en el [atlanta] grupo:
$ ansible atlanta -a "/sbin/reboot"
De forma predeterminada, Ansible usa solo 5 procesos simultáneos. Si tiene más hosts que el valor establecido para el recuento de bifurcaciones, Ansible hablará con ellos, pero tardará un poco más. Para reiniciar el [atlanta] servidores con 10 bifurcaciones paralelas:
$ ansible atlanta -a "/sbin/reboot" -f 10
/ usr / bin / ansible se ejecutará de forma predeterminada desde su cuenta de usuario. Para conectarse como un usuario diferente:
$ ansible atlanta -a "/sbin/reboot" -f 10 -u username
El reinicio probablemente requiera una escalada de privilegios. Puede conectarse al servidor como username
y ejecute el comando como el root
usuario mediante el volverse palabra clave:
$ ansible atlanta -a "/sbin/reboot" -f 10 -u username --become [--ask-become-pass]
Si agrega --ask-become-pass
o -K
, Ansible le solicita la contraseña que debe usar para la escalada de privilegios (sudo / su / pfexec / doas / etc).
Nota
los módulo de mando no admite la sintaxis de shell extendida como canalización y redirecciones (aunque las variables de shell siempre funcionarán). Si su comando requiere una sintaxis específica de shell, use la shell
módulo en su lugar. Leer más sobre las diferencias en el Trabajar con módulos página.
Hasta ahora, todos nuestros ejemplos han utilizado el módulo ‘comando’ predeterminado. Para usar un módulo diferente, pase -m
para el nombre del módulo. Por ejemplo, para usar el módulo ansible.builtin.shell:
$ ansible raleigh -m ansible.builtin.shell -a 'echo $TERM'
Al ejecutar cualquier comando con Ansible ad hoc CLI (a diferencia de Playbooks), preste especial atención a las reglas de cotización de shell, por lo que el shell local retiene la variable y se la pasa a Ansible. Por ejemplo, usar comillas dobles en lugar de simples en el ejemplo anterior evaluaría la variable en el cuadro en el que estaba.
Administrar archivos
Una tarea ad hoc puede aprovechar el poder de Ansible y SCP para transferir muchos archivos a varias máquinas en paralelo. Para transferir un archivo directamente a todos los servidores del [atlanta] grupo:
$ ansible atlanta -m ansible.builtin.copy -a "src=/etc/hosts dest=/tmp/hosts"
Si planea repetir una tarea como esta, use el ansible.builtin.template módulo en un libro de jugadas.
los ansible.builtin.file El módulo permite cambiar la propiedad y los permisos de los archivos. Estas mismas opciones se pueden pasar directamente al copy
módulo también:
$ ansible webservers -m ansible.builtin.file -a "dest=/srv/foo/a.txt mode=600" $ ansible webservers -m ansible.builtin.file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"
los file
módulo también puede crear directorios, similar a mkdir -p
:
$ ansible webservers -m ansible.builtin.file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"
Además de eliminar directorios (recursivamente) y eliminar archivos:
$ ansible webservers -m ansible.builtin.file -a "dest=/path/to/c state=absent"
Gestionar paquetes
También puede usar una tarea ad hoc para instalar, actualizar o eliminar paquetes en nodos administrados usando un módulo de administración de paquetes como yum. Para asegurarse de que un paquete esté instalado sin actualizarlo:
$ ansible webservers -m ansible.builtin.yum -a "name=acme state=present"
Para asegurarse de que se instala una versión específica de un paquete:
$ ansible webservers -m ansible.builtin.yum -a "name=acme-1.5 state=present"
Para asegurarse de que un paquete tenga la última versión:
$ ansible webservers -m ansible.builtin.yum -a "name=acme state=latest"
Para asegurarse de que un paquete no esté instalado:
$ ansible webservers -m ansible.builtin.yum -a "name=acme state=absent"
Ansible tiene módulos para administrar paquetes en muchas plataformas. Si no hay un módulo para su administrador de paquetes, puede instalar paquetes usando el módulo de comando o crear un módulo para su administrador de paquetes.
Gestionar usuarios y grupos
Puede crear, administrar y eliminar cuentas de usuario en sus nodos administrados con tareas ad hoc:
$ ansible all -m ansible.builtin.user -a "name=foo password=" $ ansible all -m ansible.builtin.user -a "name=foo state=absent"
Ver el ansible.builtin.user documentación del módulo para obtener detalles sobre todas las opciones disponibles, incluido cómo manipular grupos y pertenencia a grupos.
Gestionar servicios
Asegúrese de que se inicie un servicio en todos los servidores web:
$ ansible webservers -m ansible.builtin.service -a "name=httpd state=started"
Alternativamente, reinicie un servicio en todos los servidores web:
$ ansible webservers -m ansible.builtin.service -a "name=httpd state=restarted"
Asegúrese de que un servicio esté detenido:
$ ansible webservers -m ansible.builtin.service -a "name=httpd state=stopped"
Recopilación de hechos
Los hechos representan variables descubiertas sobre un sistema. Puede utilizar hechos para implementar la ejecución condicional de tareas, pero también solo para obtener información ad hoc sobre sus sistemas. Para ver todos los hechos:
$ ansible all -m ansible.builtin.setup
También puede filtrar esta salida para mostrar solo ciertos hechos, consulte la ansible.builtin.setup documentación del módulo para obtener más detalles.
Ahora que comprende los elementos básicos de la ejecución de Ansible, está listo para aprender a automatizar tareas repetitivas utilizando Playbooks de Ansible.
Ver también
- Configuración de Ansible
-
Todo sobre el archivo de configuración de Ansible
- Índice de colección
-
Explore colecciones, módulos y complementos existentes
- Trabajar con libros de jugadas
-
Uso de Ansible para la implementación y la gestión de la configuración
- Lista de correo
-
¿Preguntas? ¿Ayudar? Ideas? Pasa por la lista de Grupos de Google
- irc.freenode.net
-
Canal de chat de IRC #ansible
Sección de Reseñas y Valoraciones
Si sostienes algún reparo o disposición de progresar nuestro ensayo te inspiramos ejecutar un exégesis y con gusto lo analizaremos.