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

Cómo instalar Ansible en CentOS 7/RHEL 7/Ubuntu 18.04/16.04 y Debian 9

Ansible es una herramienta de administración de configuración gratuita y admite la administración de configuraciones de sistemas similares a Unix y Microsoft Windows. Ansible gestiona los nodos sobre SSH o PowerShell y python para ser instalado en ellos.

Ansible lo ayuda a realizar la configuración, administración e implementación de software en cientos de nodos mediante SSH, toda la operación se puede ejecutar con un solo comando ansible . Pero, en algunos casos, es posible que necesite ejecutar varios comandos para la implementación.

Esta guía lo ayudará a instalar Ansible en CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

Arquitectura

Si toma otras herramientas de administración de configuración como títeres, chef y CFEngine, el software del servidor se instala en una máquina y las máquinas cliente se administran a través del agente. Donde Ansible, los nodos son administrados por la máquina de control (servidor Ansible) a través de SSH, por lo que no habrá ningún agente ejecutándose en las máquinas del nodo.

Ansible implementa módulos en los nodos a través de SSH, y estos módulos se almacenan temporalmente en los nodos y se comunican con el servidor de Ansible a través de un protocolo JSON. Los módulos no son más que un script escrito en Python, Perl, Ruby , bash, etc.

Requisitos del sistema

Máquina de control

Puede ejecutar Ansible en cualquier máquina que tenga instalado Python 2.6 o 2.7 (Windows no es compatible con la máquina de control).

Compatible con Red Hat, Debian, CentOS, OS X y cualquiera de los BSD.

Nodos de cliente

Las máquinas cliente deben tener al menos Python 2 (versión 2.6 o posterior) o Python 3 (versión 3.5 o posterior)

Si tiene habilitado SELinux en nodos remotos, deberá instalar libselinux-python paquete en los nodos antes de usar cualquier función relacionada con la copia/archivo/plantilla en Ansible

Medio ambiente

Instalar Ansible en CentOS 7/RHEL 7/Ubuntu 18.04/16.04 y Debian 9

Configuración de la máquina de control

Para instalar Ansible tendremos que Habilitar el repositorio EPEL en CentOS 7 / RHEL 7 .

### CentOS 7 ###

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

### RHEL 7 ###

subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms

### Ubuntu 18.04 / Ubuntu 16.04 ###

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

### Debian 9 ###

sudo apt-get install dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
sudo apt-get update

Instale Ansible.

### CentOS 7 / RHEL 7 & Fedora 28 ###

yum install -y ansible

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y ansible

Una vez que Ansible esté instalado, verifique la versión de Ansible ejecutando el siguiente comando.

ansible --version

Salida:

ansible 2.6.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Configurar nodos administrados

Las máquinas cliente deben tener al menos Python 2 (versión 2.6 o posterior) o Python 3 (versión 3.5 o posterior).

### CentOS 7 / RHEL 7 & Fedora ###

yum install -y python

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y python

SELinux (CentOS/RHEL/Fedora)

Si tiene habilitado SELinux en los nodos administrados, deberá instalar el siguiente paquete en los nodos antes de usar cualquier función relacionada con la copia/archivo/plantilla en Ansible.

yum install -y libselinux-python

Autenticación SSH

Como se dijo anteriormente, Ansible usa OpenSSH nativo para la comunicación remota. Ansible admite tanto sin contraseña y contraseña autenticación para ejecutar comandos en nodos administrados.

Autenticación de clave SSH (Autenticación sin contraseña)

Cuando se trata de autenticación ssh, de forma predeterminada, utiliza claves ssh (autenticación sin contraseña) para autenticarse con la máquina remota.

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

Aunque el enlace anterior es para CentOS, los pasos también funcionarán para Ubuntu/Debian.

Una vez que configure la comunicación sin contraseña, verifíquela.

ssh [email protected]
ssh [email protected]

Ahora debería poder iniciar sesión en la máquina remota sin la contraseña.

Autenticación de contraseña

La autenticación de contraseña también se puede usar cuando sea necesario proporcionando la opción --ask-pass . Esta opción requiere sshpass a la máquina de control.

### CentOS 7 / RHEL 7 & Fedora ### 

yum install -y sshpass 

### Ubuntu 18.04 / 16.04 & Debian 9 ### 

sudo apt-get update
sudo apt-get install -y sshpass
Aquí, para esta demostración, he utilizado la comunicación sin contraseña entre el nodo de control de ansible y los nodos administrados.
Nombre de usuario del servidor de Ansible =root
Nombre de usuario del nodo administrado =raj

Crear inventario de Ansible

Edite (o cree) /etc/ansible/hosts archivo. Este archivo contiene el inventario de hosts remotos a los que Ansible se conectará a través de SSH para administrarlos.

### CentOS 7 / RHEL 7 & Fedora ###

vi /etc/ansible/hosts

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo nano /etc/ansible/hosts

Coloque uno o más sistemas remotos y agrúpelos. Aquí, he agregado ambas máquinas al grupo de servidores de demostración.

Los grupos se utilizan para clasificar sistemas para un uso particular. Si no especifica ningún grupo, actuarán como hosts no agrupados.

[demo-servers]
192.168.1.20
192.168.1.30

Primer Comando

Ahora es el momento de comprobar todos nuestros nodos con solo hacer un ping desde la máquina de control, para ello usaremos el comando ansible con opciones -m (módulo de carga) y todos (todos los servidores).

# all servers - Works when both server's and client's user name are same (Passwordless)

ansible all -m ping

# all servers - "raj" is managed node's user (Passwordless)

ansible all -u raj -m ping

OR

# Only demo-servers group - "raj" is managed node's user (Passwordless)

ansible demo-servers -u raj -m ping

OR

# If you use password authendication

ansible -m ping all -u raj --ask-pass

Salida:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

En el ejemplo anterior, hemos utilizado el módulo de ping con ansible Comando para hacer ping a todos o a un grupo de hosts remotos.

De la misma manera, podemos usar varios módulos con ansible comando, puede encontrar los módulos disponibles aquí .

Aquí, para esta demostración, he usado comunicación sin contraseña entre el nodo de control de ansible y los nodos administrados.
Nombre de usuario del servidor de Ansible =root
Nombre de usuario del nodo administrado =raj
Entonces, todos mis comandos de ansible tendrán -u raj

Ejecución remota de comandos

Esta vez, usaremos el comando módulo con ansible Comando para obtener información de la máquina remota.

Por ejemplo, ejecutaremos hostname comando con comando módulo para obtener el nombre de host de los hosts remotos de una sola vez.

ansible -m command -a "hostname" -u raj demo-servers

Salida:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Obtendremos los detalles de la partición con el siguiente comando.

ansible -m command -a "df -hT" -u raj demo-servers

Salida:

192.168.1.30 | SUCCESS | rc=0 >>
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     395M  1.5M  393M   1% /run
/dev/sda4      ext4       94G  4.9G   84G   6% /
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0     squashfs   87M   87M     0 100% /snap/core/4486
/dev/loop3     squashfs  3.4M  3.4M     0 100% /snap/gnome-system-monitor/36
/dev/loop1     squashfs  1.7M  1.7M     0 100% /snap/gnome-calculator/154
/dev/loop2     squashfs  141M  141M     0 100% /snap/gnome-3-26-1604/59
/dev/loop4     squashfs   21M   21M     0 100% /snap/gnome-logs/25
/dev/loop5     squashfs   88M   88M     0 100% /snap/core/5328
/dev/loop6     squashfs   13M   13M     0 100% /snap/gnome-characters/69
/dev/sda1      vfat       93M  4.6M   88M   5% /boot/efi
tmpfs          tmpfs     395M   28K  395M   1% /run/user/120
tmpfs          tmpfs     395M   36K  395M   1% /run/user/1000
/dev/loop7     squashfs   15M   15M     0 100% /snap/gnome-logs/40

192.168.1.20 | SUCCESS | rc=0 >>
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        50G  1.1G   49G   3% /
devtmpfs                devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs                   tmpfs     1.5G  8.5M  1.4G   1% /run
tmpfs                   tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  188M  827M  19% /boot
/dev/mapper/centos-home xfs        46G   33M   46G   1% /home
tmpfs                   tmpfs     287M     0  287M   0% /run/user/1000
tmpfs                   tmpfs     287M     0  287M   0% /run/user/0

Para verificar el tiempo de actividad y los detalles de carga en ambos nodos.

 ansible -m command -a "uptime" -u raj demo-servers

Salida:

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

También puede comprobar el contenido de un archivo en particular.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers

Salida:

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

También puede guardar la salida en cualquier archivo redirigiendo como se muestra a continuación.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file

cat /tmp/ouput_file

De esta forma, puede ejecutar muchos comandos de shell usando ansible.

Ahora ha instalado correctamente Ansible en CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

LEER MÁS :Cómo crear playbooks de Ansible para la automatización de TI

Eso es todo.


Cent OS
  1. Cómo instalar Apache Hadoop en CentOS 7, Ubuntu 18.04 y Debian 9

  2. Cómo instalar Redis en CentOS 7/RHEL 7 y Ubuntu 18.04/Ubuntu 16.04

  3. Cómo instalar Ansible en Debian 11

  4. Cómo instalar Ansible en CentOS 7

  5. Cómo instalar Ansible en CentOS 8

Cómo instalar Kubernetes en CentOS 7, Ubuntu 18.04/16.04 y Debian 9

Cómo instalar y configurar Ansible en CentOS 8 / RHEL 8

Cómo instalar TeamViewer 15 en Fedora/RHEL/CentOS y Debian/Ubuntu

Cómo instalar VestaCP en Ubuntu/ Debian y RHEL/Centos

Cómo instalar Zabbix en RHEL/CentOS y Debian/Ubuntu

Cómo instalar TeamViewer 15 en RHEL/CentOS/Fedora y Debian/Ubuntu

    Nombre de host Dirección IP SO Propósito
    servidor.itzgeek.local 192.168.1.10 CentOS 7/Ubuntu 18.04/Debian 9 Máquina de control
    nodo1.itzgeek.local 192.168.1.20 CentOS 7 Nodo administrado 1
    nodo2.itzgeek.local 192.168.1.30 Ubuntu 18.04 Nodo administrado 2