WordPress Nuestro Primer Cookbook

Home  /  Chef  /  WordPress Nuestro Primer Cookbook

WordPress Nuestro Primer Cookbook

Rating: 4.0. From 1 vote. Show votes.
Please wait...

Si es otro cookbook para desplegar wordpress, particularmente creo que es una buena aproximación para entender como codificar infraestructura. Este cookbook lo desarrolle para un curso de chef que dimos en mi trabajo.

Para empezar vamos a realizar una lista de los pasos para instalar wordpress de esta forma definimos el alcance de nuestro cookbook.

  1. Instalar Apache2
  2. Instalar Mysql
  3. Instalar PHP
  4. Instalar el mod_php5 en Apache
  5. Descargar wordpress
  6. Descomprimir el archivos de wordpres en la ubicacion dedestino
  7. Crear la base de datos
  8. Crear el usuario para la base de datos
  9. Obtener los secrets de wordpress
  10. Configurar el archivo wp-config.php
  11. Finalizar la instalación y crear usuario admin

Una vez teniendo en claro el alcance de que vamos a hacer, podemos empezar a hacerlo:.

Primero creamos el cookbook con knife

la creación del cookbook genera la siguiente estructura de carpetas:

Carpetas Cookbook

  • attributes: Aca se almacenas los atributos default que son utilizados por el cookbook
  • files: En esta carpeta se almacenan los archivos que se quieran distribuir con el cookbook.
  • libraries: En esta carpeta se almacenan los matchers o los helpers que utiliza el cookbook
  • provider: En esta carpeta se almacenan los proveedores  LWRPs
  • recipes: Aqui se almacenan las recetas que conforman el libro de cocina.
  • resources: Aca se almacenan la definición de los recursos de los proveedores.
  • spec: En esta carpeta se almacenan los test de rspec(chefspec)
  • template: Aca se almacenan los archivos erb, que son templates de ruby.
  • test: En esta carpeta se almacenan los test de integración (serverspec)

para nuestro cookbbok solamente vamos a utilizar las carpetas attributes, recipes. y el archivo metadata.rb en el directorio raiz. Este archivo almacena información sobre nuestro cookbook y sus dependencias.

ahora editamos el archivo metadata.rb:

y ahora editamos el archivo VERSION

con nuestro cookbook recién creado iniciamos el versionado del mismo con git.

Vamos a resolver los primeros cuatro puntos de nuestra listas

para poder incluir las recetas hay que agregar los cookbooks que las contienen, como dependencia en el archivo metadata.rb

si ejecutamos esta receta en un nodo tendremos instalado apache2, Mysql Server y PHP5. El cookbook de apache 2 instala  los scripts (a2ensite, a2dissite, a2enmod y a2dismod) tanto en la familias debian, como en los derivados de redhat. Por default la password de root del mysql es “ilikerandompasswords”.

Para ejecutar esta receta primero tenemos que resolver las dependencias, subirla todos los cookbook al server de chef, agragar el run_list e nuestro nodo la receta default de nuestro cookbook y ejecutar el chef-client remoto.

Ahora vamos a continuar con los puntos 5 y 6, primero para descargar el archivo de wordpress debemos definir algunos attributos para poder descargar y verificar la descarga

Ahora editamos la receta para poder descargar y descomprimir en la ubicación de destino.

Ejecutamos nuevamente nuestra receta.

podemos verificar que tenemos descomprimido en /var/www/html la aplicación wordpress.

Ahora vamos a atacar los puntos 7y 8. Primero definimos atributos que vamos usar para conectarnos a la db, en el alcance de este cookbook el mysql se instala local:

Ahora para poder crear el usuario y la base vamos a utilizar el cookbook databases, que permite manejar bases de datos, usuario, permisos y querys. En MySQL, PostgreSQL y MS SQL Server.

Primero agregamos el cookbook como dependencia en el archivo metadata.rb

Ahora si podemos usarlo en nuestra receta:

Completado los items de la base de datos vamos  ver como descargar los secrets y crear el archivo wp-config.php con nuestra configuración

Primero tenemos que saber que la url para conseguir los secrets es: https://api.wordpress.org/secret-key/1.1/salt/

Para descargar los secrets y mantener idempotensa la receta, utilizaremos un ruby_block, que no se ejecutara si el attributo default[:wordpress][:salt] es nulo, este attributo tiene que ser declarado por default como nil.

Ahora agregamos nuestro ruby_block:

En el ruby_block anterior sobre-escribe la declaracion de variables del provider template, la creación del wp-config.php usa una plantilla wp-config.php.erb.

Solo nos falta el proceso de instalacion, que carga el schema de la base de datos.

Primero definimos los ultimos atributos que nos faltan. El atributo de domain es el mas importante ya que wordpress tiene un modulo de re-escritura de url, que apunta todos los contenidos utilizando ese dominio como raíz.

Por ultimo utilizando curl realizamos la instalación y carga del esquema de la base de datos.

Ya estamos en condiciones de volver a desplegar nuestro cookbook y deberíamos poder visualizar nuestro blog funcionando en http://domain.
Pero en realidad vemos que nuestro sitio no funciona, esto se debe a que apache no tiene habilitado el default site, este seria en realidad nuestro ultimo paso.

En algunos flavors de linux seguramente también tengamos que des-habilitar o crear las reglas de iptables para poder visualizar el sitio desde la red. Pero esto no creo entre en el scope de nuestro cookbook. Para los que quieran profundizar pueden mirar este cookbook https://github.com/opscode-cookbooks/iptables

Aca tienen el codigo en github, para descargar:

Build Status

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *