Show Menu
Cheatography

Tutorial Vagrant Cheat Sheet by

Made by a group of students who got information from several webpages about Vagrant

Defini­ciones

Vangrant
Es una herram­ienta que simplifica el trabajo para ejecutar y gestionar máquinas virtuales creada por Hashicorp
Vangra­ntfile
En este fichero está guardada la config­­ur­ación de las MVs usadas
Atlas
Servicio usado por Vangrant para descargar 'base boxes'
Packer
Herram­ienta de línea de comandos que automatiza la creación de MVs con distintos sistemas y provee­dores
Boxes
Vagrant utiliza imágenes precon­­st­r­uidas de máquinas virtuales llamadas "­­ca­j­a­s" (boxes)
Requisitos previos: VirtualBox instalado, estación de trabajo con más de 4 GB de RAM

Vagrant vs Docker

Si utilizas Virtualbox o Vmware como el proveedor para Vagrant, puede iniciar una máquina virtual según las config­­ur­a­c­iones en el archivo Vagran­­tfile.

Si utilizas Docker como el proveedor para Vagrant, entonces lanzará conten­­edores de Docker según las config­­ur­a­c­iones en el archivo Vagran­­tfile.

Comandos básicos

$ vagrant --version
consultar la versión
$ export VAGRAN­T_HOME= /ruta/­al/­dir­ectorio
config­uración
$ vagrant | $ vagrant -h
ayuda
$ vagrant init
crear Vagran­tfile

Config­uración del Vagran­tfile

Especi­ficar la box a utilizar
config.vm.box = "­­ub­u­n­tu­­/bi­­on­i­c­64­­"
Definir el nombre de la MV
config.vm.define "­­mi­_­v­m"
Modificar RAM y nº de núcleos
config.vm.pr­­ovider "­­vi­r­t­ua­­lbo­­x" do |vb| vb.memory = 1024 vb.cpus = 2 end
Config­­ur­ación de red
config.vm.ne­­twork "­­fo­r­w­ar­­ded­­_p­o­r­t", guest: 80, host: 8080 config.vm.ne­­twork "­­pr­i­v­at­­e_n­­et­w­o­rk­­", type: "­­dh­c­p­"
Entorno gráfico
vb.gui = true
Configurar un disco
vb.cus­­tomize ['crea­­tehd', '--fil­­en­ame', 'addit­­io­n­a­l_­­dis­­k.v­di', '--size', 500 * 1024] vb.cus­­tomize ['stor­­ag­e­a­tt­­ach', :id, '--sto­­ra­g­e­ctl', 'SATA Contro­­ller', '--port', 1, '--dev­­ice', 0, '--type', 'hdd', '--med­­ium', 'addit­­io­n­a­l_­­dis­­k.v­di']

Boxes

$ vagrant box add [nombre] [URL o ruta local]
agregar un nuevo box a Vagrant
$ vagrant box list
mostrar la lista de boxes instaladas
$ vagrant box remove [nombre]
eliminar un box específico
$ vagrant box update
actualizar las boxes si es necesario
$ vagrant box outdated
mostrar la lista de las actual­iza­ciones requeridas
$ vagrant box repackage [nombre] [versión]
empaquetar una box existente en una nueva versión
 

Inicio máquina virtual

El proceso de arranque de la máquina son 3 etapas:
1.- Descarga e instal­ación de la ‘box’ en el sistema anfitrión.
~/.vag­ran­t.d­/boxes

2.- Import­ación de la ‘box’ al proyecto.
~/Virt­ualBox VMs/

3.- Arranque del sistema.
La imagen utilizada para la máquina virtual se almacena en un archivo llamado "box file" con extensión .box

Compartir carpeta entre MV y Host

config.vm.sy­nce­d_f­older "." , "­/va­gra­nt" , 
type:
"­vir­tua­lbo­x"

Gestión MV

$ vagrant up
iniciar la máquina virtual
$ vagrant halt [ID]
detener la máquina virtual
$ vagrant destroy [ID]
eliminar la máquina virtual
Los IDs de las máquinas virtuales se pueden consultar utilizando el comando $ vagrant global­-status

Crear entornos múltiples MVs

Fichero Vagran­tfile, instalar y arrancar Ubuntu y Debian:

Vagran­t.c­onf­igure( "­2" ) do |config| 
config.vm.define
"­ubu­ntu­" do |ubuntu|
ubuntu.vm.box =
"­ben­to/­ubu­ntu­-16.04­"
end
config.vm.define "­ubu­ntu­" do |debian|
debian.vm.box =
"­deb­ian­/je­ssi­e64­"
end
end


Fichero Vagran­tfile: instalar y arrancar dos nodos (nodo1 y nodo2) de una misma distri­bución centos/7:

Vagran­t.c­onf­igure( "­2" ) do |config| 
config.vm.define
"­nod­o1" do |nodo1|
nodo1.v­m.box =
"­cen­tos­/7"
nodo1.v­m.h­os­tname = 'nodo1'
nodo1.v­m.n­etwork "­pub­lic­_ne­two­rk",
ip: "­192.16­8.1.24­"
end
end

Primera Imagen

Creación de la imagen:
$ mkdir box-fa­ctory
$ cd box-fa­ctory
creación del directorio
$ vagrant init -m ubuntu­/tr­usty32
iniciar nuevo proyecto en una imagen existente
$ vagrant up
levantar máquina virtual
$ vagrant ssh
$ jeky11 --version
$ vagant package
--output box-je­ky1­1.box
iniciar sesión ssh
comprobar versión
crear la imagen de la máquina virtual
Gestión de imágenes:
$ vagrant box list
consultar la lista de boxes (imágenes)
$ vagrant box add [nombre] [Direc­cion]
añadir una nueva imagen al sistema
$ vagrant box remove [nombre]
eliminar una imagen del sistema

Imágenes con chef/bento

$ git clone https:­//g­ith­ub.c­om­/ch­ef/­ben­to.git
$ cd bento
$ packer build --only­=vi­rtu­alb­ox-iso ubuntu­-14.04­-i3­86.json
construir la imagen de Ubuntu para VirtualBox
 

Seguridad

Riesgo #1 Descarga de la imagen de internet

Al descargar una imagen de una fuente no fiable para crear una máquina virtual
$ vagrant box add [nombre] [URL o ruta local]
agregar una box a Vagrant
$ vagrant box list
lista de boxes instaladas
$ vagrant box remove [nombre]
eliminar una box

Riesgo #2 Exposición de puertos

Vagrant por defecto redirige solo un puerto, el SSH, desde el sistema invitado y no debe exponer otros servicios a la red
$ config.vm.ne­twork :forwa­rde­d_port, guest: [puert­o_i­nvi­tado], host: [puert­o_a­nfi­trión], host_ip: "­127.0.0.1­"
configurar la redire­cción de puertos para el sistema invitado en el archivo Vagran­tfile

Riesgo #3 Creden­ciales Predet­erm­inadas

Las creden­ciales predet­erm­inadas de Vagrant, como el usuario "­vag­ran­t" con permisos de sudo, pueden ser un riesgo de seguridad si no se cambian.
$ vagrant ssh
iniciar una sesión SSH en la máquina virtual utilizando las creden­ciales predet­erm­inadas
$ passwd
modificar la contraseña del usuario "­vag­ran­t" en la máquina virtual

Riesgo #4 Llaves RSA predet­erm­inadas

Todas las imágenes descar­gadas de Internet incluyen las mismas llaves RSA, lo que puede repres­entar un riesgo si no se cambian.
$ vagrant ssh
iniciar una sesión SSH en la máquina virtual utilizando las llaves predet­erm­inadas.

Proyecto Sinatra

$ vagrant ssh
$ ruby app.rb -o 0.0.0.0 &
$ logout
iniciar el servidor HTTP
config.vm.ne­twork :forwa­rde­d_port, guest: 4567, host: 9090, host_ip: "­127.0.0.1­"
si el puerto está ocupado en nuestro sistema, hay que cambiarlo en el fichero Vagran­tfile
$ vagrant reload
aplicar los cambios

Acceder a root direct­amente

Para acceder remota­mente lo haremos mediante el SSH
cp -r /home/­vag­ran­t/.ssh/ /root/
chown -R root.root /root/.ssh/
Modificar el usuario SSH en Vagran­tfile:
config.ss­h.u­sername = "­roo­t"
Usar Ansible para ejecutar comandos en máquinas Vagrant habili­tadas con sudo
ansible -vv all -m command -a "­id" -u vagrant --priv­ate-key /ruta/­a/l­a/c­lav­e/p­rivada -b --beco­me-­method sudo -e "­ans­ibl­e_b­eco­me_­pas­s=c­ont­ras­eña­"
ansible -vv all -m command -a "­id" -u vagrant --priv­ate-key /ruta/­a/l­a/c­lav­e/p­rivada -b
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          More Cheat Sheets by Carlos99

          Tutorial Vagrant (configuración y tipos de red) Cheat Sheet