Automatización de sistemas con Ansible - OpenSouthCode 16

30
Automatización de sistemas con

Transcript of Automatización de sistemas con Ansible - OpenSouthCode 16

Page 1: Automatización de sistemas con Ansible - OpenSouthCode 16

Automatización de sistemas con

Page 2: Automatización de sistemas con Ansible - OpenSouthCode 16

WhoisFrancisco López

Sysadmin

Page 3: Automatización de sistemas con Ansible - OpenSouthCode 16

Sysadmin: the hard way

Page 4: Automatización de sistemas con Ansible - OpenSouthCode 16

The hard way▪ Máquinas con

configuración similar▪ Servidores “artesanos”

Page 5: Automatización de sistemas con Ansible - OpenSouthCode 16

Simple IT Automation

Page 6: Automatización de sistemas con Ansible - OpenSouthCode 16

Ansible▪ Aprovisionamiento▪ Gestión de la configuración▪ Orquestación▪ Despliegue de aplicaciones

Page 7: Automatización de sistemas con Ansible - OpenSouthCode 16

Caracteristicas▪ Simple pero potente

Configuración en YAML. Plantillas en jinja2.▪ Sin agentes

Usa SSH.▪ Segura

...eehm, bueno, todo lo seguro que sea SSH.

Page 8: Automatización de sistemas con Ansible - OpenSouthCode 16

Caracteristicas▪ Muy bien documentada

▪ Respaldada por Red Hat

Page 9: Automatización de sistemas con Ansible - OpenSouthCode 16

¡Es software libre!▪ Core licenciado como GPLv3

▪ Modulos libres

▪ Roles libres

Page 10: Automatización de sistemas con Ansible - OpenSouthCode 16

Ansible 101Conceptos básicos

Page 11: Automatización de sistemas con Ansible - OpenSouthCode 16

Inventory192.168.1.10opensouthcode.org

[webservers]web1.osc.orgweb2.osc.org

[databases:children]databases-mastersdatabases-slaves

[databases-masters]master[1:3].osc.org

[databases-slaves]slaves[1:3].osc.org

Listado de máquinas

Page 12: Automatización de sistemas con Ansible - OpenSouthCode 16

- name: Instalar vim apt: pkg=vim state=present update_cache=yes

Task Acción a realizarCompuesta de módulo y parámetros

apt update && apt install vim

Page 13: Automatización de sistemas con Ansible - OpenSouthCode 16

Módulos Amazon EC2Amazon ECSAmazon S3CommandMongoDBRedisMySQLPostgresIISWindows

NagiosZabbixRabbitMQAzureDigital OceanDockerGoogle CloudVMWareRackspaceLinux

Apache2DjangoJBOSSJiraGitGithubSubversionF5CiscoHAProxy

Page 14: Automatización de sistemas con Ansible - OpenSouthCode 16

PlayInventario + tareas- name: Play simple de ejemplo hosts: webservers tasks: - name: Instalar vim apt: pkg=vim state=present update_cache=yes

- name: Instalar tcpdump apt: pkg=tcpdump state=present

Page 15: Automatización de sistemas con Ansible - OpenSouthCode 16

Playbook Sucesión de playsBase de ejecución de Ansible

Page 16: Automatización de sistemas con Ansible - OpenSouthCode 16

Config management

Page 17: Automatización de sistemas con Ansible - OpenSouthCode 16

Variables

app_path: “/home/app”

monitoring: server-name: nagios server: 11.22.33.44

Se pueden definir “en cualquier sitio”

Page 18: Automatización de sistemas con Ansible - OpenSouthCode 16

inventario

host_vars

group_vars

main.yml

web.osc.org.yml

---app_path: “/home/app”servername: “web.osc.org”monitoring: server-name: “nagios” server: 11.22.33.44

Page 19: Automatización de sistemas con Ansible - OpenSouthCode 16

Variables

- name: Clonar repositorio git:repo="[email protected]:app.git" clone=yes dest={{ app_path }}

Se referencian usando jinja2

Page 20: Automatización de sistemas con Ansible - OpenSouthCode 16

TemplatesAplicar variables a ficheros de configuración

<VirtualHost _default_:{{ http_port }}> ServerName {{ servername }} ...

Page 21: Automatización de sistemas con Ansible - OpenSouthCode 16

TemplatesAplicar variables a ficheros de configuración

- name: Subir config apache template: src=00-app.conf.j2 dest=/path/00-app.conf owner=root group=root mode=0644

Page 22: Automatización de sistemas con Ansible - OpenSouthCode 16

inventario

host_varsgroup_vars

main.yml

templates00-app.conf.j2

Page 23: Automatización de sistemas con Ansible - OpenSouthCode 16

Inclusión y roles

Page 24: Automatización de sistemas con Ansible - OpenSouthCode 16

InclusiónEn un playbook se pueden incluir otros ficheros con tasks--- - hosts: webservers tasks:

- include: dependencies.yml - include: deployment.yml - include: apache.yml

Page 25: Automatización de sistemas con Ansible - OpenSouthCode 16

RolesEncapsulación de configuraciones--- - hosts: webservers

roles: - base - django - apache2

Page 26: Automatización de sistemas con Ansible - OpenSouthCode 16

inventario

host_varsgroup_vars

main.yml

templatesroles

Page 27: Automatización de sistemas con Ansible - OpenSouthCode 16

apache2files

meta

roles

handlers

tasks

varstemplates

Page 28: Automatización de sistemas con Ansible - OpenSouthCode 16

¿Resultados?

Page 29: Automatización de sistemas con Ansible - OpenSouthCode 16
Page 30: Automatización de sistemas con Ansible - OpenSouthCode 16

¡Gracias!¿Preguntas?@[email protected]