Este documento describe cómo Ansible puede ser utilizado para automatizar la configuración de servidores. Explica que Ansible usa playbooks escritos en YAML para definir la configuración deseada y luego ejecuta tareas a través de módulos para configurar los servidores. También describe conceptos clave como inventarios, módulos, plugins, hechos y comandos ad-hoc.
2. En el comienzo…
En cualquier S.O en el comienzo
existio la linea de comandos.
$ bash
# ksh
Cmd
Esta fue la primera linea de
comunicacion entre la humanidad y
las maquinas.
4. En mi caso:
• Usar la linea de comandos para
configurar un servidor
manualmente es chevere, lo
maximo.
• Hasta que tienes familia y los
server se multiplican por 30 o mas.
• Entonces se vuelve tedioso y
perdida de tiempo que puede ser
invertido en otras cosas.
5. • Ya se!, Voy a escribir
código para que el
servidor se configure
solo!
8. sh/bash/perl
Scripts :(
. No son muy entendibles, la sintaxis
es horrible.
• Bien para soluciones pequeñas.
• No hay orientacion a objetos
• No es nativamente portable
11. POR QUE ANSIBLE?
Impacto Minimo
Usa authenticacion que ya existe.
ssh por defecto y puede usar su,
sudo o pbrun.
Reusa comandos habituales.
Facil Instalacion, Predecible,
portatil y expandible
Aspira a ser idempotente.
Enterprise Solution. Ansible Tower.
12. Que es Ansible?
Configurador de sistemas?
Orquestador de sistemas?
Gestor de instalacion?
Ansible es un megazord
de infraestructura.
13. Gestión de la Configuración
Despliegue
Orquestacion
Automatizacion
Etc…
14.
15. Inventory: Lista de maquinas, grupos y variables
asociadas.
Modules: son los que trabajan, el codigo detras de las
tareas.
Plugins: callback, action e incluye modules.
Facts: hechos, datos recogidos de las maquinas elegidas.
Playbook: coleccion de jugadas, Plays
Play: Itera sobre la lista de tareas asociandola con la
lista de maquinas.
Task: invocacion de un modulo para trabajo.
Terminos de Ansible
21. $ ansible all -m ping
$ ansible web-group -m ping
$ ansible all -a "/bin/echo hi"
$ ansible all -a "/sbin/reboot" -f 10
$ ansible all -m yum -a "name= state=installed"
$ ansible all -m user -a "name=raul password=D3vopsday"
$ ansible all -m service -a "name=nginx state=started"
Comandos Ad-Hoc
22. Playbooks
• Archivos YAML
• Usa declaraciones para definir tu
configuración.
• Puede contener diferentes Plays
apuntados a diferentes grupos de
hosts.
23. azure-apache.yml
---
- hosts: all
become: true
become_method: sudo
vars_files:
- pass.yml
tasks:
- name: Probemos variables
debug: var=ansible_all_ipv4_addresses[0]
- name: Instalando apache
apt: name=apache2 state=latest
- name: Verificando que el proceso esta corriendo
service: name=apache2 state=started
- name: Paramos apache
service: name=apache2 state=started
- name: Iniciamos apache
service: name=apache2 state=started
- name: Esperamos a que el puerto 80 responda esto indica que apache esta operando.
wait_for: host={{ ansible_all_ipv4_addresses[0] }} port=80 timeout=300 state=started
tags:
- startapache