Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Mejores prácticas
para la configuración de servidores
con Ansible
Joaquín Bravo Contreras
jackbravo@gmail.com
http://www.a...
El meollo del asunto
● Levantar un entorno drupal de desarrollo o de
producción es complicado.
● Ansible es sencillo y muy...
A long time ago...
● Los desarrolladores escribían código
– XAMP, WAMP, MAMP, Acquia Dev Desktop,
Bitnami, manual
● Los sy...
1990...
Linux, Apache, MySQL, PHP (LAMP)
...201X
https://www.lullabot.com/blog/article/configuring-varnish-high-availability-multiple-web-servers
Y eso es para pro...
Eureka! Hay que automatizar!
#!/bin/bash
yum install -y nginx
sed -i 's/worker_processes 1/worker_processes 4/g' /etc/ngin...
Oh bash! Por qué no sirves :'(
● No son idempotentes (no lo puedes correr más
que una vez)
● Son artesanales y es difícil ...
Soluciones actuales
● El papá de los pollitos. CFEngine. 1993. Por un físico teórico con doctorado en
filosofía de Noruega...
Pasitos de bebé con Ansible
Inventario
file: hosts
[drupal-server]
example.com
[drupal-server:vars]
ansible_ssh_user=fulanito
ansible_ssh_port=2222
Tareas
- name: Make sure nginx is installed
yum: name=nginx state=present
Hay paquetes para todo: yum, apt, git,
composer,...
Playbooks (como en la NFL)
file: php.yml
---
- name: Install php-fpm and deps (Centos)
yum: name={{ item }} enablerepo=rem...
Playbooks 2
file: playbook.yml
---
- hosts: drupal-server
sudo: yes
tasks:
- apt: update_cache=yes
- include: web.yml
En sus marcas, listos...
$ ansible-playbook playbook.yml
http://labs.qandidate.com/blog/2013/11/21/installing-a-lamp-serve...
La meta: múltiples servidores
---
- hosts: all
roles:
- security
- monitoring
- fileshare
- hosts: webservers
roles:
- ngi...
http://pilif.github.io/2014/03/ansible/
Para llegar a la meta: compartir
https://github.com/axai-mx/drupal-simple-ansible
Ahora contiene:
● Nginx + PHP-FPM + Opca...
TODO
● Integrar https://letsencrypt.org
● Compass, sass
● Redis
● XHProf
● IPTables
Bibliografía
● Basado en:
– https://austin2014.drupal.org/session/devops-humans-ansible-drupal-deployment-
– http://www.sl...
?
Ambientes de desarrollo y producción. Mejores prácticas con ansible
Upcoming SlideShare
Loading in …5
×

Ambientes de desarrollo y producción. Mejores prácticas con ansible



Levantar un entorno drupal de desarrollo o de producción es complicado. Sobre todo porque hoy en día los ambientes de producción se vuelven más especializados, utilizando nuevos servicios como Solr o Redis, herramientas como compass o sass, intercambiando apache por nginx. Ansible (http://www.ansible.com/) es una herramienta para automatizar la configuración de servidores, máquinas virtuales e incluso tu computadora local. Estas herramientas te permiten aplicar una configuración en un servidor de manera confiable, repetible y segura. Nada de seguir tutoriales, olvidar un comando y repetir errores. Automatizando la configuración puedes guardar el conocimiento de cómo configurar tu ambiente en una receta de cocina. Las buenas prácticas que aprendes en el proceso de administrar tus servidores y ambientes los puedes agregas a tu receta. Tu receta de ansible, a diferencia de un script de bash, la puedes correr varias veces, para aplicar las mejoras que hayas encontrado.

En esta charla damos una introducción a ansible y ejemplificamos su uso explicando un proyecto Open Source en donde estamos guardando mejores prácticas para la configuración de ambientes Drupal para desarrollo y producción.

https://github.com/axai-mx/ansible-drupal-roles

Si alguna vez has tenido que instalar drupal en un servidor web, esta charla te puede interesar. Si alguien más instala drupal por tí, probablemente no.

  • Login to see the comments

  • Be the first to like this

Ambientes de desarrollo y producción. Mejores prácticas con ansible

  1. 1. Mejores prácticas para la configuración de servidores con Ansible Joaquín Bravo Contreras jackbravo@gmail.com http://www.axai.com.mx
  2. 2. El meollo del asunto ● Levantar un entorno drupal de desarrollo o de producción es complicado. ● Ansible es sencillo y muy poderoso ● Usar ansible para configurar el entorno codifica las mejores prácticas
  3. 3. A long time ago... ● Los desarrolladores escribían código – XAMP, WAMP, MAMP, Acquia Dev Desktop, Bitnami, manual ● Los sysadmins lanzaban (deployaban) el código a producción – Trabajo artesanal
  4. 4. 1990... Linux, Apache, MySQL, PHP (LAMP)
  5. 5. ...201X https://www.lullabot.com/blog/article/configuring-varnish-high-availability-multiple-web-servers Y eso es para producción, testing y tal vez desarrollo...
  6. 6. Eureka! Hay que automatizar! #!/bin/bash yum install -y nginx sed -i 's/worker_processes 1/worker_processes 4/g' /etc/nginx/nginx.conf sed -i 's/keepalive_timeout 65/keepalive_timeout 10/g' /etc/nginx/nginx.conf /sbin/chkconfig --levels 235 nginx on /etc/init.d/nginx start yum install -y php-fpm php-cli php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring php-soap php-tidy php-pecl-apc # 1024M should be more than enough for all drupal files sed -i 's/apc.shm_size=64M/apc.shm_size=1024M/g' /etc/php.d/apc.ini # http://wiki.nginx.org/Pitfalls sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php.ini # set timezone echo "date.timezone = 'America/Mexico_City'" >> /etc/php.ini # use socket for php-fpm sed -i 's/127.0.0.1:9000//var/run/php5-fpm.sock/g' /etc/php-fpm.d/www.conf
  7. 7. Oh bash! Por qué no sirves :'( ● No son idempotentes (no lo puedes correr más que una vez) ● Son artesanales y es difícil compartirlos ● Necesitas otros scripts de bash para automatizar la automatización de tus scripts de bash (no escalan bien)
  8. 8. Soluciones actuales ● El papá de los pollitos. CFEngine. 1993. Por un físico teórico con doctorado en filosofía de Noruega. ● Puppet (hijo de CFEngine). 2005. DSL hecho con Ruby. Usado por Wikimedia Foundation, Reddit, Pantheon. ● Chef (inspirado en Puppet). 2008. Ruby. Usado por Facebook, HP cloud, Airbnb ● Ansible. New kid on the block. 2012. YAML hecho con Python. Usado por Twitter, la NASA, Atlassian, Evernote. ● Sólo necesitas SSH (y python) La idea es que tome menos tiempo reconstruir un servidor que entrar al servidor a corregir un problema. Cada vez que te logueas a un server de producción Dios mata a un gatito. Por favor, piensa en los gatitos.
  9. 9. Pasitos de bebé con Ansible
  10. 10. Inventario file: hosts [drupal-server] example.com [drupal-server:vars] ansible_ssh_user=fulanito ansible_ssh_port=2222
  11. 11. Tareas - name: Make sure nginx is installed yum: name=nginx state=present Hay paquetes para todo: yum, apt, git, composer, selinux, mysql, nagios, monit, irc
  12. 12. Playbooks (como en la NFL) file: php.yml --- - name: Install php-fpm and deps (Centos) yum: name={{ item }} enablerepo=remi,remi-php55 with_items: - php-fpm - php-cli - php-gd - php-mysqlnd - php-mbstring - php-xml - name: Make sure php-fpm is running service: state=started name=php-fpm enabled=yes
  13. 13. Playbooks 2 file: playbook.yml --- - hosts: drupal-server sudo: yes tasks: - apt: update_cache=yes - include: web.yml
  14. 14. En sus marcas, listos... $ ansible-playbook playbook.yml http://labs.qandidate.com/blog/2013/11/21/installing-a-lamp-server-with-ansible-playbooks-and-roles/
  15. 15. La meta: múltiples servidores --- - hosts: all roles: - security - monitoring - fileshare - hosts: webservers roles: - nginx - php - drupal - hosts: database roles: - postgres
  16. 16. http://pilif.github.io/2014/03/ansible/
  17. 17. Para llegar a la meta: compartir https://github.com/axai-mx/drupal-simple-ansible Ahora contiene: ● Nginx + PHP-FPM + Opcache + APC + Boost ● MySQL ● Drupal + Drush + Drupal Console ● Solr, Memcached, SSL
  18. 18. TODO ● Integrar https://letsencrypt.org ● Compass, sass ● Redis ● XHProf ● IPTables
  19. 19. Bibliografía ● Basado en: – https://austin2014.drupal.org/session/devops-humans-ansible-drupal-deployment- – http://www.slideshare.net/johnthethird/ansible-presentation-24942953 ● Documentación: – http://docs.ansible.com/intro.html ● Buenas lecturas: – http://hakunin.com/six-ansible-practices – http://feross.org/how-to-setup-your-linode/ ● Foros: – https://groups.google.com/forum/#!forum/ansible-project – Freenode: #ansible
  20. 20. ?

×