← 返回首页
📦

Vagrant开发环境管理

📂 devops ⏱ 2 min 339 words

Vagrant开发环境管理

什么是Vagrant

Vagrant是一个用于构建和管理虚拟化开发环境的工具,使用单一配置文件即可创建一致的开发环境。

安装Vagrant

# Windows
# 下载安装包: https://www.vagrantup.com/downloads

# macOS
brew install vagrant

# Linux
sudo apt-get install vagrant

# 验证安装
vagrant --version

基本使用

初始化项目

# 创建目录
mkdir myproject && cd myproject

# 初始化Vagrant
vagrant init ubuntu/bionic64

Vagrantfile

# Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.vm.hostname = "dev-server"
  
  # 网络配置
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "forwarded_port", guest: 3000, host: 3000
  
  # 同步文件夹
  config.vm.synced_folder ".", "/vagrant"
  config.vm.synced_folder "./src", "/app"
  
  # 虚拟机配置
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
    vb.name = "my-dev-server"
  end
  
  # 配置脚本
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y nginx docker.io
    systemctl enable nginx
  SHELL
end

常用命令

# 启动虚拟机
vagrant up

# SSH登录
vagrant ssh

# 查看状态
vagrant status

# 暂停
vagrant halt

# 销毁
vagrant destroy

# 重新加载配置
vagrant reload

# 执行provision
vagrant provision

使用Provisioner

Shell脚本

config.vm.provision "shell", path: "scripts/setup.sh"
#!/bin/bash
# scripts/setup.sh
apt-get update
apt-get install -y build-essential curl git

# 安装Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt-get install -y nodejs

# 安装Docker
apt-get install -y docker.io
usermod -aG docker vagrant

Ansible

config.vm.provision "ansible" do |ansible|
  ansible.playbook = "playbook.yml"
  ansible.inventory_path = "inventory"
end

实践:开发环境配置

# Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.hostname = "dev-machine"
  
  # 网络
  config.vm.network "private_network", ip: "192.168.56.10"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "forwarded_port", guest: 3000, host: 3000
  config.vm.network "forwarded_port", guest: 5432, host: 5432
  
  # 虚拟机配置
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = 4
    vb.name = "dev-machine"
  end
  
  # 同步文件夹
  config.vm.synced_folder "./project", "/home/vagrant/project"
  
  # Provisions
  config.vm.provision "shell", inline: <<-SHELL
    # 更新系统
    apt-get update && apt-get upgrade -y
    
    # 安装基础工具
    apt-get install -y curl wget git vim htop
    
    # 安装Docker
    curl -fsSL https://get.docker.com | sh
    usermod -aG docker vagrant
    
    # 安装Docker Compose
    curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    
    # 安装Node.js
    curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
    apt-get install -y nodejs
    
    # 安装Python
    apt-get install -y python3-pip python3-venv
    
    echo "环境配置完成!"
  SHELL
end

多机器配置

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  
  # Web服务器
  config.vm.define "web" do |web|
    web.vm.hostname = "web-server"
    web.vm.network "private_network", ip: "192.168.56.10"
    web.vm.network "forwarded_port", guest: 80, host: 8080
    web.vm.provision "shell", path: "scripts/setup-web.sh"
  end
  
  # 数据库服务器
  config.vm.define "db" do |db|
    db.vm.hostname = "db-server"
    db.vm.network "private_network", ip: "192.168.56.20"
    db.vm.provision "shell", path: "scripts/setup-db.sh"
  end
end

总结

Vagrant是管理开发环境的利器。通过Vagrantfile定义环境,可以确保团队成员使用一致的开发环境,避免"在我电脑上可以运行"的问题。