1. 程式人生 > >使用vagrant快速搭建linux實驗環境

使用vagrant快速搭建linux實驗環境

由於 用戶家目錄 linu tom per host key 支持 fine

簡介

本文主要介紹如何使用vagrant配合virtualbox快速搭建實驗環境。
virtualbox是一個開源跨平臺虛擬機管理軟件,功能類似收費的vmware
vagrant是一個開源的虛擬機配置編排軟件,可以在命令行快速啟動管理虛擬機。

相關資源的百度雲下載鏈接
鏈接:https://pan.baidu.com/s/1nt_b96SEOIIWl2gIrabPpg 密碼:6c3d

安裝

1.安裝virtualbox

官方下載virtualbox對應平臺的軟件包安裝

2.安裝vagrant

官方下載vagrant對應平臺的軟件包安裝,由於官方網站在國外,可能下載比較慢。

3.設置virtualbox虛擬機存方目錄

# 默認情況下 virtualbox 啟動虛擬機會存放在用戶的家目錄裏# windows 下C盤可能過小,需要設置特定目錄存儲虛擬機VBoxManage setproperty machinefolder D:\virtualbox
VBoxManage list systemproperties | grep machine

搭建實驗環境

1.下載導入相關box

# 由於需要從國外拉取box,可能會很慢。推薦使用我存儲在百度雲的box# 導入boxvagrant box add centos-7.4-base centos-7.4-base.box
vagrant box list

2.啟動單機

mkdir single && cd single
cat >Vagrantfile<<EOF# -*- mode: ruby -*-# vi: set ft=ruby :ENV["LC_ALL"] = "en_US.UTF-8"Vagrant.configure("2") do |config|
    config.vm.box = "centos-7.4-base"
    config.vm.hostname = "will"
    config.ssh.insert_key = false

    # 指定CPU和內存大小
    config.vm.provider "virtualbox" do |v|
      v.memory = 1024
      v.cpus = 2
      v.customize ["modifyvm", :id, "--name", "will"]
    end    # 配置網絡
    config.vm.network "private_network", ip: "11.11.11.111"
    # config.vm.network "private_network", ip: "192.168.22.10"

    # 配置啟動後的操作
    config.vm.provision "shell", inline: <<-SHELL
      hostname
    SHELL
end
EOF# 啟動vagrant up

3.啟動多主機

mkdir double && cd doublecat >Vagrantfile<<EOF# -*- mode: ruby -*-# vi: set ft=ruby :ENV["LC_ALL"] = "en_US.UTF-8"Vagrant.configure("2") do |config|
    config.vm.define "web" do |web|
        web.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
        end
        web.vm.box = "centos-6.9"
        web.vm.hostname = "web"
        web.vm.network "private_network", ip: "11.11.11.11"
    end
    
    config.vm.define "db" do |db|
        db.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
        end
        db.vm.box = "centos-6.9"
        db.vm.hostname = "db"
        db.vm.network "private_network", ip: "11.11.11.22"
    end
end
EOF# 啟動vagrant up

3.啟動集群

mkdir cluster && cd cluster
cat >Vagrantfile<<EOF# -*- mode: ruby -*-# vi: set ft=ruby :ENV["LC_ALL"] = "en_US.UTF-8"Vagrant.configure("2") do |config|
    (1..6).each do |i|
      config.vm.define "lab#{i}" do |node|
        node.vm.box = "centos-7.4-docker-17"
        node.ssh.insert_key = false
        node.vm.hostname = "lab#{i}"
        node.vm.network "private_network", ip: "11.11.11.11#{i}"
        node.vm.network "private_network", ip: "11.11.12.11#{i}"
        node.vm.provision "shell",          inline: "echo hello from node #{i}"
        node.vm.provider "virtualbox" do |v|
          v.cpus = 4
          v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "2048"]
        end
      end
    end
end
EOF# 啟動vagrant up

4.連接虛擬機

# 一般情況下虛擬機ssh連接用戶名為 vagrant# 一般情況下都不支持 密碼登錄, 可以登錄之後自行配置支持密碼登錄# 連接的sshkey存儲在用戶家目錄下 .vagrant.d 目錄下# C:\Users\will\.vagrant.d\insecure_private_key

常用命令

以下命令後面都可以接虛擬機名,只對指定虛擬機作操作

  • 啟動虛擬機

    • vagrant up

  • 暫停虛擬機

    • vagrant suspend

  • 關閉虛擬機

    • vagrant halt

  • 刪除虛擬機

    • vagrant destroy

  • 存儲快照

    • vagrant snapshot save lab1 init

  • 恢復快照

    • vagrant snapshot restore lab1 init

使用vagrant快速搭建linux實驗環境