Vagrant
Introdución
Vagrant é unha ferramenta de software que proporciona contornas de traballo portables e reproducibles usando máquinas virtuais. Con Vagrant pódese conseguir de forma sinxela que todos os membros dun grupo (p.e. programadores, alumnos, ...) teñan a mesma contorna de traballo, mesmas versións de software, dependencias, configuracións, … Elimínase o famoso ‘na miña máquina funciona’ causado por traballar con diferentes configuracións ou versións de software.
Vagrant pódese considerar unha ferramenta de Infrastructure as code (IaC), onde se aprovisiona e xestiona unha infraestrutura IT a través de código no canto de procedementos estándar ou manuais. Basicamente faise unha descrición da infraestrutura (servidores, bases de datos, redes, balanceadores, ...) e seguindo o principio de que o mesmo código fonte xera o mesmo binario, un modelo IaC xera a mesma infraestrutura cada vez que se lanza. IaC permite automatizar o despregamento dunha infraestrutura de forma que sexa un proceso consistente, repetible, rápido, sinxelo e con aforro de custos.
Forma parte da suite de ferramentas de Hashicorp:
Todos empregamos ferramentas como Virtualbox para montar escenarios prácticos co alumnado e o procedemento máis habitual é indicar, ben de palabra ou por escrito, as máquinas que precisamos, as súas conexións de rede e o software que desexamos. Unha vez que o alumnado coñece os compoñentes da infraestrutura procede a crear as máquinas cos recursos necesarios (procesadores, RAM, adaptadores de rede, ...), instalar sistemas operativos (ben de cero ou ben a través de clonacións), configurar a rede das máquinas, instalar e configurar software, ... Se máis adiante tense que montar de novo esta infraestrutura habería que repetir o mesmo proceso, todo é moi manual. Vagrant o que busca é automatizar todo o proceso de creación da infraestrutura.
Terminoloxía
En Vagrant úsanse os seguintes termos:
- Box
- imaxe base compatible cun provider (p.e. Virtualbox) a partir da cal Vagrant creará novas máquinas virtuais.
- Host
- equipo anfitrión no que está instalado Vagrant.
- Guest
- máquina virtual creada por Vagrant.
- Providers
- sistema de virtualización a usar. Aínda que Virtualbox é o provider por defecto, Vagrant pode traballar con outros como KVM, VMWARE, ...
- Plugins
- permiten engadir a Vagrant funcionalidades extras, como novos providers. Por exemplo, o plugin vagrant-vbguest permite actualizar automaticamente as Virtualbox Guest additions se fose necesario. No sitio web pódese atopar unha extensa listaxe de plugins.
- Provisioners
- permiten automatizar a configuración das máquinas virtuais instalando paquetes, configurando servizos ou realizando outro tipo de tarefas. Aínda que o seu uso non é obrigatorio; non usalos limita a Vagrant ó papel de describir e implementar unha infraestrutura, cousa que podería facerse manualmente. Exemplos de provisiones están os scripts (e comandos) de shell, Ansible, Chef e puppet.
- Vagrantfile
- ficheiro que describe as máquinas necesarias (guests) para un proxecto, como configuralas e aprovisionalas. A súa sintaxe baséase en Ruby e consta dun conxunto de directivas ás que se lle asignan os valores que nos interesan.
- Synced folders
- cartafoles compartidos entre o host e os guests. Isto permite; por exemplo, que se traballe no host cun IDE determinado e se proben inmediatamente os desenvolvementos nun servidor virtual (guest).
Fluxo de traballo
Na seguinte imaxe recóllese a forma de traballar con Vagrant:
Unha vez definida a infraestrutura nun arquivo de texto (Vagrantfile) lánzase o comando vagrant up para iniciar o proceso de creación da mesma.
Vagrant le o contido do Vagrantfile e comeza a darlle instruccións ó provider (p.e. Virtualbox) indicándolle:
- Cantas máquinas virtuais ten que crear e os seus recursos hardware: cpus, RAM, adaptadores de rede e modo de traballo (só-anfitrión, bridge, ...), etc.
- As redireccións de portos para facer accesibles servizos correndo nas máquinas virtuais,
- As carpetas compartidas entre o host e os guests.
O provider comezará o proceso de creación das máquinas en base ó recollido no Vagrantfile, pero para non ter que facer unha instalación de cero do sistema operativo, empregará as imaxes (box) indicadas no Vagrantfile para crear as máquinas virtuais a partir delas. As boxes a empregar descárganse do sitio web app.vagrantup.com ou cóllense do propio equipo anfitrión no caso de xa telas descargadas
Unha vez creada a máquina virtual, Vagrant encárgase de configurar os adaptadores de rede (dirección IP, máscara) e prepara as máquinas virtuais para ser accesibles vía ssh dende o equipo anfitrión.
No caso de estar indicado un aprovisionamento no Vagrantfile, Vagrant chama ó provisioner indicado para que éste execute as accións correspondentes; por exemplo, actualizar o sistema, instalar e configurar software, ...
Unha vez rematado o proceso de creación da infraestrutura, o usuario poderá conectarse ás máquinas virtuais vía ssh executando o comando vagrant ssh
Escenarios
- Escenario Vagrant 1A: Instalación e primeiro proxecto
- Escenario Vagrant 1B: Servidor Web
- Escenario Vagrant 1C: Cluster Web - Base de datos
- Escenario Vagrant 1D: FW-Server
- Escenario Vagrant 1E: Cluster de servidores web
Referencias
- Curso G2501013 Escenarios de seguridade en contornas de alta dispoñibilidade e cloud computing cofinanciado polo Fondo Social Europeo: "O FSE inviste en ti", impartido por D. Manuel González Regal, profesor de informática no IES San Clemente de Santiago de Compostela.
- Vagrant tutorials
- Vagrant: Instalación, configuración y ejemplos de uso
- Vagrant tutorial for beginners
