GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar la herramienta de automatización Ansible en CentOS 7

Hola y bienvenido a nuestro artículo sobre Ansible Automation Tool que es similar a Chef o Puppet. En primer lugar, Ansible es fácil de instalar, simple de configurar y fácil de entender. En TI es muy importante mantener sus sistemas y procesos muy simples. Ansible se utiliza para la gestión de la configuración que ayuda a configurar sus servidores web y de aplicaciones y facilita la versión de sus archivos y también puede usarlo para gestionar diferentes configuraciones en sus entornos de desarrollo, ensayo y producción. También se utiliza para el despliegue de aplicaciones. Puede automatizar por completo sus implementaciones de aplicaciones de múltiples niveles que pueden manejar múltiples servidores y bases de datos grupales.

Ansible usa SSH para conectarse a los servidores y ejecutar las tareas configuradas conectándose a los clientes a través de SSH, sin necesidad de configurar ningún agente especial. Todo lo que necesita es un python y un usuario que pueda iniciar sesión y ejecutar los scripts, luego Ansible comienza a recopilar datos sobre la máquina, como qué sistema operativo y paquetes se instalaron y qué otros servicios se están ejecutando, etc. Después de eso, Ansible ejecuta los libros de jugadas en formato de archivo YAML. , los libros de jugadas son un montón de comandos que pueden realizar múltiples tareas.

Requisitos

En este tutorial, instalaremos y configuraremos Ansible en CentOS 7 y administraremos sus dos nodos para comprender su funcionalidad.

En nuestro entorno de prueba, utilizaremos tres máquinas virtuales Linux CentOS 7, una para controlar dónde está instalado el servidor Ansible y dos nodos que serán administrados por esta máquina de control a través de SSH. Asegúrese de tener instalado Python 2.6 o 2.7 en sus nodos de control y cliente para una instalación exitosa de Ansible.

Conectémonos a su servidor de control utilizando un usuario root o un usuario no root con privilegios sudo para comenzar con Ansible.

Configurar repositorio EPEL

Primero, debemos habilitar el repositorio 'epel' para CentOS 7 en el servidor de control porque el paquete Ansible no está disponible en los repositorios predeterminados de yum.

Para habilitar el repositorio EPEL en CentOS 7/RHEL 7, escriba:

# yum install epel-release

Instalación de Ansible

Ahora podemos instalar Ansible en CentOS 7 usando el comando 'yum' que lo instalará, incluidas sus dependencias requeridas, eligiendo la tecla 'y' para continuar como se muestra.

# yum install ansible

Una vez que haya instalado Ansible con éxito, puede verificar y verificar su versión instalada usando el siguiente comando.

# ansible --version

Autenticación SSH basada en claves con Nodos

Para realizar cualquier implementación/administración desde el 'host local' al host remoto, primero debemos generar claves en el servidor de Ansible y copiar la clave pública en los nodos del cliente. Ejecute el siguiente comando en su servidor Ansible para generar sus claves públicas y privadas.

# ssh-keygen -t rsa -b 4096

Después de generar la clave SSH, ahora cópiela en el servidor remoto utilizando el siguiente comando para colocar claves SSH en hosts remotos.

# ssh-copy-id root@node1_ip

Si está utilizando un puerto ssh personalizado, menciónelo con el parámetro '-p' en su comando. Se le pedirá la contraseña de su nodo de cliente, una vez que haya proporcionado la contraseña correcta de su nodo de cliente, se autorizará con éxito.

# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

También puede agregar manualmente la clave rsa pública de su servidor de control a los nodos de clinet. Para hacerlo, inicie sesión en su nodo de cliente y siga los pasos a continuación.

Primero copie la clave del archivo '/root/.ssh/id_rsa.pub' y guárdela en el nodo del cliente dentro del directorio de inicio de su servidor o cualquier otro usuario que desee autenticar.

[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7

Guarde y cierre el archivo y podrá acceder a ambos nodos de cliente desde el servidor de control sin solicitar la contraseña de root.

[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90

[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.

[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.

Creación de inventario de hosts remotos

Después de configurar la autenticación de claves SSH entre el servidor de Ansible y sus nodos de cliente, ahora configurará esos hosts remotos en el servidor de control de Ansible editando el archivo '/etc/ansible/hosts'. Este archivo contiene el inventario de hosts remotos a los que Ansible necesita conectarse a través de SSH para administrar los sistemas.

Abre el archivo usando cualquiera de tus editores para configurarlo.

[root@centos-7 ~]# vim /etc/ansible/hosts

Aquí, en el archivo de configuración, hemos configurado ambos nodos de cliente para usar el puerto '2178', si usa el puerto ssh predeterminado, simplemente pondrá su dirección IP de host.

Después de guardar el archivo, ejecutemos el siguiente comando ansible con las opciones '-m' para que el módulo verifique la conectividad desde el servidor Ansible a los servidores remotos.

# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73

También puede usar el comando belo para hacer ping a todos sus hosts configurados.

[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}

72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}

Ejecución de comandos remotos

En los ejemplos anteriores, solo usamos el módulo ping para hacer ping a los hosts remotos. Hay varios módulos disponibles para ejecutar comandos en hosts remotos. Ahora usaremos el módulo 'comando' con el comando 'ansible' para obtener información de la máquina remota, como información del nombre de host del sistema, espacio libre en disco y tiempo de actividad, como se muestra.

# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83

De manera similar, puede ejecutar muchos comandos de shell usando ansible en el host de un solo cliente, así como en el grupo de sus hosts similares, como si tuviera un grupo configurado de 'servidores web' en su archivo de inventario de host ansible, luego ejecutará el comando así.

# ansible -m command -a "uptime" web-servers

Creación de libros de jugadas en Ansible

Los libros de jugadas son los scripts de administración de configuración de Ansible que se utilizan para administrar configuraciones e implementaciones en máquinas remotas. Los playbooks contienen un conjunto de políticas que desea que se implementen en sus sistemas remotos.

Vamos a crear su primer libro de jugadas con el nombre del archivo como 'httpd.yml', luego configuraremos un host para ejecutar un servidor web apache. Aquí elegirá las configuraciones a las que apuntar las máquinas en su infraestructura y qué usuario remoto completar las tareas como se muestra en el archivo de configuración.

[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
  remote_user: root
  tasks:
  - name: Installing Latest version of Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: (Enable it on System Boot)
    service: name=httpd enabled=yes
    notify:
      - start apache
  handlers:
    - name: start apache
      service: name=httpd state=started

Guarde y cierre el archivo y luego cree un archivo html de demostración que se colocará en la raíz de documentos predeterminada de los hosts remotos.

[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible

Apache Web Server is installed by Ansible

Congratulations, Apache is managed through Ansible

Comprensión de las configuraciones del libro de estrategias

Como hemos creado nuestro primer libro de jugadas, ahora es importante entender cómo funciona. Todos los archivos YAML deben comenzar con (tres guiones) '---', que indica el inicio de un documento. Luego, la línea de hosts es una lista de uno o más grupos o patrones de host separados por dos puntos. Puede mencionar la cuenta de usuario remoto junto con el host.

---
- hosts: 72.25.10.83
  remote_user: root

Luego tenemos un conjunto de tareas, donde cada juego contiene una lista de tareas, que se ejecutan en orden, una a la vez, contra todas las máquinas que coinciden con el patrón de host, antes de pasar a la siguiente tarea.

tasks:
- name: Installing Latest version of Apache
  yum: pkg=httpd state=latest
- name: Copying the demo file
  template: src=/etc/ansible/index.html dest=/var/www/html
            owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
  service: name=httpd enabled=yes

Cada tarea debe tener un nombre, que se incluye en el resultado. Este es el resultado para nosotros, por lo que es bueno tener descripciones razonablemente buenas de cada paso de la tarea. Entonces, nuestra primera tarea instalará la última versión de apache, la segunda copiará el html de demostración (/etc/ansible/index.html) al directorio /var/www/html de hosts remotos y la tercera habilitará el inicio automático del servicio de apache durante el arranque del sistema.

Después de eso, las acciones de 'notificación' se activan al final de cada bloque de tareas en un libro de jugadas, y solo se activarán una vez, incluso si se notifican por varias tareas diferentes.

notify:
  - start apache

El elemento 'notificar' contiene un elemento llamado "iniciar apache". Esta es una referencia a un controlador, que puede realizar ciertas funciones cuando se lo llama desde dentro de una tarea. Definiremos el controlador "iniciar apache" a continuación.

handlers:
  - name: start apache
    service: name=httpd state=started

Los controladores son listas de tareas que solo se ejecutan cuando una tarea les ha dicho que se han producido cambios en el sistema cliente. Como tenemos un controlador que inicia el servicio de apache después de instalar el paquete.

Ejecución de Playbook en Ansible

Después de configurar la configuración de su libro de jugadas, puede ejecutar su libro de jugadas usando el siguiente comando.

# ansible-playbook -l 72.25.10.83 httpd.yml

Después de esto, abra su navegador y navegue hasta la dirección IP de su host remoto mencionado en el inventario ansible.

http://your_client_node_ip/

Por lo tanto, si obtiene la página anterior, significa que ha instalado correctamente Apache con el libro de jugadas de Ansible. De la misma manera, puede crear muchos libros de jugadas para instalar sus aplicaciones complejas en múltiples hosts.

Conclusión

Ansible es bastante interesante y muy fácil, ligero. Fácilmente puede ponerse en marcha en 5 min. Entonces, instaló Ansible con éxito en CentOS 7 y aprendió su uso básico para crear un libro de jugadas simple para la automatización de la instalación de Apache. Espero que hayas encontrado esto útil en la automatización de tus tareas.


Cent OS
  1. Cómo configurar claves SSH en CentOS 8

  2. Cómo instalar Ansible en CentOS 8 Linux

  3. Cómo instalar Ansible en CentOS 7

  4. Cómo instalar Ansible en CentOS 8

  5. Cómo configurar claves SSH en CentOS 8

Cómo configurar Openshift Origin en CentOS 7

Cómo configurar el inicio de sesión sin contraseña SSH en CentOS 7 / RHEL 7

Cómo configurar el inicio de sesión sin contraseña SSH en CentOS 8 / RHEL 8

Cómo instalar Wireshark en CentOS 8

Cómo generar una clave SSH en CentOS 8

Cómo instalar la herramienta de automatización de compilación Gradle en CentOS 8