CentOS
Vagrant
VirtualBox

Windows上にVirtualBox+VagrantでCentOS環境構築

More than 3 years have passed since last update.

会社でHAProxyを試したい時、仕事中自分のMacを開いていると肩身が狭いのでばれないように仕事で使っているWindowsにVirtualBox+VagrantでCentOS環境を構築してHAProxyを試そうと言う意図で書かれたエントリです。

新しい案件もVagrant使うっぽいのでその点でもDockerを使わずに慣れようという点でVagrantを選択しています。

…(今後自分のMacを検証用に開いていもそのような思いをせずにいれる環境になることを願うばかりです。)

初めにVagrantとは何者か

触り始める前の印象はVirutualBoxに環境を立ち上げるための設定ファイルを書いてそれから同じ環境を作ることが出来ると思っています。

-> VirtualBoxのVM構築を楽にしてくれるツール

DockerはVirtualBox上にLinuxVMを作ってその上でDockerfileからイメージ作ったりイメージからコンテナ立てたりしているのでVM自体は何度も作り直さない、VagrantはVagrantfileから何度も同じ状態のVMを作る印象。

Wikipedia Vagrant (ソフトウェア)


Vagrantを用いると、構成情報を記述した設定ファイルを元に、仮想環境の構築から設定までを自動的に行うことができる。当初はVirtualBoxをターゲットとしていたが、1.1以降のバージョンではVMwareなどの他の仮想化ソフトウェアやAmazon EC2のようなサーバー環境も対象とできるようになった。Vagrant自身はRubyで作成されているが、PHPやPython、Java、C#、JavaScriptといった、他のプログラミング言語の開発においても用いることができる。


とのことです。

VirtualBox以外の環境でも使えるんですね。

Vagrantの基本


ミドルウェアの設定やインストールを行うツール

eg.シェルスクリプト、Chef(chef-solo, chef-client)、Puppetなど


Vagrantfile自体にはサーバーの環境情報だけ記述してサービスのインストールなどは他のソフトでやってね、ということでしょうか

Dockerfileにはミドルウェア含めイメージ作成出来るのでVagrantのここは少し面倒な気がします、実行するレイヤーが違うと言われたらしょうがないけれど。

とりあえずVagrantはAnsibleとかChefでうまくやってねということと覚えておけばいいでしょう。

あとVagrantは、CentOSなどを立ち上げてyumでなんやらかんやらインストールしたあとにCentOSをストップして再び立ち上げると、yumでインストールしたものが残っているらしいです。

完全にVagrantfileに記述している状態で起動したい場合は、VMを削除して再び立ち上げないといけないので気軽に試して気軽に捨てるということが少し難しそうです。

--rm欲しい…

では上で調べたことを検証していきたいので実際に始めてみましょう。

VirtualBoxインストール

こちらのURLの

https://www.virtualbox.org/wiki/Downloads

VirtualBox 5.0.14 for Windows hosts x86/amd64をクリックしてダウンロードしてぽちぽちすればインストール完了です。

virtualbox.PNG

Vagrantのインストール

こちらのURLの

https://www.vagrantup.com/downloads.html

WINDOWSをクリックしてダウンロードします。踊って待ちましょう。

舞は大切です、エンジニアリングの観点から見てもダウンロード成功率を高めることが確認されています。

vagrant.PNG

ダウンロードしたmsiをダブルクリックしてインストールしましょう。

インストール後はWindowsの再起動が必要です。

VirtualBoxにCentOS boxファイルを登録する

vagrant box add VM名 boxファイルURL

今回はCentOS6.7を選択しています。

なので

vagrant box add centos6-7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

というコマンドを実行します。

boxファイルのダウンロードはかなり時間のかかるので今回はコンソールを眺めて眉間にしわを寄せながらあたかも仕事している風を装いましょう、人生を無駄に出来ます。

※他のOSを選択したい場合はboxファイルをここから選択してください。

http://www.vagrantbox.es/

ダウンロードが完了したら次のコマンドで確認しましょう

vagrant box list

centos6-7と確認できたので良さそうです。

Vagrantfileの作成

vagrant init box名

で生成します

vagrant init centos6-7

カレントディレクトリにVagrantfileが作成されます。

僕の場合

/d/various/vagrant/centos6-7/にしました

生成したVagrantfileを編集します

// Windowsから見ることの出来るIPを指定

config.vm.network "private_network", ip: "192.168.33.10"

// GUIモードの設定をONにする
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
end

VM立ち上げ

設定が済んできたのでCentOSのVMを立ち上げてみましょう

立ち上げるコマンドは

vagrant up

で先ほど編集したVagrantfileがあるディレクトリ上で行わなければいけません

Dockerの場合buildは遅いですがコンテナ起動のrunは高速です

Vagrantのupの場合はVagrantfileから起動する初回起動に少し時間がかかります

vm-run.PNG

起動したらlogin/passwordともにvagrantと入力すればログイン出来ます

GUIで開きましたが、このCentOSに他のコンソールからssh接続したい場合は

vagrant upしたディレクトリから

vagrant ssh

と入力してログインするか

vagrant-ssh.PNG

ssh vagrant@192.168.33.10

でsshログイン出来ます

vagrant-sshlogin.PNG

HAProxyのインストール

現在はHAProxyがサービスとして認識されていません。

vagrant-chkconfig.PNG

インストールしていきます

sudo yum -y install haproxy

haproxyがインストールされたことが確認できました

vagrant-chkconfig2.PNG

※今回はHAProxyの設定はしません

VM停止

最初疑問だったvagrantはVMが停止した後に状態を保持するのかが気になっていたのでここで検証してみます。

vagrantにVMを停止する方法は

vagrant halt



vagrant destroy

の2つあります

まずはhaltを試していきます。

upしたディレクトリで

vagrant halt

vagrant-halt.PNG

これを実行するとGUIで立ち上がっていたコンソールも閉じられます。

そしてもう一回vagrant upでVMを起動してみましょう

vagrant up

2回目の起動も地味にかかる点…

vagrant-reup.PNG

chkconfigでhaproxyが保持されているか確認

vagrant-chkconfig3.PNG

haproxyがあるのが確認できます


vagrantはVMが停止した後に状態を保持するのか


結論は保持される、でした

ではvagrant destroyはどうでしょう

vagrant destroy

※destroyはVM停止中でも実行できます

vagrant-destroy.PNG

destroyコマンドを打ってもyを押さない限り消されることはありません、確認大事

再び

vagrant up

vagrant-chkconfig4.PNG

destroyはVMを削除するので予想通りhaproxyは存在しませんでした

番外編

個人的にGUIモードは必要ないのでVagrantfileのGUI設定を無効にしてvagrant upすると

CentOSのウィンドウは現れませんでした

// GUIモードの設定をONにする

#config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#end

vagrant statusで起動しているのか確認

vagrant-status.PNG

立ち上がっていますね、sshログインも問題なく出来ました。

所感

vagrantを触ってみてdockerよりもシンプルに考えることが出来るツールだと思った

直接VMを立ち上げるのでそう感じるのかもしれない

dockerは覚えると高速に起動出来過ぎて素晴らしいが、最初概念を理解するのが少し難しい

今回はCentOSを立ち上げるだけで難しいことはやっていないので、次はChefやAnsibleなどを使って色々な環境を整える練習をしてみたいと思う

今回の参考資料はこちらです

Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築

以上です

コマンドメモ

vagrant box add box名 boxファイル: ローカルにボックスファイルをダウンロードする

vagrant box list: box一覧確認

vagrant init box名: Vagrantfileの作成

vagrant up: VagrantfileからVMを起動する

vagrant status: 起動しているVM一覧確認

vagrant halt: VM停止

vagrant destroy: VM削除

vagrant ssh: 簡単にSSHログイン出来る