automatización de sistemas con ansible - opensouthcode 16
TRANSCRIPT
Automatización de sistemas con
WhoisFrancisco López
Sysadmin
Sysadmin: the hard way
The hard way▪ Máquinas con
configuración similar▪ Servidores “artesanos”
Simple IT Automation
Ansible▪ Aprovisionamiento▪ Gestión de la configuración▪ Orquestación▪ Despliegue de aplicaciones
Caracteristicas▪ Simple pero potente
Configuración en YAML. Plantillas en jinja2.▪ Sin agentes
Usa SSH.▪ Segura
...eehm, bueno, todo lo seguro que sea SSH.
Caracteristicas▪ Muy bien documentada
▪ Respaldada por Red Hat
¡Es software libre!▪ Core licenciado como GPLv3
▪ Modulos libres
▪ Roles libres
Ansible 101Conceptos básicos
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
- 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
Módulos Amazon EC2Amazon ECSAmazon S3CommandMongoDBRedisMySQLPostgresIISWindows
NagiosZabbixRabbitMQAzureDigital OceanDockerGoogle CloudVMWareRackspaceLinux
Apache2DjangoJBOSSJiraGitGithubSubversionF5CiscoHAProxy
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
Playbook Sucesión de playsBase de ejecución de Ansible
Config management
Variables
app_path: “/home/app”
monitoring: server-name: nagios server: 11.22.33.44
Se pueden definir “en cualquier sitio”
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
Variables
- name: Clonar repositorio git:repo="[email protected]:app.git" clone=yes dest={{ app_path }}
Se referencian usando jinja2
TemplatesAplicar variables a ficheros de configuración
<VirtualHost _default_:{{ http_port }}> ServerName {{ servername }} ...
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
inventario
host_varsgroup_vars
main.yml
templates00-app.conf.j2
Inclusión y roles
InclusiónEn un playbook se pueden incluir otros ficheros con tasks--- - hosts: webservers tasks:
- include: dependencies.yml - include: deployment.yml - include: apache.yml
RolesEncapsulación de configuraciones--- - hosts: webservers
roles: - base - django - apache2
inventario
host_varsgroup_vars
main.yml
templatesroles
apache2files
meta
roles
handlers
tasks
varstemplates
¿Resultados?
¡Gracias!¿Preguntas?@[email protected]