Ansible es una herramienta de automatización de TI de código abierto que se utiliza para automatizar la administración de la configuración, el aprovisionamiento, la implementación de aplicaciones, la orquestación y muchos otros procesos de TI sin necesidad de instalar ningún agente en los nodos del cliente. Se basa en el protocolo SSH para comunicarse con los nodos del cliente. Ansible brinda facilidad de uso e instalación en comparación con otras herramientas similares, como títeres, chef, terraform, etc. En este tutorial, aprenderemos cómo instalar Ansible en CentOS 8 Linux y configurarlo.
Instalar Ansible en CentOS 8 Linux
EPEL
repositorio
[root@install-ansible ~]# dnf install epel-release -y
dnf
comandos.
[root@install-ansible ~]# dnf makecache CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01 CentOS Linux 8 - BaseOS 2.6 kB/s | 3.9 kB 00:01 CentOS Linux 8 - Extras 1.0 kB/s | 1.5 kB 00:01 Extra Packages for Enterprise Linux 8 - x86_64 8.7 kB/s | 11 kB 00:01 Extra Packages for Enterprise Linux Modular 8 - x86_64 9.6 kB/s | 10 kB 00:01 Remi's Modular repository for Enterprise Linux 8 - x86_64 501 B/s | 833 B 00:01 Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 802 B/s | 833 B 00:01 Metadata cache created.
Paso 3: Instalar Ansible
[root@install-ansible ~]# dnf install ansible -y Last metadata expiration check: 0:02:17 ago on Tue 01 Mar 2022 10:28:48 AM IST. Dependencies resolved. ============================================================================================================================================================= Package Architecture Version Repository Size ============================================================================================================================================================= Installing: ansible noarch 2.9.27-1.el8 epel 17 M Installing dependencies: python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k python3-jmespath noarch 0.9.0-11.el8 appstream 45 k python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k python3-pynacl x86_64 1.3.0-5.el8 epel 100 k sshpass x86_64 1.06-9.el8 epel 27 k Installing weak dependencies: python3-paramiko noarch 2.4.3-1.el8 epel 289 k Transaction Summary ============================================================================================================================================================= Install 7 Packages Installed: ansible-2.9.27-1.el8.noarch python3-bcrypt-3.1.6-2.el8.1.x86_64 python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64 Complete!
Paso 4: Verificar la instalación de ansible
[root@install-ansible ~]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
Configurar Ansible en CentOS 8
Considere la siguiente arquitectura para este tutorial. Puede extender lo mismo a n número de clientes.
Gestión/Administración de clientes desde Ansible Server
Para administrar clientes, SSH debe estar instalado y en ejecución. Los puertos SSH deben estar abiertos y accesibles desde Ansible Server.
/etc/hosts
archivo en el servidor ansible
En este artículo, usaremos /etc/hosts
archivo para la resolución de nombres DNS de la dirección IP del cliente
[root@ansible-server ~]# vim /etc/hostsDirección IP o nombres DNS para los clientes
Puede usar direcciones IP o nombres DNS de los clientes para administrar
Agregue las siguientes entradas en la dirección IP y el nombre de host del cliente de Ansible
10.180.10.122 ansible-client
Configurar autenticación sin contraseña SSH
Paso 6: Genere claves SSH en Ansible Server (nodo de administración) sin que se le solicite una frase de contraseña.
[centos@ansible-server ~]$ ssh-keygen -f id_rsa -t rsa -N '' Generating public/private rsa key pair. Your identification has been saved in id_rsa. Your public key has been saved in id_rsa.pub. The key fingerprint is: SHA256:vqvgSILGrVxCDsLuORbJojxiYDEFEFlNQi5ZrHeqYhE centos@ansible-server The key's randomart image is: +---[RSA 3072]----+ |+B*o. | |.+.o. | |o.o | |oE. . | |++=o S | |@*o . | |OB+o. . | |OX=o . . | |*=+ . ..o. | +----[SHA256]-----+
Paso 7: Copie las claves SSH a Ansible Client
[centos@ansible-server ~]$ ssh-copy-id centos@ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/centos/.ssh/id_rsa.pub" The authenticity of host 'ansible-client (10.180.141.122)' can't be established. ECDSA key fingerprint is SHA256:oDKa1jiDVmPzHmD0HqKr5v10xhalFVbklrdudxAFx5M. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /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 centos@ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'centos@ansible-client'" and check to make sure that only the key(s) you wanted were added.Solicitud de contraseña para el usuario de centos en ansible-client
Escriba la contraseña de inicio de sesión para el usuario de centos en Ansible-client por primera vez. Después de copiar las claves SSH, podrá iniciar sesión sin contraseña
Paso 8: Verificar conexión sin contraseña
[centos@ansible-server ~]$ ssh centos@ansible-client Last login: Tue Mar 1 05:57:15 2022 from 10.180.6.115 [centos@ansible-client ~]$
Paso 9: Acceso Sudo para centos
usuario en ansible-cliente
Asegúrate de que los centos
el usuario en ansible-client tiene acceso sudo sin contraseña. Esto ayuda a ansible a ejecutar cualquier root
comandos en ansible-client usando centos
usuario.
# visudo ## Add the below content centos ALL=(ALL) NOPASSWD:ALL
Ahora, el cliente ansible está listo para administrarse desde el servidor ansible (nodo de administración) mediante centos
usuario en ansible-client.
Cómo usar Ansible
Paso 10: Crear inventario de Ansible
Ansible mantiene una lista de toda la información del cliente remoto que administra en un archivo llamado inventory
expediente. El archivo de inventario de Ansible es simplemente un archivo de texto sin formato y la ubicación predeterminada del archivo es:/etc/ansible/hosts
Podemos crear un archivo de inventario de Ansible en una ubicación diferente a la predeterminada.
[centos@ansible-server ~]$ mkdir ~/ansible [centos@ansible-server ~]$ cd ~/ansible [centos@ansible-server ansible]$ vim hosts
Agregue todas las entradas del cliente ansible
ansible-client ansible_user=centosopción ansible_user en el archivo ansible/hosts
La opción ansible_user se usa para definir el usuario en el cliente ansible que ejecutará los comandos.
Archivo de inventario de Ansible:combinación de nombre de host y dirección IPTambién puede mezclar direcciones IP y nombres DNS de los clientes remotos en el archivo de inventario
10.180.10.122 ansible_user=centosAgrupe clientes remotos en el archivo de inventario
También puede agrupar clientes remotos en un archivo de inventario según su uso. Por ejemplo, si tiene 4 clientes como servidor web y 2 como servidor db.
[centos] ansible-client ansible_user=centos
Paso 11: Enumere todos los hosts del archivo de inventario
[centos@ansible-server ansible]$ ansible -i hosts --list-hosts all hosts (1): ansible-client
Paso 12: Verifique que los hosts estén activos
[centos@ansible-server ansible]$ ansible -i hosts -m ping all ansible-client | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Paso 13: Ejecute comandos en el cliente ansible remoto (basado en todo/nombre de grupo)
[centos@ansible-server ansible]$ ansible -i hosts -m shell -a "more /etc/redhat-release" ansible-client ansible-client | CHANGED | rc=0 >> CentOS Linux release 7.8.2003 (Core)
¡Eso es todo! Ahora comience a administrar sus clientes remotos usando ansible a su manera.
Ansible Playbook ayuda a administrar sus servidores más fácilmente al hacer que las acciones de TI complejas se ejecuten con una participación humana limitada o nula. Intentaremos cubrir Ansible Playbook en nuestro próximo artículo.