Ansible + tacos at dev hangout

Post on 15-Apr-2017

439 views 1 download

transcript

Ansible + Tacos

¿Qué es Ansible?_Simple automatización

_Provisión, configuración, despliegue, orquestación y más.

_No usa agentes

Ansible_YAML es muy simple

_Open source

_Written in python

Instalación

http://docs.ansible.com/ansible/intro_installation.html

¿Cómo funciona?_Ansible usa SSH

_En centos paramiko

Playbook_El lenguaje principal

_Describen un ambiente en particular

_Manejan configuración y despliegue

Ejemplo

https://github.com/sawyer-effect/chelajs

Hosts and UsersPor cada ‘play’ escogemos hosts y user

---

- hosts: webservers

remote_user: root

Tasks _Una o varias por ‘play’

_ Ejecutadas en secuencia

_Hosts define la lista de servers

Ejemplo de task

tasks: - name: Copy ansible inventory file to client copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts owner=root group=root mode=0644

Ejecutando

ansible-playbook playbook.yml --list-hosts

Inventory_Varios sistemas al mismo tiempo

_Default es /etc/ansible/hosts

_Maneja grupos

_Inventarios dinámicos

Ejemplo inventory[webservers]

www[01:50].example.com

[dbservers]

one.example.com

two.example.com

three.example.com

[databases]

db-[a:f].example.com

Host variables[atlanta]

host1 http_port=80 maxRequestsPerChild=808

host2 http_port=303 maxRequestsPerChild=909

_Tambien se pueden definir en host_vars

_Nombre del host en el archivo

Group Variables[atlanta]

host1

host2

[atlanta:vars]

ntp_server=ntp.atlanta.example.com

proxy=proxy.atlanta.example.com

Tips sobre variablesNo usen dash, ejemplo: foo-bar

- hosts: webservers

vars:

http_port: 80

Usando variablesMe puedo comer {{ max_value }} tacos

template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg

Roles

_Te ayudan a reutilizar tareas

_Separar tareas por responsabilidad

_Una mejor organización

Roles---

- hosts: webservers

roles:

- common

- webservers

- hosts: webservers

roles:

- { role: foo_app_instance, dir: '/opt/a', port: 5000 }

- { role: foo_app_instance, dir: '/opt/b', port: 5001 }

Role default variables_Variables default (menor prioridad)

defaults/main.yml

Ansible Galaxy

https://galaxy.ansible.com/

¿Preguntas?

¡Gracias!