https://github.com/isfegu/basic
Entorno (NGINX y PHP) de desarrollo/producción mediante el uso de Vagrant y Ansible
https://github.com/isfegu/basic
Last synced: 9 months ago
JSON representation
Entorno (NGINX y PHP) de desarrollo/producción mediante el uso de Vagrant y Ansible
- Host: GitHub
- URL: https://github.com/isfegu/basic
- Owner: isfegu
- License: gpl-2.0
- Created: 2015-12-29T16:41:40.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-07-08T08:41:32.000Z (almost 9 years ago)
- Last Synced: 2024-12-17T19:21:05.528Z (over 1 year ago)
- Language: Smarty
- Size: 16.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Entorno de desarrollo/producción mediante el uso de Vagrant y Ansible
**Aviso**: Está probado en una Ubuntu 14.04 LTS como sistema operativo.
## APLICACIONES
Instala lo siguiente:
- NGINX
- PHP
- COMPOSER
## PREPARACIÓN DEL ENTORNO
Instalar vagrant, virtualbox y ansible:
``` bash
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get virtualbox
$ sudo apt-get vagrant
$ sudo apt-get ansible
```
## CLONADO DEL PROYECTO
Cada cual clonará el proyecto donde mejor le convenga, para este tutorial será en _~/Projects/Provision/Basic_
## CREACIÓN DE CLAVES
Para poder usar _ansible_ deberemos crear dos claves ssh, una para desarrollo y otra para producción.
``` bash
$ ssh-keygen -t rsa -C "correo@electronico.com"
```
Ejecutar el anterior comando una vez dándole a la clave el nombre _dev_ y _pro_ la segunda vez.
Tras la creación se deben copiar **ambas claves públicas** (.pub) en el directorio _common/keys_
Estas claves se copiarán automáticamente en la _box_ _dev_ una vez se inicie.
## ACTIVAR LAS CLAVES
Para que nuestra máquina _host_ se pueda comunicar con las _boxes_ usando las claves que acabamos de crear debemos:
``` bash
$ ssh-agent bash
$ ssh-add ~/.ssh/dev
$ ssh-add ~/.ssh/pro
```
## INICIAR LAS MÁQUINAS VIRTUALES
``` bash
~/Projects/Provision/Basic/box$ vagrant up
```
## PROBANDO LA COMUNICACIÓN CON ANSIBLE
Para comprobar que _ansible_ puede acceder a la _box_ _dev_ ejecutaremos:
``` bash
~/Projects/Provision/Basic$ ansible server -i provision/environments/dev/dev -m ping
```
Debiéndonos devolver lo siguiente:
```
10.10.10.10.10 | success >> {
"changed": false,
"ping": "pong"
}
```
Usamos _server_ puesto que está creado un _group_ con ese nombre para especificar el host tanto de _dev_ como _pro_.
Ver archivos _provision/environments/pro/pro_ y _provision/environments/dev/dev_.
## CONFIGURACIÓN DEL SERVIDOR MEDIANTE ANSIBLE
Para aprovisionar *dev* ejecutaremos:
``` bash
~/Projects/Provision/Basic$ ansible-playbook -i provision/environments/dev/dev provision/dev.yml
```
## NGINX, PHP-FPM Y COMPOSER
Mediante ansible se instala _nginx_, _php-fpm_ y _composer_. En _provision/environments/dev/groups_vars_ se puede ver los parámetros
configurables de cada uno de estos roles.
## USAR UN SERVIDOR EXTERNO COMO PRODUCCIÓN
Modificamos el archivo _provision/environments/pro/pro_ especificando la IP del servidor externo.
### PROBANDO LA COMUNICACIÓN CON ANSIBLE
``` bash
~/Projects/Provision/Basic$ ansible server -i provision/environments/pro/pro -m ping
```
Debiéndonos devolver lo siguiente:
```
| success >> {
"changed": false,
"ping": "pong"
}
```
## CONFIGURACIÓN DEL SERVIDOR MEDIANTE ANSIBLE
Para aprovisionar *dev* ejecutaremos:
``` bash
~/Projects/Provision/Basic$ ansible-playbook -i provision/environments/pro/pro provision/pro.yml
```
## AGRADECIMIENTOS
- http://phansible.com/
- http://future500.nl/articles/2014/05/how-to-use-ansible-for-vagrant-and-production/
- http://www.erikaheidi.com/blog/configuring-a-multistage-environment-with-ansible-and-vagrant
- https://serversforhackers.com/an-ansible-tutorial