Vagrant¶
Vagrant 插件¶
# 查看 插件
$ vagrant plugin list
$ vagrant plugin install vagrant-share --plugin-clean-source --plugin-source https://gems.hashicorp.com
$ yum install libvirt-devel
$ vagrant plugin install vagrant-libvirt --plugin-clean-source --plugin-source https://mirrors.ustc.edu.cn/rubygems/
$ vagrant plugin install vagrant-mutate --plugin-clean-source --plugin-source https://mirrors.ustc.edu.cn/rubygems/
$ vagrant plugin install vagrant-rekey-ssh --plugin-clean-source --plugin-source https://mirrors.ustc.edu.cn/rubygems/
Vagrant-libvirt¶
初始化¶
vagrant init centos/7
更名存储池¶
Vagrant会尝试使用一个名为default的存储池, 如果这个default存储池不存在就会尝试在/var/lib/libvirt/images上创建这个defualt存储池。 CentOS7默认安装libvirt环境,已经在/var/lib/libvirt/images目录上创建了名为images的存储池, 所以需要修改Vagrantfile配置文件中定义provider。
Vagrant.configure("2") do |config|
config.vm.provider "libvirt" do |libvirt|
libvirt.storage_pool_name = "images"
end
end
启动¶
为告知Vagrant主机使用的provider是vagrant-libvirt, 而不是默认的virtualbox, 设置环境变量(这样vagrant up命令就不需要加上--provider libvirt参数)
vagrant up --provider libvirt
# or
export VAGRANT_DEFAULT_PROVIDER=libvirt ; vagrant up
Vagrant box Init¶
vagrant init ubuntu/trusty64
vagrant init my-box https://boxes.company.com/my.box
vagrant init my-box ../mybox_storage/my.box
# eg :
$ vagrant init bionic-server-cloudimg-amd64 https://mirrors.shu.edu.cn/ubuntu-cloud-images/bionic/20180802/bionic-server-cloudimg-amd64-vagrant.box
$ vagrant init CentOS-7-x86_64-Vagrant-1805_01 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1805_01.VirtualBox.box
$ vagrant init Fedora-Cloud-Base-Vagrant-28-1.1 http://mirrors.163.com/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box
Vagrant box Add¶
Vagrant会将所下载的box,保存到 ~/.vagrant.d/boxes 目录下
$ vagrant box add --name mybox ../mybox_storage/my.box
$ vagrant box add mybox http://someurl.com/mybox.box
$ vagrant box add --name mybox http://someurl.com/mybox.box
# eg :
$ vagrant box add --name bionic-server-cloudimg-amd64 https://mirrors.shu.edu.cn/ubuntu-cloud-images/bionic/20180802/bionic-server-cloudimg-amd64-vagrant.box
$ vagrant box add --name CentOS-7-x86_64-Vagrant-1805_01 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1805_01.VirtualBox.box
$ vagrant box add --name Fedora-Cloud-Base-Vagrant-28-1.1 http://mirrors.163.com/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box
Vagrantbox.ex¶
Base box download¶
-
https://mirrors.ustc.edu.cn/ubuntu-cloud-images/server/server/bionic/20180802/bionic-server-cloudimg-amd64-vagrant.box https://mirrors.shu.edu.cn/ubuntu-cloud-images/bionic/20180802/bionic-server-cloudimg-amd64-vagrant.box
-
https://mirrors.ustc.edu.cn/centos-cloud https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1805_01.VirtualBox.box
- Fedora cloud
http://mirrors.163.com/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box https://mirrors.ustc.edu.cn/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box https://mirrors.aliyun.com/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box https://mirrors.shu.edu.cn/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-28-1.1.x86_64.vagrant-virtualbox.box
基于Virtual box 创建Vagrant box¶
# virtualBox 导入虚拟机
$ VBoxManage import ./UCS-Virtualbox-Demo-Image.ova --vsys 0 --eula accept
# 查看虚拟机 id
$ vboxmanage lisb vms
"UCS 4.1" {acef4c0a-35be-4640-a214-be135417f04d}
You can now package that VM as a Vagrant box:
# 基于虚拟机 id 生成 vagrant box
$ vagrant package --base acef4c0a-35be-4640-a214-be135417f04d --output UCS.box
打包 Vagrant box¶
# 打包成box
$ vagrant package --output newBox.box
# 重新打包 box
$ vagrant box repackage <name> <provider> <version>
$ vagrant box repackage ubuntu/trusty64 virtualbox 20180330.0.0
provison¶
provison并不会每次都执行,只有在这三种情况下provision才会运行:
# 1. 首次执行vagrant up
$ vagrant up
# 2. 执行
$ vagrant provision
# 3. 执行
$ vagrant reload --provision
Vagrant Snapshot¶
$ vagrant snapshot --help
$ vagrant snapshot list "snapshot_name"
$ vagrant snapshot save "snapshot_name" # 创建快照
$ vagrant snapshot delete "snapshot_name" # 删除快照
$ vagrant snapshot pop "snapshot_name"
$ vagrant snapshot push "snapshot_name"
$ vagrant snapshot restore "snapshot_name" # 从快照还原
Vagrantfile¶
config.vm.box = "mc_termian_test"
# The url from where the 'config.vm.box' box will be fetched if it
# doesn't already exist on the user's system.
config.vm.box_url = "../boxs/mc_termianl.box"
config.ssh.username = 'root'
config.ssh.password = 'rootroot'
# 挂在目录
config.vm.synced_folder "../data", "/vagrant_data"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
vb.name = "vagrent_ubuntu14"
# Customize the amount of memory on the VM:
vb.memory = "1024"
vb.cpus = 4
# enable hardware virtualization technology
vb.customize ["modifyvm", :id, "--pae", "on"]
vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
vb.customize ["modifyvm", :id, "--vtxvpid", "on"]
vb.customize ["modifyvm", :id, "--vtxux", "on"]
## Remote display (VRDP support)
# vb.customize ["modifyvm", :id, "--vrde", "on"]
# vb.customize ["modifyvm", :id, "--vrdeport", "3940"] # change here to a free port,fefault :3389
end
# 网络
# config.vm.network "public_network", ip: "192.168.2.176" , bridge: "en0"
set proxy¶
# Install proxyconf:
$ vagrant plugin install vagrant-proxyconf
#Configure your Vagrantfile:
config.proxy.http = "http://yourproxy:8080"
config.proxy.https = "http://yourproxy:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
about mc_termianl¶
# Install VirtualBox Guest Additions
wget -O /etc/apt/sources.list http://mirrors.163.com/.help/sources.list.trusty
apt-get install -y gcc make perl
apt-get clean
mount /dev/cdrom /media/cdrom
cd /media/cdrom
./VBoxLinuxAdditions.run