GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo:Introducción a Ansible

Introducción

Ansible es una herramienta de administración de sistemas que permite la administración de múltiples dispositivos desde un dispositivo central. Se compara con herramientas como Puppet o Chef, pero mientras que esos paquetes requieren la instalación de agentes en los sistemas cliente, Ansible opera pasando comandos a través de ssh sin necesidad de agentes en absoluto. Echaremos un vistazo a algunas de las tareas administrativas que Ansible es capaz de hacer para que pueda tener una mejor idea de si Ansible podría ser adecuado para usted.


.

Requisitos

  • Un dispositivo de control Linux, BSD u OSX.
  • acceso ssh (cortafuegos y credenciales) a los dispositivos cliente desde su dispositivo de control. Ansible prefiere el uso de claves ssh para acceder a los dispositivos de los clientes, pero también le mostraremos opciones usando nombre de usuario y contraseña.
  • Python 2.6 o 2.7 instalado en el dispositivo de control.

.

Instalación

Ansible está disponible a través de los administradores de paquetes de las principales distribuciones de Linux/BSD/OSX. También está disponible a través del instalador pip de Python.

CentOS/Fedora:

sudo yum install ansible

Ubuntu (primero deberá agregar el PPA de Ansible):

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

Arch Linux:

pacman -S ansible

FreeBSD:

sudo pkg install ansible

Administrador de paquetes de Python, pip (los usuarios de OSX también pueden instalar con pip):

sudo pip install ansible

Configuración del acceso a clientes de Ansible

Anfitriones

Uno de los beneficios de usar Ansible es la capacidad de administrar varios clientes desde un dispositivo de control, desde la misma interfaz de terminal. Puede especificar varios grupos de servidores de clientes según la función, la ubicación o el sistema operativo creando grupos en /etc/ansible/hosts archivo.

[mailservers]
smtp.orl-fl.example.com
smtp.dal-tx.example.com

[db_servers]
db.orl-fl.example.com
db.sfo-ca.example.com

[orlando]
smtp.orl-fl.example.com
db.orl-fl.examle.com

[nameservers]
ns[01:12].example.com

Un nombre entre corchetes [] define un nombre de grupo e incluye hosts en la lista que le sigue. También puede indicar un rango secuencial dentro de un patrón de nombre de host con corchetes y dos puntos, como en ns[01:12].example.com arriba.

Un cliente puede existir en varios grupos. El nombre del grupo funciona como un alias para la lista de grupos, lo que facilita la referencia a qué grupo de servidores se dirigirá con su comando o playbook de Ansible en particular.
.

Teclas ssh

Ansible funciona mejor cuando su servidor de control, desde el cual ejecutará los comandos de Ansible, puede usar claves ssh para acceder a los hosts de los clientes. Cuando ejecuta un comando de Ansible sin opciones adicionales, por defecto intenta acceder a clientes remotos a través de claves ssh.

Sugerencia:si ha asegurado su clave ssh privada con una frase de contraseña, puede ser inconveniente e ineficiente tener que ingresar esa frase de contraseña cada vez que necesite descifrarla para cada sesión de ssh que abrirá con Ansible. Para simplificar este proceso, abra un shell separado con ssh-agent . Cuando importa una clave privada en este shell, solo tiene que ingresar su frase de contraseña una vez para agregar la clave privada sin cifrar.

ssh-agent bash
ssh-add ~/.ssh/id_rsa

El primer comando abre un nuevo shell bash. El ssh-add El comando le solicitará la frase de contraseña de su clave privada y luego importará la clave privada RSA a este shell. Por supuesto, puede sustituir la clave privada adecuada si usa id_ecdsa o id_dsa , por ejemplo.

.

.

Acceso ssh (sin claves ssh)

Si tiene servidores de clientes que no tienen claves ssh configuradas, aún puede usar Ansible con su usuario actual y solicitar su contraseña de usuario. Por ejemplo, podríamos querer usar el ping para verificar que todos nuestros hosts en db_servers el grupo responde.

ansible db_servers -m ping --ask-pass

Este comando primero solicitará la contraseña ssh del usuario actual para acceder a todos los servidores en db_servers grupo antes de ejecutar el módulo en cada cliente.

Nota:este comando requerirá que su usuario exista en cada cliente, tenga acceso ssh y use la misma contraseña.

Además, el ping El módulo no está relacionado con el ping ICMP que prueba la conectividad de la red. Su uso con el ansible El comando verifica que se pueda acceder a un servidor cliente con el usuario indicado y que el servidor cliente tenga una versión de Python con la que Ansible pueda trabajar. El ping el módulo debería devolver un pong respuesta al completar con éxito..

.

Acceso ssh (con contraseña)

Los comandos predeterminados de Ansible también suponen que, además de usar claves ssh, está usando sudo sin contraseña. Si tiene servidores de clientes que requieren una contraseña para obtener acceso a sudo, puede usar opciones adicionales para convertirse en sudo y solicitar una contraseña de sudo. Entonces, por ejemplo, para reiniciar todos los servidores en los mailservers grupo usando el nombre de usuario username .

ansible mailservers -a "/sbin/reboot" -u username --become --ask-become-pass

El --become indica que el usuario se convertirá en un usuario privilegiado (sudo), y el --ask-become-pass La opción solicita a Ansible que solicite la contraseña para convertirse en ese usuario privilegiado antes de ejecutar el comando.

El --become y --ask-become-pass Las opciones son opciones más nuevas (a partir de la versión 1.9 de Ansible) destinadas a reemplazar el antiguo --sudo y --ask-sudo-pass (-K ) opciones, respectivamente. Estas versiones anteriores todavía funcionan. El reemplazo de sudo para become amplía el alcance de estas opciones para incluir la integración con herramientas que utilizan medios distintos de sudo para habilitar la escalada de privilegios.

.

Algunos comandos básicos de la CLI de Ansible

Si bien el poder real de Ansible radica en el uso de libros de jugadas, también puede ejecutar ansible comando para realizar una administración rápida de clientes para casos en los que no tiene sentido crear un libro de jugadas o en los que es posible que necesite enviar un solo comando a un grupo de dispositivos cliente.

El ansible El comando sigue el patrón ansible [group] OPTIONS .
.

Ejecutar actualizaciones de Yum

Si, por ejemplo, desea ejecutar actualizaciones de yum en los servidores de sus mailservers grupo, puede realizar esta tarea con el siguiente comando de Ansible:

ansible mailservers -m yum -a "name=* state=latest" --become

Este comando actualiza todos los servidores en mailservers grupo con el yum módulo (-m ). El -a La opción indica un argumento particular entre comillas dobles; en este caso, actualizar todos los paquetes instalados (usando el * comodín) a su último estado.
.

Copiar archivo a clientes

Puede utilizar Ansible para distribuir un archivo a un grupo de servidores cliente.

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh"

Este comando invoca la copy módulo e indica el src (fuente) y dest (destino) entre comillas para los argumentos. La ubicación de origen predeterminada es el dispositivo en el que se ejecuta este comando de Ansible y puede ser absoluta o relativa. La ubicación de destino es la ubicación en el dispositivo cliente remoto y siempre debe ser absoluta.

También puede usar la copy módulo para refinar aún más los atributos del archivo que está copiando.

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh owner=foo group=bar mode=0755"

Este comando también cambia los permisos de propietario, grupo y archivo del archivo en cada cliente en orlando grupo.
.

Ejecutar comando de shell

También puede ejecutar un script en cada cliente con el shell módulo.

ansible orlando -m shell -a '/opt/scripts/foo.sh >> /home/foo/bar.txt' 

Este comando ejecutaría foo.sh script y redirige su salida a /home/foo/bar.txt expediente. Tenga en cuenta las comillas simples aquí. Necesitará comillas simples en lugar de dobles para poder pasar el >> operador al shell remoto.
.

Un amuse-bouche de Ansible

Hay muchos más comandos y módulos que puede usar, pero esta muestra debería proporcionar una buena introducción a lo útil que puede ser Ansible si administra incluso una pequeña cantidad de servidores. Si se encuentra en la posición a veces poco envidiable de tener que realizar tareas repetitivas en la infraestructura de su servidor, esperamos que estos ejemplos le hayan dado una idea de cómo Ansible puede ayudarlo a trabajar de manera más inteligente (¡y más eficiente!).

Asegúrese de volver a consultarnos en el futuro para obtener más artículos sobre la administración del servidor y otras cosas que puede hacer con Ansible. Atlantic.Net ofrece una amplia colección de soluciones flexibles de alojamiento de VPS para una pequeña empresa emergente o una empresa empresarial bien establecida.
.
.


Linux
  1. Comenzando con Zsh

  2. Comenzando con ls

  3. Primeros pasos con PostgreSQL en Linux

  4. ¿Cómo empezar con Juju?

  5. Primeros pasos con SSH en Linux

Primeros pasos con los libros de jugadas de Ansible

Introducción a los comandos ad hoc de Ansible

Primeros pasos con el administrador de paquetes de Nix

Primeros pasos con systemctl

Cómo:Introducción a Ubuntu 14.04 LTS con LAMP

Cómo:Introducción a Ubuntu 14.04 LTS con LEMP