Puesta en practica
La empresa ACME le ha solicitado a su área de tecnología implementar proveer los servicios de correo electrónico y el portal WEB, sin embargo dentro de su solicitud a pedido usar un mecanismo que evite tener que realizar las tareas de re-instalación de forma manual, esto debido a que ha tenido muchos inconvenientes en el pasado sobre todo por el impacto que genera la demora en el restablecimiento de los servicios.
Usted ha propuesto la utilización de DevOps (particularmente Vagrant) como alternativa a la solución y ha proporcionado una guía 10 de pasos para implementar los servicios telemáticos requeridos:
Paso 1: Instalar de Vagrant. Paso 2: Crear un directorio y configurarlo como proyecto vagrant.
$ mkdir DevOps
$ cd DevOps/
$ mkdir vagrant
$ cd vagrant/
$ vagrant init
Paso 3: Instalar un DNS que permita de forma dinámica asignar las IPs de las máquinas virtuales que soportaran los servicios y habilitarlo.
$ vagrant plugin install landrush
para habilitar los hay que agregar la siguiente instrucción en el archivo VagrantFile para habilitar el DNS.
config.landrush.enabled = true
Paso 4: Crear 2 máquinas virtuales, una para soportar el servicio http y otra para soportar los servicios de IMAP, POP3 y SMTP. Para esto hay que agregar los siguientes dos bloques de configuración en el archivo VagrantFile:
config.vm.define :mail do |mail|
mail.vm.box = "hashicorp/precise64"
mail.vm.hostname = "mail.vagrant.test"
end
config.vm.define "web", primary: true do |web|
web.vm.box = "hashicorp/precise64"
web.vm.hostname = "web.vagrant.test"
end
Paso 5. Crear un script de aprovicionamiento vagrant que se encargara de la instalación y configuración del servidor Dovecot que proporcionara los servicios de IMAP y POP3.
Lo primero que hay que hacer es crear el siguiente script, dentro de un archivo con el nombre de dovecot.sh.
#!/bin/sh
echo 'Provisioning Environment with Dovecot and Test Messages'
if which dovecot > /dev/null; then
echo 'Dovecot is already installed'
else
echo 'Installing Dovecot'
sudo apt-get update
# Install Dovecot.
# Pass the -y flag to suppress interactive requests.
sudo apt-get -qq -y install dovecot-imapd dovecot-pop3d
# Prepare the local.conf for custom values
sudo touch /etc/dovecot/local.conf
# Move Maildir to the users home directory.
# This keeps things consistent across environments.
sudo echo 'mail_location = maildir:/home/%u/Maildir' >> /etc/dovecot/local.conf
# Enable plaintext for testing.
# This is pretty awful for production environments.
sudo echo 'disable_plaintext_auth = no' >> /etc/dovecot/local.conf
# Running tests in isolation requires a lot of connections very quickly.
sudo echo 'mail_max_userip_connections = 10000' >> /etc/dovecot/local.conf
# Restart Dovecot so it gets it's new settings.
sudo restart dovecot
fi
# Create "testuser"
# First check to see if the user already exits
if getent passwd testuser > /dev/null; then
echo 'testuser already exists'
else
echo 'Creating User "testuser" with password "applesauce"'
sudo useradd testuser -m -s /bin/bash
# Use chpasswd since we can pipe in a new password
echo "testuser:applesauce"|sudo chpasswd
echo 'User created'
fi
Ahora hay que declararlo dentro del bloque de configuración de la máquina mail.
config.vm.define :mail do |mail|
mail.vm.box = "hashicorp/precise64"
mail.vm.hostname = "mail.vagrant.test"
mail.vm.provision "shell", path: "dovecot.sh"
end
Paso 6. Crear un script de aprovicionamiento vagrant que se encargara de la instalación y configuración del servidor Postfix que proporcionara el servicio de SMTP.
Primero creamos el siguiente script, dentro de un archivo con el nombre de postfix.sh
#!/bin/bash
#Pre-loading debconf values for keeps all answers to questions packages about the configuration during installation
debconf-set-selections <<< "postfix postfix/mailname string mail.vagrant.test"
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
#Intall postfix
apt-get install -y postfix
#Change postfix mail dir to sync with Dovecot.
sudo postconf -e "home_mailbox = Maildir/"
Ahora hay que declararlo dentro del bloque de configuración de la máquina mail.
config.vm.define :mail do |mail|
mail.vm.box = "hashicorp/precise64"
mail.vm.hostname = "mail.vagrant.test"
mail.vm.provision "shell", path: "dovecot.sh"
mail.vm.provision "shell", path: "postfix.sh"
end
Paso 7. Crear un script de aprovicionamiento vagrant que se encargara de la instalación y configuración del servidor Apache que proporcionara el servicio de HTTP.
Primero creamos el siguiente script, dentro de un archivo con el nombre de apache.sh
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
Ahora hay que declararlo dentro del bloque de configuración de la máquina mail.
config.vm.define "web", primary: true do |web|
web.vm.box = "hashicorp/precise64"
web.vm.provision :shell, path: "apache.sh"
web.vm.hostname = "web.vagrant.test"
end
Paso 8. Iniciar el ambiente.
$ vagrant up
Paso 9: Verificar el estado del ambiente
Luego de ejecutar este comando nos debe mostrar que las maquinas mail y web estan corriendo.
$ vagrant global-status
id name provider state directory
-----------------------------------------------------------------------------------------------
db41afa mail virtualbox running /Users/nelsonmanuelmorenorestrepo/DevOps/vagrant
3a4dde3 web virtualbox running /Users/nelsonmanuelmorenorestrepo/DevOps/vagrant
Paso 10: Destruir el ambiente y reiniciar.
En este paso vamos a eliminar el ambiente, comprobamos el estatus (no hay ninguna máquina instalado, ni corriendo) y a restrablecerlo para comprobar su funcionamiento.
$ vagrant destroy
$ vagrant global-status
$ vagrant up