Automatizar actualizaciones en GNU/Linux con Ansible y Jenkins

¿Que es Ansible?

Ansible es una plataforma de software libre para configurar y administrar computadoras. Combina instalación multi-nodo, ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación.1​ Maneja nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior2​ para instalarlo. Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones reusables de los sistemas.3

¿Que es Jenkins?

Jenkins es un software de Integración continua open source escrito en Java. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.

Jenkins proporciona integración continua para el desarrollo de software. Es un sistema corriendo en un servidor que es un contenedor de servlets, como Apache Tomcat. Soporta herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como scripts de shell y programas batch de Windows. El desarrollador principal es Kohsuke Kawaguchi. Liberado bajo licencia MIT, Jenkins es software libre.1

Anteriormente ya vimos como instalar Ansible:

Instalar ansible en Debian 9

 

En primer lugar creamos nuestra receta

ansible@red-orbita:~/ $ cat linux-update.yaml

– hosts: SRV-DEV
sudo: yes
tasks:
# Actualizar Suse
– zypper:
name: ‘*’
state: latest
type: patch
when:
ansible_distribution == ‘Suse’
# Actualizar Red hat y CentOS
– name: Update Red hat
yum: >
update_cache=yes
name=*
state=latest
update_cache=yes
when: >
ansible_distribution == ‘CentOS’
or
ansible_distribution == ‘RedHat’
# Actualizar Debian y ubntu
– name: Update Debian
apt: >
update_cache=yes
cache_valid_time=1200
upgrade=dist
force=yes
when: >
ansible_distribution == ‘Debian’
or
ansible_distribution == ‘Ubuntu’

Tenemos que agregar los servidores previamente en el fichero hosts y copiado la clave publica para que realice la conexión sin contraseña:

[SRV-DEV]
192.168.1.150
192.168.1.151

 

Ahora vamos a crear en jenkins una tarea para la ejecución con el siguiente código:

 

#!/bin/bash

echo «Running Ansible against: $FQDN»
export ANSIBLE_HOST_KEY_CHECKING=False
export JENKINS_USER=»ansible»
sudo -S su – ansible -c «ansible-playbook -l SRV-DEV /etc/ansible/roles/paybook/linux-update.yaml -u ansible»

Ejecutamos el job cread y si todo salío bien nos mostraría el log algo similar a esto:

 

 

Un saludo

:wq!

 

Una respuesta a “Automatizar actualizaciones en GNU/Linux con Ansible y Jenkins”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *