|
Getting your Trinity Audio player ready...
|
tiene como finalidad suministrar los pasos necesarios para la instalación y configuración básica de la aplicación Ansible en equipo con la distribución GNU/Linux Debian.
Requisitos:
- Se debe contar con suficiente privilegios para la configuración de aplicativos
- Se debe contar con (02) equipos con ssh instalado
Plataforma:
- Equipos de arquitectura 64 bits
- Sistema operativo ‘GNU/Linux’ Debian versión 9.1 (actualmente estable)
Aplicaciones:
- Ansible -> 2.2.1.0-2
- openssh-server -> 1:7.4p1-10+deb9u1
- openssh-client -> 1:7.4p1-10+deb9u1
Para la configuración de la solución se utilizarán dos (02) maquinas con debian 9.1:
– Un (01) Equipo para instalación y configuración de la maquina de administración:
- Hostname: admin
- IP Interna: 192.168.1.2
– Un (01) equipos para la instalación y configuración de nodo
- Hostname: nodo1
- IP Interna: 192.168.1.3
– Usuario a utilizar: operador
INSTALACION DE APLICATIVOS: Maquina Administración (ADMIN)
operador@admin:/# aptitude install ansible openssh-client
Configuración Equipo: Maquina Administración (ADMIN)
1. Generar llave conexión ssh con el usuario a utilizar para administrar Ansible, en nuestro caso «operador»
operador@admin:~$ ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/home/operador/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/operador/.ssh/id_rsa. Your public key has been saved in /home/operador/.ssh/id_rsa.pub. The key fingerprint is: SHA256:VR3vrpIWy0MqZqPlF8knGAUemjlQmNWsh9YKgEBd6Oo operador@admin The key's randomart image is: +---[RSA 2048]----+ |+o. +*ooo. .... | |. .oo. =o... .. | | .. =+... .| | .. +.+. . | | . o oS+ . .| | . . . = + . | |. . B + .| | E o= o B . | | .+.+ . o. | +----[SHA256]-----+ operador@admin:~$
2. Copia la llave pública generada, al nodo que desea administrar con Ansible
operador@admin:~$ scp /home/operador/.ssh/id_rsa.pub operador@192.168.1.3:/tmp
CONFIGURACION EQUIPO: NODO
3. Entrar al nodo y copiar la llave pública del servidor ansible, en la carpeta del usuario root
operador@nodo1:/# cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
Nota: si el nodo no tiene creado el archivo autorized_key, siga los siguientes pasos:
3.1 Crear la carpeta .ssh
operador@nodo1:/# mkdir -p /root/.ssh
3.2 Ajustar los permisos:
operador@nodo1:/# chmod 0700 /root/.ssh
3.2 Copiar la llave
operador@nodo1:/# cat /tmp/id_rsa.pub > /root/.ssh/authorized_keys
3.3 Colocar los permiso correspondiente al archivo
operador@nodo1:/# chmod 0600 /root/.ssh/authorized_keys
4. verificar la configuración del servicio ssh
operador@nodo1:/# vim /etc/ssh/sshd_config
4.1 Descomentar las siguientes opciones:
PubkeyAuthentication yes AuthorizedKeysFile %home/.ssh/authorized_keys .ssh/authorized_keys .ssh/authorized_keys2 UseDNS no
4.2 Reiniciar el servicio ssh
operador@nodo1:/# /etc/init.d/ssh restart
DESDE LA Maquina Administración (ADMIN)
5. Incorporar en el archivo de inventario de Ansible el nodo que serán gestionado por Ansible
operador@admin:~$ sudo vim /etc/ansible/hosts
Efectuar los siguientes cambios:
[webserver] 192.168.1.3
donde:
– [webserver] -> Nombres de grupos, que se utilizan en la clasificación de los sistemas
– 192.168.1.3 -> dirección ip del Nodo a administrar con Ansible
Nota: Es recomendable crear varios grupos, dependiendo de la funcionalidad de los sistemas (web, base de datos, archivos, …), pero no es buena idea poner los sistemas en más de un grupo
6. Efectuar pruebas de conexión, ping a todo los nodos:
operador@admin:~$ ansible all -m ping -u usuario
192.168.1.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
donde:
- all -> host al que va dirigido la ejecución de la sentencia, se puede utilizar comodin «all», nombre de grupo, dirección ip, o combinaciones separados por «,»
- -m -> nombre del módulo ha ajecutar, en éste caso «ping»
- -u -> usuario con que se conectará por ssh (debe ser un usuario válido en el host remoto, puede ser root siempre y cuando se permita la conexión por SSH)
NOTA: Si existe algún problema para ejecutar el comando, es necesario depurar la conexión, para ello se puede utilizar la opción «-vvvv», la cual permite obtener la salida de depuración. ejemplo: $ ansible all -m ping -u usuario -vvv
7. Ping a todo los nodos del grupo webserver:
operador@admin:~$ ansible -m ping webserver
192.168.1.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
8. Verificar el consumo de memoria del nodo:
operador@admin:~$ ansible -m shell -a 'free -m' 192.168.1.3
161.196.181.52 | SUCCESS | rc=0 >>
total used free shared buff/cache available
Mem: 996 66 564 11 365 785
Swap: 1021 0 1021
Hasta acá Ansible se encuentra en funcionamiento. El archivo de inventario de Ansible (/etc/ansible/host) es flexible y soporta varias formas de configuración, como por ejemplo:
Ejemplo #1: Configurar Alias al nodo
1. Editar archivo de inventario de Ansible
operador@admin:~$ sudo vim /etc/ansible/hosts
Efectuar los siguientes cambios:
[webserver] nodo1 ansible_host=192.168.1.3
donde:
– [webserver] -> Nombres de grupos, que se utilizan en la clasificación de los sistemas
– nodo1 -> alias del equipo (no es necesario que sea el verdadero nombre del host)
– ansible_host -> host a conectar
– 192.168.1.3 -> dirección ip del host a administrar con Ansible
2. Ping al alias del nodo1:
operador@admin:~$ ansible -m ping nodo1
nodo1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ejemplo #2: Configurar Tipo de conexión y puerto
3. Editar archivo de inventario de Ansible
operador@admin:~$ sudo vim /etc/ansible/hosts
Efectuar los siguientes cambios:
[webserver] nodo1 ansible_connection=ssh ansible_host=192.168.1.3 ansible_port=22
donde:
– [webserver] -> Nombres de grupos, que se utilizan en la clasificación de los sistemas
– nodo1 -> alias del equipo (no es necesario que sea el verdadero nombre del host)
– ansible_connection -> tipo de conexión, éste puede ser el nombre de cualquiera de los plugins de conexión de ansible(local, docker, …), en nuestro caso SSH.
– ansible_host -> host a conectar, en nuestro caso la ip 192.168.1.3
– ansible_port -> puerto de conexión (en caso de ssh tener otro puerto), en nuestro caso 22
4. Ping al alias del nodo1:
operador@admin:~$ ansible -m ping nodo1
nodo1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ejemplo 3#: Las conexión deben efectuarse desde el usuario al cual se le configura la relación de confianza con la conexión SSH (punto 1), en el caso operar con un usuario distinto al usuario administrador de ansible, se puede configurar la conexión de la siguiente forma:
5. Editar archivo de inventario de Ansible
operador@admin:~$ sudo vim /etc/ansible/hosts
Efectuar los siguientes cambios:
[webserver]
nodo1 ansible_connection=ssh ansible_host=192.168.1.3 ansible_port=22 ansible_user=root ansible_ssh_private_key_file=/root/.ssh/id_rsa
donde:
– [webserver] -> Nombres de grupos, que se utilizan en la clasificación de los sistemas
– nodo1 -> alias del equipo (no es necesario que sea el verdadero nombre del host)
– ansible_connection -> tipo de conexión
– ansible_host -> host a conectar, en nuestro caso la ip 192.168.1.3
– ansible_port -> puerto de conexión (en caso de ssh tener otro puerto), en nuestro caso 22
– ansible_user -> usuario con el cual se efectuarán las acciones dentro del nodo, en nuestro caso root
– ansible_ssh_private_key_file -> la ruta de la llave privada de ssh
