Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Automatizar actualizaciones en GNU/Linux con Ansible y Jenkins

Automatizar actualizaciones en GNU/Linux con Ansible y Jenkins

Tabla de contenidos

¿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

bash
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:

text
[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:

bash
#!/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»

Jenkins000001 Jenkins000002

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

Jenkins000003

Un saludo

:wq!

Comentarios