cli-tool
intermediate
utility
Vagrant
This translates to:
📋 Copy All Commands
📄 Generate PDF # Vagrant
Would you like to provide the rest of the texts for translation?
| Comando | Descripción |
|---------|-------------|
| vagrant version | Mostrar versión de Vagrant |
| vagrant -h | Mostrar información de ayuda |
| vagrant init | Inicializar nuevo Vagrantfile |
| vagrant init ubuntu/jammy64 | Inicializar con cuadro específico |
Box Management
Box Operations
Comando
Descripción
vagrant box list
Listar cajas instaladas
vagrant box add ubuntu/jammy64
Añadir caja
vagrant box add --name mybox /path/to/box.box
Agregar box local
vagrant box remove ubuntu/jammy64
Eliminar cuadro
vagrant box update
Actualizar todas las cajas
vagrant box update --box ubuntu/jammy64
Actualizar cuadro específico
### Box Information
Comando
Descripción
---------
-------------
vagrant box outdated
Verificar cajas desactualizadas
vagrant box prune
Eliminar versiones antiguas de box
vagrant box repackage ubuntu/jammy64
Reembalar caja
## VM Lifecycle Management
Basic Operations
Comando
Descripción
vagrant up
Iniciar y aprovisionar VM
vagrant halt
Apagar VM
vagrant reload
Reiniciar VM
vagrant destroy
Destruir VM
vagrant suspend
Suspender VM
vagrant resume
Reanudar VM suspendida
### VM Status and Information
Comando
Descripción
---------
-------------
vagrant status
Mostrar estado de VM
vagrant global-status
Mostrar estado de todas las VMs
vagrant global-status --prune
Limpiar entradas inválidas
## SSH and Access
SSH Operations
Comando
Descripción
vagrant ssh
SSH into VM
vagrant ssh-config
Mostrar configuración SSH
vagrant ssh -- -L 8080:localhost:80
SSH con reenvío de puertos
## Provisioning
Provisioning Commands
Comando
Descripción
vagrant provision
Ejecutar proveedores
vagrant provision --provision-with shell
Ejecutar aprovisionador específico
vagrant up --provision
Iniciar y aprovisionar
vagrant reload --provision
Reiniciar y aprovisionar
## Multi-Machine Environments
Multi-Machine Commands
Comando
Descripción
vagrant up web
Iniciar máquina específica
vagrant ssh web
SSH a máquina específica
vagrant halt db
Detener máquina específica
vagrant destroy --force
Destruir todo sin confirmación
## Snapshots
Snapshot Management
Comando
Descripción
vagrant snapshot save snapshot_name
Guardar instantánea
vagrant snapshot list
Listar snapshots
vagrant snapshot restore snapshot_name
Restaurar snapshot
vagrant snapshot delete snapshot_name
Eliminar instantánea
## Plugin Management
Plugin Operations
Comando
Descripción
vagrant plugin list
Listar plugins instalados
vagrant plugin install vagrant-vbguest
Instalar plugin
vagrant plugin uninstall vagrant-vbguest
Desinstalar plugin
vagrant plugin update
Actualizar todos los plugins
## Vagrantfile Examples
Basic Vagrantfile
Vagrant . configure ( "2" ) do | config |
config . vm . box = "ubuntu/jammy64"
config . vm . hostname = "myserver"
# Network configuration
config . vm . network "private_network" , ip : "192.168.56.10"
config . vm . network "forwarded_port" , guest : 80 , host : 8080
# Provider configuration
config . vm . provider "virtualbox" do | vb |
vb . memory = "2048"
vb . cpus = 2
vb . name = "MyVM"
end
# Provisioning
config . vm . provision "shell" , inline : <<- SHELL
apt-get update
apt-get install -y nginx
systemctl enable nginx
systemctl start nginx
SHELL
end
Multi-Machine Setup
Vagrant . configure ( "2" ) do | config |
# Web server
config . vm . define "web" do | web |
web . vm . box = "ubuntu/jammy64"
web . vm . hostname = "web"
web . vm . network "private_network" , ip : "192.168.56.10"
web . vm . provider "virtualbox" do | vb |
vb . memory = "1024"
vb . cpus = 1
end
web . vm . provision "shell" , inline : <<- SHELL
apt-get update
apt-get install -y nginx
SHELL
end
# Database server
config . vm . define "db" do | db |
db . vm . box = "ubuntu/jammy64"
db . vm . hostname = "database"
db . vm . network "private_network" , ip : "192.168.56.11"
db . vm . provider "virtualbox" do | vb |
vb . memory = "2048"
vb . cpus = 2
end
db . vm . provision "shell" , inline : <<- SHELL
apt-get update
apt-get install -y mysql-server
SHELL
end
end
Advanced Configuration
Vagrant . configure ( "2" ) do | config |
config . vm . box = "ubuntu/jammy64"
config . vm . box_version = "20230607.0.0"
# Synced folders
config . vm . synced_folder "." , "/vagrant" , disabled : true
config . vm . synced_folder "./app" , "/var/www/html" ,
owner : "www-data" , group : "www-data"
# Network configuration
config . vm . network "private_network" ,
ip : "192.168.56.10" ,
netmask : "255.255.255.0"
config . vm . network "public_network" ,
bridge : "en0: Wi-Fi (AirPort)"
# Port forwarding
config . vm . network "forwarded_port" , guest : 80 , host : 8080
config . vm . network "forwarded_port" , guest : 443 , host : 8443
# Provider-specific configuration
config . vm . provider "virtualbox" do | vb |
vb . gui = false
vb . memory = "4096"
vb . cpus = 4
vb . name = "Development Server"
# VirtualBox specific settings
vb . customize [ "modifyvm" , :id , "--natdnshostresolver1" , "on" ]
vb . customize [ "modifyvm" , :id , "--natdnsproxy1" , "on" ]
end
# Multiple provisioners
config . vm . provision "shell" , inline : <<- SHELL
apt-get update
apt-get upgrade -y
SHELL
config . vm . provision "file" ,
source : "./configs/nginx.conf" ,
destination : "/tmp/nginx.conf"
config . vm . provision "shell" , path : "scripts/setup.sh"
config . vm . provision "ansible" do | ansible |
ansible . playbook = "playbook.yml"
ansible . inventory_path = "inventory"
end
end
Provisioning Methods
Shell Provisioning
# Inline shell commands
config . vm . provision "shell" , inline : <<- SHELL
apt-get update
apt-get install -y docker.io
usermod -aG docker vagrant
SHELL
# External script
config . vm . provision "shell" , path : "scripts/bootstrap.sh"
# Privileged and non-privileged
config . vm . provision "shell" , privileged : false , inline : <<- SHELL
echo "Running as vagrant user"
SHELL
# Environment variables
config . vm . provision "shell" , env : \\\\{ "DEBIAN_FRONTEND" => "noninteractive" \\\\}, inline : <<- SHELL
apt-get install -y mysql-server
SHELL
File Provisioning
config . vm . provision "file" ,
source : "~/.ssh/id_rsa.pub" ,
destination : "~/.ssh/authorized_keys"
config . vm . provision "file" ,
source : "./configs/" ,
destination : "/tmp/configs"
Ansible Provisioning
config . vm . provision "ansible" do | ansible |
ansible . playbook = "site.yml"
ansible . inventory_path = "inventory/vagrant"
ansible . limit = "all"
ansible . verbose = "v"
ansible . extra_vars = \\\\{
nginx_port : 80 ,
database_name : "myapp"
\\\\}
end
Docker Provisioning
config . vm . provision "docker" do | d |
d . pull_images "nginx"
d . pull_images "mysql:8.0"
d . run "nginx" ,
args : "-p 80:80 -v /vagrant/html:/usr/share/nginx/html"
d . run "mysql" ,
args : "-e MYSQL_ROOT_PASSWORD=secret -p 3306:3306"
end
Network Configuration
Private Networks
# Static IP
config . vm . network "private_network" , ip : "192.168.56.10"
# DHCP
config . vm . network "private_network" , type : "dhcp"
# Multiple interfaces
config . vm . network "private_network" , ip : "192.168.56.10"
config . vm . network "private_network" , ip : "10.0.0.10"
Public Networks
# Bridge to default interface
config . vm . network "public_network"
# Bridge to specific interface
config . vm . network "public_network" , bridge : "en0: Wi-Fi (AirPort)"
# Static IP on public network
config . vm . network "public_network" , ip : "192.168.1.100"
Port Forwarding
# Basic port forwarding
config . vm . network "forwarded_port" , guest : 80 , host : 8080
# Multiple ports
config . vm . network "forwarded_port" , guest : 80 , host : 8080
config . vm . network "forwarded_port" , guest : 443 , host : 8443
config . vm . network "forwarded_port" , guest : 3306 , host : 3306
# Auto-correct port conflicts
config . vm . network "forwarded_port" , guest : 80 , host : 8080 , auto_correct : true
Provider Configuration
VirtualBox Provider
config . vm . provider "virtualbox" do | vb |
vb . gui = true
vb . memory = "4096"
vb . cpus = 4
vb . name = "MyVM"
# Advanced settings
vb . customize [ "modifyvm" , :id , "--vram" , "128" ]
vb . customize [ "modifyvm" , :id , "--accelerate3d" , "on" ]
vb . customize [ "modifyvm" , :id , "--clipboard" , "bidirectional" ]
end
VMware Provider
config . vm . provider "vmware_desktop" do | vmware |
vmware . vmx [ "memsize" ] = "4096"
vmware . vmx [ "numvcpus" ] = "4"
vmware . vmx [ "displayName" ] = "MyVM"
end
Hyper-V Provider
config . vm . provider "hyperv" do | hv |
hv . memory = 4096
hv . cpus = 4
hv . vmname = "MyVM"
end
Synced Folders
Basic Synced Folders
# Default synced folder (disabled)
config . vm . synced_folder "." , "/vagrant" , disabled : true
# Custom synced folder
config . vm . synced_folder "./src" , "/var/www/html"
# With options
config . vm . synced_folder "./app" , "/var/www/html" ,
owner : "www-data" ,
group : "www-data" ,
mount_options : [ "dmode=775,fmode=664" ]
NFS Synced Folders
config . vm . synced_folder "./" , "/vagrant" ,
type : "nfs" ,
nfs_udp : false ,
nfs_version : 4
SMB Synced Folders (Windows)
config . vm . synced_folder "./" , "/vagrant" ,
type : "smb" ,
smb_username : "username" ,
smb_password : "password"
Best Practices
Resource Allocation : Allocate appropriate CPU and memory
Synced Folders : Use NFS for better performance on macOS/Linux
Box Selection : Choose minimal base boxes
Snapshot Management : Use snapshots for quick rollbacks
Provider Optimization : Configure provider-specific optimizations
Security
SSH Keys : Use SSH keys instead of passwords
Network Isolation : Use private networks when possible
Firewall : Configure appropriate firewall rules
Updates : Keep boxes and Vagrant updated
Secrets : Don't commit secrets to version control
Development Workflow
Version Control : Include Vagrantfile in version control
Documentation : Document setup and usage
Consistency : Use same environment across team
Testing : Test provisioning scripts
Cleanup : Regularly clean up unused VMs and boxes
Troubleshooting
Logs : Check Vagrant and provider logs
SSH : Use vagrant ssh-config for debugging
Networking : Test network connectivity
Provisioning : Test provisioning scripts separately
Resources : Monitor host system resources