https://github.com/cppmx/wordpress_chef
Despliegue de Wodpress en máquinas virtuales usando Vagrant y Chef
https://github.com/cppmx/wordpress_chef
Last synced: about 1 year ago
JSON representation
Despliegue de Wodpress en máquinas virtuales usando Vagrant y Chef
- Host: GitHub
- URL: https://github.com/cppmx/wordpress_chef
- Owner: cppmx
- Created: 2023-07-06T00:42:23.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-08-07T14:34:55.000Z (over 2 years ago)
- Last Synced: 2025-01-17T19:55:19.449Z (about 1 year ago)
- Language: Ruby
- Size: 1.76 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Despliegue de Wordpress usando Vagrant y Chef
- Master 
Este proyecto es para una tarea de la Maestría en Desarrollo y Operaciones de UNIR.
El Objetivo es desplegar Wondpress usando Vagrant y Chef.
## Supuestos
- Se espera que la red de las VMs sea 192.168.56.0/24. Si VirtualBox tiene otro rango de red entonces hay que ajustar el archivio `.env` con los valores adecuados.
## Pre-requisitos
- Necesitas tener instalado Git
- Necesitas tener instalado Vagrant 2.3.7 o superior
- Necesitas tener instalado VirtualBox 7.0 o superior
- Ruby 2.5 o superior
Instala el plugin `vagrant-env` para poder cargar variables ed ambiente desde el archivo `.env`
```bash
vagrant plugin install vagrant-env
```
También debes instalar la gema `serverspec` para poder ejecutar las pruebas de integración e infraestructura:
```bash
gem install serverspec
```
## Arquitectura
El proyecto se compone de tres servicios, cada uno deployado en una VM individual:
- [database](cookbooks/database/README.md): En esta VM se instala MySQL.
- [wordpress](cookbooks/wordpress/README.md): En esta VM se instala el servidor web Apache y la aplicación Wordpress es instalada para ser servida por el servidor web.
- [proxy](cookbooks/proxy/README.md): Em esta VM se instala un proxy Nginx el cual será el punto de entrada a la aplicación.
En el siguiente diagrama se pueden ver cómo se relacionan las VMs y los puertos de comunicación que esa cada una de ellas:
```mermaid
graph LR;
A("Usuario") --> |80| B("proxy
192.168.56.2") --> |8080| C("wordpress
192.168.56.10") ---> |3306| D[("database
192.168.56.20")]
```
## Configuraciones
En el archivo `.env` se pueden definir algunos valores como las IPs de las máquinas virtuales y el usuario y el password de la BD que se usará para configurar Wordpress.
Antes de levantar Vagrant se puede definir la caja que se usará. Mira el siguiente diagrama:
```mermaid
graph TB;
A[Inicio] --> B{BOX_NAME?}
B -->|No| C["Deploy
ubuntu/focal64"]
B -->|Si| D["Deploy
generic/centos8"]
C --> E[Fin]
D --> E[Fin]
```
Lee la sección [Uso](#uso) para ver ejemplos de esto.
## Uso
Para levantar las dos máquinas virtuales con Ubuntu 20.04 ejecuta el comando:
```bash
vagrant up
```
Para levantar las dos máquinas virtuales con CentOS 8 ejecuta el comando:
```bash
BOX_NAME="generic/centos8" vagrant up
```
Se van a crear dos máquinas virtuales, una llamada `wordpress` y otra llamada `database`.
Si quieres mezclar las versiones puedes hacerlo del siguiente modo.
### Wordpress con Ubuntu y MySQL con CentOS:
```bash
vagrant up wordpress
BOX_NAME="generic/centos8" vagrant up database
```
### Wordpress con CentOS y MySQL con Ubuntu:
```bash
BOX_NAME="generic/centos8" vagrant up wordpress
vagrant up database
```
## Wordpress
Una vez que se hayan levantado todas las VMs podrás acceder a Wordpress en la página: http://192.168.56.2/
## Unit tests
Para ejecutar las pruebas unitarias usa el script `tests.sh` si estás en Linux o Mac.
```bash
./tests.sh
Seleccione una opción:
1. Ejecutar pruebas unitarias en una VM
2. Ejecutar pruebas unitarias en un contenedor
3. Ejecutar pruebas de integración e infraestructura
4. Salir
Opción:
```
Si seleccionas 1 se ejecutará una VM usando Vagrant y ejecutará las pruebas unitarias.
Si seleccionas 2 se ejecutarán las pruebas unitarias usando Docker.
También puedes seleccionar una de estos dos opciones desde el script para no pasar por el menú:
```bash
# Para ejecutar las pruebas unitarias en una VM.
./tests.sh vm
# Para ejecutar las pruebas unitarias en Docker.
./tests.sh docker
```
## Pruebas de integración e infraestructura
Para ejecutar todas las pruebas de integración usa el script `tests.sh` opción 3:
```bash
./tests.sh
Seleccione una opción:
1. Ejecutar pruebas unitarias en una VM
2. Ejecutar pruebas unitarias en un contenedor
3. Ejecutar pruebas de integración e infraestructura
4. Salir
Opción:
```
Si deseas ejecutar una a una las pruebas de integración e infraestructura entonces pásale el nombre de la receta al script `tests.sh`:
```bash
# Para ejecutar las pruebas de integración e infraestructura de la base de datos
./tests.sh database
# Para ejecutar las pruebas de integración e infraestructura de Wordpress
./tests.sh wordpress
# Para ejecutar las pruebas de integración e infraestructura del proxy
./tests.sh proxy
```
# Referencias:
- Chef Documentation: https://docs.chef.io/
- ChefSpec: https://docs.chef.io/workstation/chefspec/
- ServerSpec: https://serverspec.org/resource_types.html
- Test Kitchen: https://docs.chef.io/workstation/kitchen/