De 0 a 72,5 con Ansible

De 0 a 72,5 con Ansible

En esta presentación se mostrarán los beneficios de Ansible para la automatización de procesos de IT, sus esquemas de trabajo y los módulos más relevantes para su uso.

No hay un pasado una vez conoces Ansible.

639ea77b2ed92f49e4704caf0af44252?s=128

Pablo Martín

April 04, 2018
Tweet

Transcript

  1. 1.

    De 0 a 72,5 con Ansible P R 3 S

    S H XLIII Betabeers Huelva 4 de abril de 2018
  2. 2.

    ¿Qué es Ansible? Ansible is a software that automates software

    provisioning, configuration management, and application deployment. Ansible delivers simple IT automation that ends repetitive tasks and frees up DevOps teams for more strategic work. • Creada por Michael DeHaan (RedHat Inc.) • Mantenida por RedHat Inc., Ansible Inc. y la comunidad de Ansible. • https://www.ansible.com/
  3. 3.

    Funcionamiento básico • Está basado en ficheros de definición/configuración YAML.

    • En dichos ficheros se describe toda la infraestructura IT necesaria. • Usa Jinja2 como motor de plantillas • Se crean playbooks que son las unidades ejecutables. • Permite gestionar variables. • Permite gestionar inventarios. • Permite la generación de sistemas modulares. • Guarda estados de ejecución para posibles rupturas. • Existen clientes locales (Linux, MacOS, Win) para administrar los playbooks.
  4. 4.

    Elementos principales • Playbooks • Inventory • Config files •

    Group Vars • Roles • Templates • Handlers • Modules A continuación veremos uno a uno a través de un ejemplo.
  5. 6.

    Playbooks - name: App Server hosts: web become: yes become_user:

    root become_method: su gather_facts: False roles: - common - ruby - postgresql - webapp - nginx - unicorn
  6. 9.

    Group Vars # linux user (consul) linux_usergroup: users linux_userpassword: consul

    # recreate password when deployed linux_shell: /bin/bash # application name app_name: consul webapp_repo: git://github.com/arcosdelafrontera/consul.git # RAILS_ENV rails_env: development # ruby config ruby_version: 2.3.2 gemoptions: "gem: --no-ri --no-rdoc"
  7. 10.

    Roles [1] - name: Create user for Consul user: name=consul

    group={{ linux_usergroup }} password={{ linux_userpassword }} comment="Consul user" shell=/bin/bash state=present tags: setup
  8. 11.

    Roles [2] - name: Install extra packages apt: "pkg={{item}} state=latest

    force=yes update_cache=yes" with_items: - vim - git-core - curl - build-essential - libssl-dev - libyaml-dev - libsqlite3-dev - sqlite3 - libxml2-dev - nodejs - npm tags: setup
  9. 12.

    Roles [3] - name: Clone rbenv repo git: repo=git://github.com/sstephenson/rbenv.git version=master

    dest=/home/consul/.rbenv become: yes become_user: consul tags: ruby
  10. 13.

    Templates upstream app { # Path to Unicorn SOCK file,

    as defined previously server unix:/home/consul/consul/shared/sockets/unicorn.sock fail_timeout=0; } server { listen 80; server_name localhost; root /home/consul/consul/public; try_files $uri/index.html $uri @app; location @app { proxy_pass http://app; ...
  11. 14.

    Handlers Task: - name: update-rc.d command: update-rc.d unicorn_{{app_name}} defaults notify:

    restart unicorn tags: - unicorn Handler: - name: restart unicorn service: name=unicorn_consul state=restarted
  12. 15.

    Modules • Todo en Ansible se puede ejecutar mediante comandos

    de shell. • Se recomienda el uso de módulos siempre que exista uno para la tarea que queremos llevar a cabo. • Los módulos son abstracciones de un determinado grupo de comandos para facilitar su uso y mantenimiento. • Dado que Ansible se ha convertido en una herramienta muy utilizada, hay una ingente cantidad de módulos que te pueden ser de ayuda dependiendo de tu stack tecnológico (y de tu plataforma cloud). • El listado de módulos se puede consultar en la documentación oficial.
  13. 17.
  14. 18.

    Enlaces de interés • Web oficial: http://ansible.com • Documentación (getting

    started): https://docs.ansible.com/ • Toda la documentación: http://docs.ansible.com/ansible/latest/ • Listado de módulos: http://docs.ansible.com/ansible/latest/modules/modules_by_category.html • URL del ejemplo: https://github.com/enredacoop/ansible-consul • Un maravilloso video tutorial: https://www.youtube.com/watch?v=icR-df2Olm8