GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar y configurar Ansible en Redhat Enterprise Linux 8

Este tutorial cubre la instalación y configuración paso a paso de Ansible en Redhat Enterprise Linux 8.
Ansible es el sistema líder de administración de configuración de código abierto. Facilita a los administradores y equipos de operaciones el control de miles de servidores desde una máquina central sin instalar agentes en ellos.

En este tutorial aprenderás:

  • Descripción general de Ansible
  • Instalar y configurar Python
  • Establecer SSH sin contraseña
  • Instalar Ansible
  • Prueba y administración de Ansible

Arquitectura Ansible.

Requisitos de software y convenciones utilizadas

Descripción general de Ansible

Ansible es un motor de automatización de TI radicalmente simple que automatiza el aprovisionamiento en la nube, la administración de la configuración, la implementación de aplicaciones, la orquestación dentro del servicio y muchas otras necesidades de TI.

Diseñado para implementaciones de múltiples niveles desde el primer día, Ansible modela su infraestructura de TI al describir cómo se interrelacionan todos sus sistemas, en lugar de solo administrar un sistema a la vez.

No utiliza agentes ni infraestructura de seguridad personalizada adicional, por lo que es fácil de implementar y, lo que es más importante, utiliza un lenguaje muy simple (YAML, en forma de Ansible Playbooks) que le permite describir sus trabajos de automatización de una manera que se aproxima inglés simple. Ansible funciona al conectarse a sus nodos y enviarles pequeños programas, llamados "módulos de Ansible".
Estos programas están escritos para ser modelos de recursos del estado deseado del sistema. Luego, Ansible ejecuta estos módulos (a través de SSH de manera predeterminada) y los elimina cuando termina.

Su biblioteca de módulos puede residir en cualquier máquina y no se requieren servidores, demonios o bases de datos. Por lo general, trabajará con su programa de terminal favorito, un editor de texto y, probablemente, un sistema de control de versiones para realizar un seguimiento de los cambios en su contenido.

Instalar y configurar Python

La versión predeterminada de Python en RHEL 8 es Python 3.6. Pero Python 2 sigue estando disponible en RHEL 8. Si por algún motivo falta Python 3.6 en la instalación de Red Hat Enterprise Linux 8, deberá instalarlo manualmente.

Python 3.6 se puede instalar en RHEL 8 ejecutando el siguiente comando en su terminal. Python debe instalarse tanto en el servidor Ansible como en todos los hosts/clientes donde se conectará.

# yum install python3
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04.
Dependencies resolved.
======================================================================================================================================================
 Package                 Arch                  Version                                     Repository                                            Size
======================================================================================================================================================
Installing:
 python36                x86_64                3.6.6-17.el8+2102+a4bbd900                  rhel-8-for-x86_64-appstream-beta-rpms                 22 k
Enabling module streams:
 python36                                      3.6                                                                                                   

Transaction Summary
======================================================================================================================================================
Install  1 Package

Total download size: 22 k
Installed size: 22 k
Is this ok [y/N]: y
Downloading Packages:
python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm                                                                        6.0 kB/s |  22 kB     00:03    
------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                 6.0 kB/s |  22 kB     00:03     
warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)                                                         3.2 kB/s | 3.3 kB     00:01    
Importing GPG key 0xF21541EB:
 Userid     : "Red Hat, Inc. (beta key 2) <[email protected]>"
 Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta
Is this ok [y/N]: y
...
Installed:
  python36-3.6.6-17.el8+2102+a4bbd900.x86_64                                                                                                          

Complete!

Para usar Python 3, simplemente escriba python3 en la terminal.

Debería haber notado que para usar Python 3, el comando es python3 y python2 para Python 2. ¿Qué sucede si sus aplicaciones están configuradas para hacer referencia a python, que no está disponible en todo el sistema? Obtendrá el siguiente error bash.

# python
-bash: python: command not found

Puede usar el mecanismo de alternativas para habilitar el comando python no versionado en todo el sistema y establecerlo en una versión específica. Para configurar Python 3 como predeterminado, ejecute el siguiente comando.

# alternatives --set python /usr/bin/python3

Ejecutar python -V debería mostrar la versión predeterminada de Python configurada:

#python -V
Python 3.6.6

o iniciando Python una consola:

# python
Python 3.6.6 (default, Oct 16 2018, 01:53:53) 
[GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Establecer SSH sin contraseña

Crea el usuario ansible en todos los hosts:

# useradd ansible ;  echo "" | passwd --stdin ansible

Haga la entrada necesaria en el archivo sudoers /etc/sudoers para usuario ansible para acceso sudo sin contraseña:

ansible ALL=(ALL) NOPASSWD: ALL

Ahora genera la clave SSH en Ansible Server:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ansible/.ssh/id_rsa): 
Created directory '/home/ansible/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ansible/.ssh/id_rsa.
Your public key has been saved in /home/ansible/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|     .           |
|      o   E    o |
|       + *    + o|
|      . S *  o * |
|         . += + +|
|          ==o@ +.|
|           OBoO+=|
|          +o++*BB|
+----[SHA256]-----+

Cópielo en servidores remotos como usuario ansible:

$ ssh-copy-id ansible@rhel8-ansible-client
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub"
The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established.
ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI.
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
ansible@rhel8-ansible-client's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'ansible@rhel8-ansible-client'"
and check to make sure that only the key(s) you wanted were added.

Instalar Ansible

Una vez que se haya instalado Python, proceda a instalar Pip, que es un administrador de paquetes de Python que usaremos para instalar Ansible:

# yum -y install python3-pip
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04.
Package python3-pip-9.0.3-4.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Una vez que tenemos pip3 instalado, utilícelo para instalar Ansible en el sistema de gestión de Ansible como usuario de ansible.

$ pip3 install ansible --user

Puede ver el Ansible instalado usando el siguiente comando:

$ ansible --version
ansible 2.7.6
  config file = None
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible
  executable location = /home/ansible/.local/bin/ansible
  python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Pruebas y gestión

Cree el archivo de inventario de Ansible, el valor predeterminado es /etc/ansible/hosts pero puede copiar el archivo de hosts en el directorio de inicio del usuario ansible. También puede crear un grupo de hosts remotos como se muestra a continuación en el archivo de hosts.


[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110

Puede usar el módulo de ping para probar Ansible y, después de una ejecución exitosa, puede ver el siguiente resultado.

$ ansible -i hosts 192.168.1.109 -m ping
192.168.1.109 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

La opción -i se utiliza para proporcionar la ruta al archivo de inventario. Debería obtener el mismo resultado para el nombre del grupo "aplicación".

$ ansible -i hosts app -m ping
192.168.1.108 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.109 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.110 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Conclusión

La simplicidad y la capacidad de Ansible para disminuir la complejidad de otras herramientas lo han convertido en un candidato confiable para su entorno. Su principal preocupación es la seguridad y la fiabilidad. Utiliza OpenSSH para el transporte, y el lenguaje está diseñado en torno a la auditabilidad incluso por aquellos que no están familiarizados con el programa. Ansible es lo suficientemente adecuado para administrar configuraciones pequeñas con un puñado de instancias, así como entornos empresariales.


Linux
  1. Cómo instalar y probar Ansible en Linux

  2. Instalar y configurar Ansible en Linux

  3. Cómo instalar y configurar Ansible en Rocky Linux/CentOS 8

  4. Cómo instalar y configurar TensorFlow en Rocky Linux 8

  5. Cómo instalar y configurar EMC PowerPath en Linux

Cómo instalar y configurar Slack en distribuciones de Linux

Cómo instalar y configurar Perf en distribuciones de Linux

Cómo instalar y configurar Terraform en distribuciones de Linux

Cómo instalar y configurar Gradle en distribuciones de Linux

Cómo instalar y configurar Git en distribuciones de Linux

Cómo instalar y configurar Yarn en distribuciones de Linux

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema Red Hat Enterprise Linux 8
    Software Python3, Ansible
    Otro Acceso privilegiado a su sistema Linux como root o a través de sudo comando.
    Convenciones # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios