Enviado por admin el
Ansible es un programa que permite la gestión y/o configuración de servidores y/o grupos de servidores de forma remota. En este modo es posible automatizar la mayoría de los procesos y al mismo tiempo tener un control centralizado de las distintas configuraciones. Existen otros programas que permiten este tipo de gestión, entre los cuales podemos citar Puppet y Chef. La gran ventaja de Ansible, es que relativamente fácil de utilizar/configurar, no se apoya en agentes que hay que instalar en los servidores que se quiere gestionar (clientes) ya que utiliza una conexión SSH para conectarse a los clientes.
Muchos se preguntarán. ¿Porque no debería seguir utilizando mi script? Porque centralizando la gestión y el control de uno o un grupo de servidores, tengo la posibilidad de realizar cambios que luego se podrán aplicar a todos los servidores sin tener que acceder a cada uno de ellos singularmente. Porque si el proceso que se encarga de la configuración de los servidores, encuentra un error en el proceso, lo parará. Una vez corregido el error y reiniciado el proceso, éste ejecutará solamente los pasos que todavía no se han procesado.
El programa y los módulos que lo acompaña se basan en el lenguaje de programación Python. En esta primera parte veremos como instalarlo y como ejecutar el primer comando. La instalación se basa en un VPS de Digital Ocean con CentOS 6.5 64 bit y 512Mb de RAM.
Accedemos al servidor vía SSH y actualizamos el sistema:
yum update -y
Instalamos el editor nano y wget:
yum install nano wget -y
Continuamos con la configuración de la zona horaria (personalizar según su país):
rm /etc/localtime
ln -s /usr/share/zoneinfo/America/Bogota /etc/localtime
El idioma (español):
nano /etc/sysconfig/i18n
modificamos esta línea:
LANG="en_US.UTF-8"
para que quede:
LANG="es_CO.iso88591"
Guardamos los cambios.
Instalamos el paquete del network time protocol que se utiliza para tener actualizada la hora del servidor:
yum install ntp -y
Lo configuramos para que arranque en automático:
chkconfig ntpd on
Lo iniciamos:
service ntpd start
Creamos la partición de Swap ya que no viene por defecto:
dd if=/dev/zero of=/swapfile bs=1024 count=512k
mkswap /swapfile
swapon /swapfile
Configuramos la partición de swap para que arranque con el sistema:
nano /etc/fstab
al final del archivo añadimos la línea que sigue:
/swapfile swap swap defaults 0 0
Guardamos los cambios y se cambiamos los permisos del archivo recién creado:
chmod 0600 /swapfile
Reiniciamos el sistema:
reboot
Volvemos a acceder al VPS vía SSH y pasamos a la instalación del programa. Podemos utilizar dos formas:
- desde las fuentes
- desde el repositorio EPEL
Instalación desde las fuentes:
yum install gcc gcc-c++ -y
yum install git python-setuptools python-tools python-devel -y
cd /usr/src
git clone git://github.com/ansible/ansible.git
cd ansible
source hacking/env-setup
easy_install pip
pip install paramiko PyYAML jinja2 httplib2
Los servidores que queremos manejar se indican en el archivo hosts que Ansible buscará en la carpeta /etc/ansible. Como esa carpeta todavía no existe, la creamos:
mkdir /etc/ansible
Creamos el file hosts
nano /etc/ansible/hosts
donde añadimos solamente una línea:
localhost
Guardamos los cambios. De esta forma indicamos a Ansible que gestionaremos el VPS local. Miramos la versión de Ansible instalada:
ansible --version
ansible 1.6 (devel 92aacb198c) last updated 2014/03/04 01:38:57 (GMT -500)
Ejecutamos nuestro primer comando (un ping):
ansible all -m ping --ask-pass
La primera vez que ejecutamos un comando en un servidor cliente, habrá que añadir el servidor en la lista de host conocidos:
paramiko: The authenticity of host 'localhost' can't be established.
The ssh-rsa key fingerprint is 37ff3ec4c33465a07f50e764c4e33183.
Are you sure you want to continue connecting (yes/no)?
yes
El output del comando:
localhost | success >> {
"changed": false,
"ping": "pong"
}
Instalación desde los repositorios epel:
Seguramente esta segunda forma de instalar Ansible es mucho más sencilla. Instalamos el paquete de los repositorios EPEL:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Luego Ansible:
yum install ansible
Se instalarán también todas las dependencias necesarias. Miramos la versión del programa instalado:
ansible --version
ansible 1.4.3
Renombramos el archivo hosts que viene por defecto:
mv /etc/ansible/hosts /etc/ansible/hosts.old
Creamos uno nuevo:
nano /etc/ansible/hosts
Añadimos la misma línea vista en la instalación desde la fuentes.
localhost
Guardamos los cambios y ejecutamos el mismo comando:
ansible all -m ping --ask-pass
paramiko: The authenticity of host 'localhost' can't be established.
The ssh-rsa key fingerprint is 37ff3ec4c33465a07f50e764c4e33183.
Are you sure you want to continue connecting (yes/no)?
yes
localhost | success >> {
"changed": false,
"ping": "pong"
}
El resultado será el mismo. Próximamente la segunda parte.
2 comentarios
Hola Andrea, excelente
Enviado por Gustavo García (no verificado) el
Hola Andrea, excelente aportación..
Me quedan un par de dudas..
- Ansible es Gratis o tiene algún costo por licenciamiento?
- Hasta cuantos servidores pudiera administrar?
- Cuenta con la opción de guardar logs para después auditar los movimientos/cambios realizados?
Saludos,
Gustavo García
Re: Hola Andrea, excelente
Enviado por admin el
Hola Gustavo,
las respuestas:
1. Ansible es gratuito. La parte de pago es la GUI que simplifica la gestión de lo servidores (Ansible Tower)
2. En teoría no hay limite a los servidores.
3. Creo que si, pero no estoy seguro al 100%. Una cosa que si se es que si se cambia la configuración de un servidor desde Ansible y luego se ejecuta nuevamente, el programa solamente procesa los nuevos comandos.
No he tenido tiempo de seguir con el estudio por tiempo, pero es una tarea que tengo pendiente.
Saludos