Estoy buscando chef para automatizar las implementaciones de Magento, tanto en las opciones de alojamiento estándar de Magento como en entornos como EC2. Busqué en Google y veo numerosas recetas, pero ninguna realmente me parece canónica. ¿Existe un guión de chef particular que sea mejor / mejor? Además, si ya ha realizado implementaciones de chef con PHP, ¿qué es una cosa que desearía saber cuando comenzara?
10
Respuestas:
Es casi imposible tener un conjunto de rutinas de talla única. He tenido éxito escribiendo un script Bash que ejecuta
chef-client
ejecuciones en listas de hosts proporcionadas porknife search
. Los procedimientos se ven así ...Chef Server 10.18.2 de código abierto en Ubuntu 12.04 LTS
$branch
n98-magerun.phar
n98-magerun.phar
$revision
como una nueva versiónFuente: https://gist.github.com/parhamr/6177160#file-2-deployment
fuente
Así es como me he acercado a esta área mientras llevaba el papel de wanna be sysadmin / devops. La mayoría de los siguientes serán solo principios generales que trato de seguir y no específicos del Chef.
Terminé yendo con Puppet porque descubrí que había más recursos en ese momento y me sentí más fácil de recoger.
Miré los diversos módulos precompilados disponibles para cosas como apache, php5, etc. Muchos de ellos parecían hacer mucho más de lo que necesitaba y no estaban tan familiarizados con la plataforma que no confiaba en lo que estaba sucediendo. Decidí que sería más simple para mí identificar lo que necesitaba hacer en cada tipo de nodo.
Comencé el proceso aprovisionando el entorno de desarrollo local del equipo (vargrant + caja virtual). Para cada servicio / componente creé un módulo: php5, apache2, redis, mysql, etc.
Una vez que el entorno de desarrollo era estable / funcionaba, comencé a desarrollar el entorno de control de calidad. Definí tipos de nodos genéricos para servidores web, redis, barnices, etc. que reutilizaron los mismos módulos que dev. Una vez hecho esto, la puesta en escena y la producción necesitaban cambios mínimos para comenzar a funcionar.
Mientras revisa y escribe sus recetas / plantillas, debe considerar cómo podría reutilizarse / generalizarse. No codifique cosas como rutas o usuarios / grupos que puedan cambiar entre distribuciones / proyectos / entornos. Dado que está buscando un enfoque generalizado, supongo que un gran obstáculo tratará con las diferencias entre las distribuciones * nix.
Lo más importante, mantener es simple. Automatice / estandarice las partes más importantes / lentas del medio ambiente. Iterar, evolucionar.
fuente