SlideShare uma empresa Scribd logo
1 de 21
Mejores prácticas
para la configuración de servidores
con Ansible
Joaquín Bravo Contreras
jackbravo@gmail.com
http://www.axai.com.mx
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
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
1990...
Linux, Apache, MySQL, PHP (LAMP)
...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...
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
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)
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.
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, selinux, mysql, nagios, monit, irc
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
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-server-with-ansible-playbooks-and-roles/
La meta: múltiples servidores
---
- hosts: all
roles:
- security
- monitoring
- fileshare
- hosts: webservers
roles:
- nginx
- php
- drupal
- hosts: database
roles:
- postgres
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 + Opcache + APC + Boost
● MySQL
● Drupal + Drush + Drupal Console
● Solr, Memcached, SSL
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.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
?

Mais conteúdo relacionado

Mais procurados

Cloud Computing. Virtualización
Cloud Computing. VirtualizaciónCloud Computing. Virtualización
Cloud Computing. Virtualizaciónpacvslideshare
 
Ansible + tacos at dev hangout
Ansible + tacos at dev hangoutAnsible + tacos at dev hangout
Ansible + tacos at dev hangoutOscar Gonzalez
 
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)MizaelMartinez2
 
Cloud Computing. Gestión de configuraciones. Vagrant
Cloud Computing. Gestión de configuraciones. VagrantCloud Computing. Gestión de configuraciones. Vagrant
Cloud Computing. Gestión de configuraciones. Vagrantpacvslideshare
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCarlos Gimeno Yáñez
 
Optimización Servidor Web
Optimización Servidor WebOptimización Servidor Web
Optimización Servidor Webquaip
 
Sácale el jugo a Varnish
Sácale el jugo a VarnishSácale el jugo a Varnish
Sácale el jugo a VarnishRodrigo Alfaro
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetVicent Soria Durá
 
Instalar siberian cms (hestia cp) en aws
Instalar siberian cms (hestia cp) en awsInstalar siberian cms (hestia cp) en aws
Instalar siberian cms (hestia cp) en awsMizaelMartinez2
 
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphereVagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphereJavier Jerónimo Suárez
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvmsuperserch
 
Entorno de desarrollo rápido con Vagrant
Entorno de desarrollo rápido con VagrantEntorno de desarrollo rápido con Vagrant
Entorno de desarrollo rápido con VagrantPau Ferrer Ocaña
 

Mais procurados (16)

Cloud Computing. Virtualización
Cloud Computing. VirtualizaciónCloud Computing. Virtualización
Cloud Computing. Virtualización
 
Ansible + tacos at dev hangout
Ansible + tacos at dev hangoutAnsible + tacos at dev hangout
Ansible + tacos at dev hangout
 
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)
TALLER: Implementar BigBlueButton en Amazon Web Services (AWS)
 
SUSE Studio 1.0 Bugcon09
SUSE Studio 1.0 Bugcon09 SUSE Studio 1.0 Bugcon09
SUSE Studio 1.0 Bugcon09
 
Cloud Computing. Gestión de configuraciones. Vagrant
Cloud Computing. Gestión de configuraciones. VagrantCloud Computing. Gestión de configuraciones. Vagrant
Cloud Computing. Gestión de configuraciones. Vagrant
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con Vagrant
 
Optimización Servidor Web
Optimización Servidor WebOptimización Servidor Web
Optimización Servidor Web
 
Sácale el jugo a Varnish
Sácale el jugo a VarnishSácale el jugo a Varnish
Sácale el jugo a Varnish
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppet
 
Instalar siberian cms (hestia cp) en aws
Instalar siberian cms (hestia cp) en awsInstalar siberian cms (hestia cp) en aws
Instalar siberian cms (hestia cp) en aws
 
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphereVagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
Vagrant para automatizar entornos DEV/PRO: VirtualBox y vSphere
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvm
 
Docker 2014 v2
Docker 2014 v2Docker 2014 v2
Docker 2014 v2
 
Curso Vagrant
Curso VagrantCurso Vagrant
Curso Vagrant
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Entorno de desarrollo rápido con Vagrant
Entorno de desarrollo rápido con VagrantEntorno de desarrollo rápido con Vagrant
Entorno de desarrollo rápido con Vagrant
 

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

La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfectobetabeers
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Modernowpargentina
 
Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrolloAlejandro Hernández
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)CAChemE
 
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...Plain Concepts
 
Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3Loquenecesito,com
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada bcoca
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Compilación del Kernel
Compilación del KernelCompilación del Kernel
Compilación del KernelJuan Sánchez
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...Edgar A. Cruz Huaman
 

Semelhante a Ambientes de desarrollo y producción. Mejores prácticas con ansible (20)

La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
 
Ansible
AnsibleAnsible
Ansible
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
 
Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
 
Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.Drupal 8, de cero a producción en minutos.
Drupal 8, de cero a producción en minutos.
 
Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizadaGuía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
 
Instalando una LAMP en debian 6
Instalando una LAMP en debian 6Instalando una LAMP en debian 6
Instalando una LAMP en debian 6
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Compilación del Kernel
Compilación del KernelCompilación del Kernel
Compilación del Kernel
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 

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

  • 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. 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. 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
  • 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.
  • 8. 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)
  • 9. 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.
  • 10. Pasitos de bebé con Ansible
  • 12. 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
  • 13. 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
  • 14. Playbooks 2 file: playbook.yml --- - hosts: drupal-server sudo: yes tasks: - apt: update_cache=yes - include: web.yml
  • 15. 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/
  • 16. La meta: múltiples servidores --- - hosts: all roles: - security - monitoring - fileshare - hosts: webservers roles: - nginx - php - drupal - hosts: database roles: - postgres
  • 18. 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
  • 19. TODO ● Integrar https://letsencrypt.org ● Compass, sass ● Redis ● XHProf ● IPTables
  • 20. 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
  • 21. ?