vagrant(10)多级环境
Posted on
vagrant(9)Provision配置例子
Posted on
vagrant provision
是 Vagrant 的核心功能之一,帮你自动在虚拟机上应用配置,省去手动操作的麻烦。它支持多种 provisioner(Shell、Ansible、Chef 等),灵活性很高。无论你是想快速搭个开发环境,还是调试复杂的部署脚本,vagrant provision
都能派上用场。
1.内容
- Provision 简介:自动化配置虚拟机环境(如安装软件、配置服务)。
- 支持的 Provision 类型:
- Shell:最简单的脚本方式,支持内联和外部脚本。
- Ansible:使用 playbook 进行声明式配置。
- Puppet:通过 manifests 实现配置管理。
- Chef:使用 cookbooks 进行自动化部署。
- Docker:直接在虚拟机中运行 Docker 容器。
- File:将主机文件传输到虚拟机。
- 触发 Provision:控制自动化执行时机(首次启动、每次启动、手动触发)。
- 最佳实践:编写可复用、可维护的脚本。
vagrant(8)Provision自动化配置
Posted on
vagrant(7)网络类型及端口映射
Posted on
vagrant(3)扩大磁盘大小
Posted on
vagrant(2)进阶命令
Posted on
vagrant(1)介绍及离线添加box
Posted on
Edited on
1. 什么是 Vagrant?
1.1 内容
- Vagrant 的定义与作用:
Vagrant 是一个用于构建和管理虚拟机环境的开源工具,主要用于创建一致、可重复的开发环境。它通过脚本化的方式(主要是Vagrantfile
)定义虚拟机配置,简化环境搭建流程。 - Vagrant 的优势:
- 环境一致性:确保开发、测试、生产环境一致,避免“在我机器上可以运行”的问题。
- 快速部署:通过预配置的 Box 文件快速启动虚拟机。
- 跨平台支持:支持 Windows、macOS、Linux,支持多种虚拟化提供者(如 VirtualBox、VMware、Hyper-V)。
- Vagrant 与其他工具的对比:
- Vagrant vs Docker:Vagrant 创建完整的虚拟机(包含操作系统),而 Docker 使用容器(共享主机内核)。Vagrant 更适合需要完整系统隔离的场景。
- Vagrant vs Terraform:Terraform 用于基础设施即代码(IaC),多用于云端资源管理;Vagrant 更专注于本地开发环境。
- 适用场景:
- 本地开发环境:如 LAMP、LEMP 栈。
- 测试环境:模拟生产环境。
- 学习新工具:如 Hadoop、Kubernetes 等复杂系统。
box provider/provisioner
vagrant(5)基于centos7镜像优化
Posted on
目的
开启密码、key认证、添加国内yum源、增加磁盘大小、关闭selinux、安装常用软件包、关闭防火墙
1.Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos7"
config.vm.hostname = "vgt-c7-101"
config.disksize.size = '50GB'
#config.vm.disk :disk, size: "50GB", primary: true
config.vm.network "private_network", ip: "172.24.20.101", hostname: true
config.ssh.insert_key = true
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 2
vb.name = "vgt-c7-101"
end
config.vm.provision "shell", path: "init.sh"
end
vagrant(6)package基于当前虚机打包box
Posted on
目的
当前虚机做了优化,想基于此虚机打包xx.box当作基础镜像
1.检查vagrant默认insecure_private_key
ll ~/.vagrant.d/insecure_private_key
➜ .vagrant.d ll ~/.vagrant.d/insecure_private_keys
total 32
-rw------- 1 mvpbang staff 411 4 2 2024 vagrant.key.ed25519
-rw-r--r-- 1 mvpbang staff 98 3 5 15:58 vagrant.key.ed25519.pub
-rw------- 1 mvpbang staff 1675 4 2 2024 vagrant.key.rsa
-rw-r--r-- 1 mvpbang staff 381 3 5 15:58 vagrant.key.rsa.pub
vagrant nat rule已存在问题解决
Posted on
问题
操作来看是调整了nat网络配置导致的nat rule异常
日志如下
➜ c7-10x vgtu
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["modifyvm", "ded6483d-ae4c-4baa-8c1e-421b6f44ba90", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"]
Stderr: VBoxManage: error: A NAT rule of this name already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component NATEngineWrap, interface INATEngine, callee nsISupports
VBoxManage: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 2102 of file VBoxManageModifyVM.cpp