Vagrant 极简教程

Vagrant 能够理解为是一个管理虚拟机的工具,咱们经常使用它快速建立虚拟镜像来进行开发或者测试等等。官方文档为 https://www.vagrantup.com/docs/html

安装

# macOS
brew cask install virtualbox
brew cask install vagrant

由于 Vagrant 只是个单纯管理虚拟机的工具,因此是须要先安装虚拟机的node

快速入门

这个 demo 将教你经过 Vagrantfile 快速建立 3 个 ubuntu 的虚拟镜像。首先须要你先添加 Ubuntu 的 box,具体有哪些 box ,能够到https://app.vagrantup.com/boxes/search 这里来查找shell

vagrant box add generic/ubuntu1804

接下来就是一个漫长的等待过程(若是你没开代理的话),这种时候你能够复制它的下载连接,而后经过迅雷等下载工具来进行下载,下载完成后再来添加 boxbootstrap

vagrant box add --name generic/ubuntu1804 /path/to/xxxxx

编辑 Vagrantfileubuntu

Vagrant.configure(2) do |config|
    # 指定使用哪一个 box
    config.vm.box = "generic/ubuntu1804"

    # 指定使用哪一个虚拟机
    config.vm.provider "virtualbox" do |vb|
        # 给virtualbox虚拟机指定资源配置,其余配置项能够看https://www.vagrantup.com/docs/virtualbox/configuration.html
        # 记住,不一样的虚拟机的配置是不太同样的,具体看官方文档
        # 这里指定了1024M内存
        vb.memory = "1024"
    end

    # 循环 2 次
    (1..2).each do |i|
        # 建立虚拟机,用 i 下标来标识每一台虚拟机,虚拟机名称为 node1,node2
        config.vm.define "node#{i}" do |node|
            # 配置hostname
            node.vm.hostname = "node#{i}"
            # 配置机网络
            node.vm.network "private_network", ip: "192.168.33.2#{i}"
            # 配置端口映射,guest是虚拟机,host是本机
            # 须要多个端口映射,就写多个,目录映射同理
            node.vm.network "forwarded_port", guest: 80, host: "908#{i}"
            node.vm.network "forwarded_port", guest: 90, host: "909#{i}"
            # 配置目录映射,第一个参数是本机目录(这里用是相对路径,你也能够写绝对路径),第二个参数是虚拟机目录
            # 第三个参数是 virtualbox 须要的,具体看https://www.virtualbox.org/manual/ch04.html#sharedfolders
            node.vm.synced_folder "app#{i}", "/vagrant", SharedFoldersEnableSymlinksCreate: false
        end
    end

    # 单首创建一个虚拟机
    config.vm.define "manage" do |manage|
        manage.vm.hostname = "manage"
        manage.vm.network "private_network", ip: "192.168.33.11"
        # 使用 shell provision 执行一段脚本,其余 provision 能够看官方文档 
        # https://www.vagrantup.com/docs/provisioning/
        manage.vm.provision "shell", path: "bootstrap-manage.sh"
    end
end

编辑 bootstrap-manage.sh网络

cat >> /etc/hosts <<EOL
192.168.33.11 manage
192.168.33.21 node1
192.168.33.22 node2
EOL

目录结构app

- app1/
- app2/
- bootstrap-manage.sh
- Vagrantfile

接下里就是用 Vagrant 来启动虚拟机了,在 Vagrantfile 所在目录执行ssh

vagrant up

在一个长时间的等待后,咱们的3台虚拟机就建立完成了。而后咱们能够ssh到虚拟机中,查看是否成功ide

# 由于前面咱们定义一个名字叫 manage 的虚拟机,因此能够经过这种方式快速 ssh
# 固然你也能够经过 ssh vagrant@192.168.33.11,密码也是vagrant
vagrant ssh manage

使用完成后,咱们能够经过 Vagrant 关闭虚拟机工具

vagrant halt

若是想删掉虚拟机的话,也同样能够经过 Vagrant 来处理

vagrant destroy
相关文章
相关标签/搜索