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

results matching ""

    No results matching ""