使用Vagrant和VirtualBox,在CentOS7上构建多个CentOS7实例
※2019年3月6日,我将在公司自媒体上发布的文章转移到了另一个位置。
https://www.chuo-system.co.jp/csclib/
虽然在不知不觉中经常使用虚拟化环境,但我从来没有经历过构建的过程,所以尝试了使用Vagrant+VirtualBox。在此过程中,我简单记录下了试验的步骤和感受。
我想做的事情
工作环境
-
- ホスト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的内容等,深入挖掘一下可能会更有趣吧~ 想着这次就到这吧。