Cómo crear un libro de jugadas Ansible en Ubuntu

Cómo crear un libro de jugadas Ansible en Ubuntu
Ansible es una potente herramienta de automatización y administración remota que le permite administrar todas sus máquinas remotas. Ansible es multiplataforma y puede trabajar en la mayoría de las máquinas sin requisitos para software adicional. Ansible también ofrece seguridad utilizando SSH y Python en máquinas remotas para ejecutar tareas especificadas.

Admite dos métodos para administrar máquinas remotas: comandos ad hoc y libros de jugadas Ansible. Los comandos ad hoc son comandos sin procesar que puede ejecutar en el terminal para realizar una tarea en una sola instancia.

Ansible Playbooks, por otro lado, son archivos escritos en el idioma Yaml. Contienen un solo o un conjunto de tareas ejecutadas en la máquina remota. Debido a la naturaleza estricta de Yaml, los libros de jugadas Ansible requieren una atención cuidadosa en la sintaxis general.

Este tutorial lo guiará a través de los conceptos básicos de escribir libros de jugadas Ansible y ejecutar comandos en máquinas remotas. Para las ilustraciones de esta guía, configuraremos un libro de jugadas simple que instale y configure Apache Webserver.

NOTA: Este tutorial no tiene el propósito de enseñarte ansioso. Todo lo que hace es proporcionarle consejos y pautas para escribir un libro de jugadas Ansible.

Requisitos previos

Para obtener el valor máximo de esta guía, recomendamos seguir. Las siguientes son cosas que necesitas.

  • Ubuntu o una distribución basada en Debian: esta es la máquina que utilizamos para conectarse a las máquinas remotas utilizando SSH.
  • Una máquina remota para controlar con Ansible: recomendamos obtener un sistema Linux como Debian Server.

Una vez que tenga los dos requisitos anteriores cumplidos, podemos comenzar.

Cómo instalar Ansible en Debian/Ubuntu

El primer paso es asegurarnos de tener Ansible instalado y ejecutado en nuestra máquina local. Usaré Ubuntu para este tutorial.

Paso 1
Comience por actualizar su sistema utilizando los comandos a continuación:

actualización de sudo apt-get
sudo apt-get dist uprade -y

Paso 2
A continuación, use los comandos a continuación para instalar Ansible en Ubuntu.

sudo apt instalar software-properties-common
Sudo Add-APP-Repository-Yes-Update PPA: Ansible/Ansible
sudo apt install ansible -y

Ahora que lo hemos instalado en su máquina local, podemos proceder a configurarla.

Cómo configurar el inventario Ansible

Para administrar los servidores remotos que usan Ansible, debe decirle a Ansible. Hacemos esto creando un archivo de inventario que contiene las direcciones IP o los nombres de host de las máquinas remotas.

Por defecto, el archivo de inventario del host está en/etc/ansible/hosts.

Para aprender cómo puede crear un archivo de inventario de host personalizado en Ansible, considere uno de nuestros tutoriales.

Edite el archivo/etc/ansible/hosts y agregue la dirección IP de su máquina remota como se muestra a continuación:

En el inventario de ejemplo anterior, creamos un grupo de servidores (Linuxhint) que administraremos en este tutorial. Puede tener otros grupos como servidores web, base de datos_servers, etc.

Cómo configurar el par de claves SSH

Ansible usa SSH para iniciar sesión en las máquinas remotas especificadas y realiza las tareas definidas en el libro de jugadas. Por lo tanto, para minimizar la interacción y crear un flujo de trabajo totalmente automatizado, es mejor crear un par SSH para iniciar sesión en la máquina remota.

Paso 1
El primer paso es generar un par de claves SSH es usar la herramienta SSH-KeyGen. Use el comando como:

ssh-keygen

Esto le pedirá interactivamente que genere un par de claves SSH. Por simplicidad, acepte los valores predeterminados y no agregue una frase.

La salida para eso está a continuación:

Paso 2
A continuación, necesitamos copiar la tecla SSH a las máquinas remotas utilizando la herramienta SSH-Copy-ID. Use el comando como:

ssh-copy-id -i ~/.ssh/id_rsa.Usuario de pub@remoto_ip

La salida es como se muestra a continuación:

Para obtener más información sobre cómo usar el comando ssh-copy-id, use esto: use el comando de identificación de copia ssh.

Cómo escribir un libro de jugadas Ansible

Como mencioné anteriormente, Ansible Playbooks usa Yaml y, por lo tanto, debes observar convenciones sintácticas estrictas.

Si no está familiarizado con cómo escribir archivos YAML, considere el tutorial en este enlace: Leer valores de archivo YAML

Para mantenernos organizados, creemos un directorio donde vamos a almacenar todos nuestros libros de jugadas.

CD ~
mkdir anisble-workspace
CD Ansible-Workspace

Ahora que tenemos el directorio creado, creemos nuestro primer libro de jugadas Ansible (el archivo debería terminar con .extensión Yaml.

prueba VIM.yaml

Dentro del archivo YAML, agregue los siguientes contenidos.

---
- Anfitriones: todos
hecho realidad
convertirse en_method: sudo
tareas:
- Nombre: "Mostrar interfaces de red"
Comando: ifconfig
Registrarse: detalles
- Nombre: 'Obtener detalles de interfaces'
depurar:
Msg: "detalles.stdout "

Guarde el archivo y ejecutarlo en el servidor usando el comando:

Prueba de reproducción de Ansible.yaml

El comando emitirá la información sobre las interfaces de red en las máquinas remotas como se muestra en la imagen a continuación:

Aunque la salida no es bonita y no proporciona la forma más eficiente de recopilar información de red usando Ansible, ilustra acertadamente cómo podemos usar los comandos Ansible para ejecutar hosts remotos.

Cómo registrar variables en Ansible Playbooks

Para crear una variable en un libro de jugadas Ansible, usamos la palabra clave de registro seguido del nombre de la variable. También puede usar el nombre de la variable como clave y establecer su valor utilizando la notación de colon.

Por ejemplo, dos formas de registrar una variable en Ansible.

Registrarse: Variable1
Variable2: valor

Con la variable definida, la usa llamando a su nombre dentro de un conjunto de dos aparatos ortopédicos como:

'Llamando a la variable variable1 dentro de una cadena'
variable2

Escalada de privilegios en Ansible

Ansible también le permite actualizar los privilegios de un usuario utilizando. El método convertido es un valor booleano que especifica que las tareas dentro del libro de jugadas deben ejecutarse como root.

En nuestro primer libro de jugadas, establecemos el convertido en verdad y establecemos el método de escalada de privilegios como sudo.

Apto dentro de los libros de jugadas

Ansible nos proporciona formas de administrar paquetes APT en el sistema basado en Debian. Usando este método, puede actualizar, instalar y desinstalar los paquetes utilizando el libro de jugadas Ansible.

Considere la actualización.Archivo YAML que se muestra a continuación:

---
- Anfitriones: todos
convertirse en: si
convertirse en_method: sudo
tareas:
- Nombre: "Actualización de caché y actualización completa del sistema"
apto:
update_cache: verdadero
cache_valid_time: 3600
Force_apt_get: verdadero

Los libros de jugadas anteriores actualizan el caché del repositorio. Esto corresponde a un comando sin procesar como:

Actualización de sudo apt-get

Eso puede ser increíblemente útil al instalar software como Apache, Nginx, etc., en un host remoto.

Caso de uso de ejemplo

Esta sección creará un libro de jugadas que instala un servidor web Apache en el sistema Debian y realiza una configuración básica.

Este libro de jugadas muestra varias piezas móviles de Ansible y proporcionará un buen ejemplo de cómo funcionan los libros de jugadas Ansible.

Comience creando el archivo YAML.

vim config_apache.yaml

Dentro del Yaml, ingrese el siguiente libro de jugadas.

---
- Anfitriones: todos
hecho realidad
convertirse en_method: sudo
tareas:
- Nombre: "Actualizar paquetes y actualizar"
apto:
update_cache: verdadero
Actualización: DIST
Force_apt_get: verdadero
- Nombre: "Instale el servidor Apache"
apto:
Nombre: Apache2
Estado: último
- Nombre: "Crear raíz de documento"
archivo:
ruta: "/var/www/html"
Estado: directorio
Propietario: "Data www"
Modo: 0755
- Nombre: "Habilitar Apache en Firewall"
UFW:
Regla: Permitir
Puerto: 80
Proto: TCP
- Nombre: "Reiniciar el servicio Apache2"
servicio:
Nombre: Apache2
Estado: reiniciado

Guarde el archivo y ejecutarlo en el servidor remoto usando el comando:

Ansible-playbook --user = "Ubuntu" config_apache.yaml

Tras la ejecución exitosa, verá en la salida como se muestra.

Confirme que el servidor se ejecute usando curl como:

Curl 192.168.0.13

Debe obtener el código fuente de Apache predeterminado (fragmento que se muestra a continuación).

Y con eso, hemos concluido este tutorial.

Conclusión

Es bueno tener en cuenta que la funcionalidad de escribir libros de jugadas dependerá en gran medida de las tareas que necesita realizar. Sin embargo, espero que este tutorial le brinde algunas pautas y consejos para crear una de las suyas.

Feliz automatización!