Vagrant

De MediaWiki
Ir a la navegación Ir a la búsqueda


Introdución

Fig. Infrastructure as code (IaC)

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:

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:

Fig. Fluxo de traballo 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


Referencias