Vagrant主要点和例子
安装
vagrant运行文件
- yum install -y vagrant.x86_64
- 安装和运行的信息保存地址
~/.vagrant.d
provider
-
virtualbox
- yum install -y VirtualBox-6.1-6.1.12_139181_el7-1.x86_64
VBoxManage extpack install --accept-license=56be48f923303c8cababb0bb4c478284b688ed23f16d775d729b89a2e8e5f9eb --replace /opt/dev/tools/virtualbox/Oracle_VM_VirtualBox_Extension_Pack-6.1.12-139181.vbox-extpack
-
kvm
- yum install -y libvirt
- install -y qemu* kvm
yum install -y virt-manager
vagrant kvm时需要
yum install -y rsync
- 还有vmware之类的,不列出了
plugin
-
virtualbox
- yum install -y vagrant.x86_64
--plugin-clean-sources --plugin-source 设置后在 ~/.vagrant.d/plugins.json 这里就会保存了安装源地址
https://github.com/devopsgroup-io/vagrant-hostmanager
vagrant plugin install --plugin-clean-sources --plugin-source ${REPO_GEMS} --debug vagrant-hostmanager
config.vbguest.iso_path = "https://mirrors.tuna.tsinghua.edu.cn/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso"
vagrant plugin install --plugin-clean-sources --plugin-source ${REPO_GEMS} --debug vagrant-vbguest
https://github.com/sprotheroe/vagrant-disksize config.disksize.size = '50GB'
vagrant plugin install --plugin-clean-sources --plugin-source ${REPO_GEMS} --debug vagrant-disksize
/opt/vagrant/embedded/lib/ruby/2.6.0/x86_64-linux/rbconfig.rb 中需要修改 -Wl,--compress-debug-sections=zlib
vagrant plugin install --plugin-clean-sources --plugin-source ${REPO_GEMS} --debug vagrant-libvirt || true
centos7上编译出错,因此替换后再次安装,由于使用了缓存就可正常安装
sed -i "s/-Wl,--compress-debug-sections=zlib/ /" /opt/vagrant/embedded/lib/ruby/2.6.0/x86_64-linux/rbconfig.rb
vagrant plugin install --plugin-clean-sources --plugin-source ${REPO_GEMS} --debug vagrant-libvirt
box
已经预制好的镜像文件
和provider对应
https://app.vagrantup.com/boxes/search
官方的box检索入口,注册后,自己的box公开的也可以放在这
如centos7的可以下载的box有
https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/
导入box
- 例子
- box add --name centos7.4 ftp://xxx.xxx.xxx.xxx/vagrant/CentOS-7-x86_64-Vagrant-1708_01.Libvirt.box
Vagrantfile
代码化配置
约定式命名
所有配置都体现在这个文件中
这是RUBY实现的DSL,因此编写时注意RUBY的语法
登录证书
- config.ssh
这个的配置可以设置自己的免密证书等 -
vagrant ssh的排错
- vagrant up --provider=virtualbox --debug
- vagrant ssh-config
- 直接进入虚拟机命令行
虚拟机设置
- CPU 内存 网卡地址 硬盘设置
https://www.vagrantup.com/docs/providers/virtualbox/configuration -
config.vm.define "centos7.4-vb" do |node| node.vm.hostname = "vb1" #box需要按照格式备好 node.vm.box = "cs-centos-cert-user-7.4" node.vm.box_check_update = false #node.vm.synced_folder '.', '/vagrant', :disabled => true node.vm.network "private_network", ip: "192.168.99.200" #https://www.vagrantup.com/docs/providers/virtualbox/configuration 具体的配置项 node.vm.provider :virtualbox do |vb| # vb.gui = true vb.memory = 1024 vb.cpus = 1 vb.name = "vb1" end end
provision
-
脚本
- config.vm.provision :shell, inline: "chmod +x /home/vagrant/post.sh; sudo /home/vagrant/post.sh"
-
拷贝文件
- config.vm.provision "file", source: "env.sh", destination: "/home/vagrant/env.sh"
主要命令
vagrant CMD ARGS
启动 up
关机 halt
初始化 provision
登录进某个主机 ssh
销毁虚机 destroy
导出自己的box
如将当前定制的虚拟机mycentos7.4导出为box共享使用
vagrant package --base mycentos7.4 --output ./mycentos-cert-user-7.4.box
参考
https://gitee.com/wushifeng/centosKit/tree/master/sys/virtual/kvm
https://gitee.com/wushifeng/centosKit/tree/master/sys/virtual/virtualbox
官方网站
https://www.vagrantup.com/docs
基本概念名词[一句话]
box
类似livecd的启动文件
provider
虚拟环境运行的地方,如kvm virtualbox vmware
plugin
辅助不同的provider下的虚机的配置
provision
在默认的初始镜像启动后,需要定制的软件安装和各种操作
概要: 更多明细网络检索即可
用途
基础设施IAAS代码化
快速多机器环境的应用开发和测试
[统一的配置和快速安装]