专注于快乐的事情

ubuntu环境下使用vagrant创建虚拟机

说明

宿主环境为ubuntu 17,计划在上面安装3台虚拟主机。

10.168.1.100 master
10.168.1.101 node1
10.168.1.102 node2

步骤

安装

vagrant需要首先安装virtualBox,假设已经安装。

sudo apt-get install vagrant

进入到一个目录,执行
vagrant init centos/7,会在目录下建立Vagrantfile文件

定制化Vagrantfile文件

修改原有的Vagrantfile文件,如下

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.define :master do |master|
    master.vm.hostname = "10.168.1.100"
    master.vm.provider :virtualbox do |v|
      v.name = "10.168.1.100"
      v.memory = 1024
      v.cpus = 2
    end
    master.vm.network :public_network, ip: "10.168.1.100",bridge: "enp3s0",auto_config: false
    master.vm.provision :shell, path: "bootstrap_master.sh"
  end


  (1..2).each do |i|
    config.vm.define "node#{i}" do |node|
      node.vm.hostname = "10.168.1.10#{i}"
      node.vm.provider :virtualbox do |v|
        v.memory = 512
        v.cpus = 1
      end
      node.vm.network :public_network, ip: "10.168.1.10#{i}",bridge: "enp3s0",auto_config: false
    end
  end

  config.vm.provision :shell, path: "bootstrap.sh"
end

启动

vagrant up

启动完成后有个.vagrant目录,其文件目录可能如下

└── machines
    ├── master
    │   └── virtualbox
    │       ├── action_provision
    │       ├── action_set_name
    │       ├── creator_uid
    │       ├── id
    │       ├── index_uuid
    │       ├── private_key
    │       └── synced_folders
    ├── node1
    │   └── virtualbox
    │       ├── action_provision
    │       ├── action_set_name
    │       ├── creator_uid
    │       ├── id
    │       ├── index_uuid
    │       ├── private_key
    │       └── synced_folders
    └── node2
        └── virtualbox
            ├── action_provision
            ├── action_set_name
            ├── creator_uid
            ├── id
            ├── index_uuid
            ├── private_key
            └── synced_folders

表示安装了三个机器,master,node1,node2.

进入到安装的系统

vagrant ssh master
vagrant ssh node1

如果修改了配置如何生效

vagrant reload --provision

/vagrant这个目录是自动映射的,被映射到你刚刚建立的文件夹,这样就方便我们以后在开发机中进行开发,在虚拟机中进行运行效果测试了。

常用命令

vagrant init    # 建立 Vagrant File
vagrant up     # 建立虚拟机(或开机)
vagrant halt   # 关闭虚拟机
vagrant reload  # 重启虚拟机
vagrant ssh     # SSH 至虚拟机
vagrant status   # 查看虚拟机运行状态
vagrant destroy  # 删除虚拟机
vagrant suspend #暂停虚拟机(类似休眠)
vagrant resume #唤醒虚拟机

VBoxManage 命令

vagrant依赖virtualBox,virtualBox下的命令行操作如下:

查看当前虚拟机

VBoxManage list vms

查看当前正在运行的虚拟机

VBoxManage list runningvms

关闭虚拟机
VBoxManage controlvm 14c2d90b-a0ee-48cd-885a-6b20d50c5c04 poweroff

删除
VBoxManage unregistervm 87bf00c7-8468-430e-b68f-446a95e73c93 --delete

错误集

解决安装laravel/homestead vagrant环境报”A VirtualBox machine with the name ‘homestead’ already exists.”的错误。
使用上面的VBoxManage unregistervm的删除即可。

Vagrant network collides with a non-hostonly network
ip地址设置192.168.2.10
其他参考
https://stackoverflow.com/questions/39049717/vagrant-network-collides-with-a-non-hostonly-network

参考

Vagrant 手册之多个虚拟机 multi-machine
VBoxManage 命令详解
使用vagrant部署开发环境
VAGRANT 网络配置
https://www.cnblogs.com/wangkongming/p/4301021.html
https://www.jianshu.com/p/a1bc23bc7892

https://blog.csdn.net/kikajack/article/details/80032131
ssh免密码登录

https://www.cnblogs.com/chuanqimessi/p/4704850.html

评论系统未开启,无法评论!