Help us understand the problem. What is going on with this article?

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ログイン出来る

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした