使用Vagrant和VirtualBox,在CentOS7上构建多个CentOS7实例

※2019年3月6日,我将在公司自媒体上发布的文章转移到了另一个位置。
https://www.chuo-system.co.jp/csclib/

虽然在不知不觉中经常使用虚拟化环境,但我从来没有经历过构建的过程,所以尝试了使用Vagrant+VirtualBox。在此过程中,我简单记录下了试验的步骤和感受。

我想做的事情

image.png

工作环境

    • ホストOS : Linux(CentOS7.6, 64bit)

 

    • PC : Windows10, 64bit

 

    PC上のターミナル : Tera Term 4.101

操作步骤

安装所需的库。

首先,在主操作系统上安装所需的库。

# yum install epel-release -y
# yum install dkms -y
# yum -y install gcc make qt libgomp patch
# yum -y install kernel-headers kernel-devel binutils glibc-headers glibc-devel fontforge

安装VirtualBox

接下来,在主机操作系统上安装VirtualBox。

    VirtualBoxのリポジトリを設定
# cd /etc/yum.repos.d/
# curl -OL http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
    バージョンを確認
# yum search VirtualBox

// 私が実行した時に出てきたバージョンはこちら
 VirtualBox-4.3.x86_64 : Oracle VM VirtualBox
 VirtualBox-5.0.x86_64 : Oracle VM VirtualBox
 VirtualBox-5.1.x86_64 : Oracle VM VirtualBox
 VirtualBox-5.2.x86_64 : Oracle VM VirtualBox
 VirtualBox-6.0.x86_64 : Oracle VM VirtualBox // こちらをインストールしたいと思います
    入れたいバージョンのVirtualBoxをインストール
# yum -y install VirtualBox-6.0.x86_64

安装Vagrant

接下来,我们需要在主机操作系统上安装Vagrant。

(Pinyin: Jiē xià , Vagrant.)

バージョンを確認

https://releases.hashicorp.com/vagrant/ にブラウザでアクセスして確認しました

入れたいバージョンのVagrantをインストール

# curl -OL https://releases.hashicorp.com/vagrant/2.2.3/vagrant_2.2.3_x86_64.rpm
# yum -y install vagrant_2.2.3_x86_64.rpm

进入Vagrant所在的目录

由于似乎最好有一个专门用于Vagrant的目录,因此我将创建一个目录并进行移动。

// 任意の場所にディレクトリを用意して移動します
# mkdir /vagrant
# cd /vagrant

下载Vagrant的Box文件

使用Vagrant需要一个Box(即操作系统镜像文件)。请获取。

使いたいBoxを探す

https://app.vagrantup.com/boxes/search にブラウザでアクセスして、使いたいBoxを探します。
私は「bento/centos-7.6」にしました ※ここではBox名の特定だけ

Boxのダウンロード

# vagrant box add bento/centos-7.6

// プロバイダーはどれにしますか?を聞かれたのでVirtualBoxを選択します
1) hyperv
2) parallels
3) virtualbox
4) vmware_desktop

Enter your choice: 3

编辑Vagrantfile

只需要编辑设定文件就可以完成设定。

    Vagrantfileの生成
// initを実行することで、カレントディレクトリにVagrantfileが生成されます
# vagrant init
# ll
合計 4
-rw-r--r--. 1 root root 3011  2月 22 09:38 Vagrantfile

viエディタで生成されたVagrantfileの編集① ※修正した内容を抜粋します。

各ゲストOS毎にBoxを設定できるようにしておきたいのでコメントアウトしました

#config.vm.box = "base"
    • viエディタで生成されたVagrantfileの編集② ※追加した内容を抜粋します。

2つゲストOSを作りたいので、Vagrantfileのファイル末尾の「end」の直上に下記を追加しました。

PCからSSH接続したかったのでpublic_networkを指定しています
<>の部分等は適宜読み替えてください

config.vm.define "<VM名>" do |hoge1|
  hoge1.vm.hostname = "<ゲストOSのホスト名>"
  hoge1.vm.box = "<ダウンロードしたBOX名>"
  hoge1.vm.provider "virtualbox" do |vb|
    vb.memory = "<設定したいメモリ数>"
  end
  hoge1.vm.network "public_network", ip: "<ゲストOSのIPアドレス>", bridge: "<ブリッジしたいホストOSのネットワークインターフェース名>"
end
config.vm.define "<VM名>" do |hoge2|
  hoge2.vm.hostname = "<ゲストOSのホスト名>"
  hoge2.vm.box = "<ダウンロードしたBOX名>"
  hoge2.vm.provider "virtualbox" do |vb|
    vb.memory = "<設定したいメモリ数>"
  end
  hoge2.vm.network "public_network", ip: "<ゲストOSのIPアドレス>", bridge: "<ブリッジしたいホストOSのネットワークインターフェース名>"
end

启动客户操作系统

当编辑完Vagrantfile后,启动。

// これだけでゲストOSが2つ同時に起動できました。VM名を指定すればそれぞれに対しての操作も可能です。
# vagrant up

如果您想删除客户操作系统,只需执行以下步骤即可轻松完成。

// 対象のIDを特定
# vagrant global-status
// ゲストOSの削除
# vagrant destroy <対象のID>

使用Vagrant和VirtualBox时的感受

很好

    • 簡単

VirtualBox単体で構築するよりも手間が格段に少ない

ファイル(Vagrantfile)で設定情報を持てる
1つはVagrantで構築、もう1つはVirtualBoxのGUIから構築、もできた。

この場合「vagrant status」等の結果からはVirtualBoxで作ったゲストOSは表示されないが、VirtualBoxのGUIからはVagrantで作ったゲストOSが表示される。(Vagrant__<乱数?>の名前で出てきた)
クローズドな状態での動作確認用サーバ構築や、OSをいじり倒したい(ゲストOSが変なことになっても手軽に削除&再作成できる)ことに向いていると思った

微妙的含义是含蓄而复杂的。

    • 「vagrant」ユーザが自動で作られ、sudo時のパスワード設定が有効NG

有効にするとvagrantコマンドがコケる。
セキュリティホールになりそうでちょっと嫌。

vagrantユーザの初期パスワードもvagrantだが、パスワード変更はしても大丈夫。

vagrant up等でのホストOS⇔ゲストOS間は秘密鍵を使っている模様

ハードディスク容量は64GB固定?VirtualBoxのデフォルト値が適用?なのか、Vagrantfileで指定できなかった。

メモリ数とCPU数は指定OK

root権限がないと「vagrant up」がコケる

今回rootユーザでインストールしたから?

vagrantコマンドは「vagrant init」した場所じゃないと実行できないので、今回のようなケースだとちょっと面倒

複数のゲストOSを立てる時は、Vagrantfileを分けるのが一般的なのだろうか?

最后

网络配置和Vagrantfile的内容等,深入挖掘一下可能会更有趣吧~ 想着这次就到这吧。

广告
将在 10 秒后关闭
bannerAds