talesleaves-dev

諸々の開発のメモ。画像は面倒

Vagrantの動作テストをしてみる

最もシンプルな仮想マシンの起動

Vagrant仮想マシンを起動させる場合の、最もシンプルな方法を試します。

仮想マシンのOSを選ぶ

Vagrant仮想マシンはベースになるイメージをダウンロードして作成されます。
以下のサイトに、Vagrantで使用できるイメージ=boxが登録されています。
Discover Vagrant Boxes - Vagrant Cloud
ここでは最新版のCentOS7を利用することにします。
表示されているcentos/7がbox名となりますで、これだけ覚えておきます。

仮想マシンを起動する

実際に仮想マシンを起動する手順は至ってシンプルです。

md \path_to_dir\any_name
cd \path_to_dir\any_name
vagrant init centos/7
vagrant up

上記をPowerShell(またはコマンドプロンプト)で実行するだけです。
これだけで

  1. 任意のフォルダを作成して、作業場所にする
  2. CentOS7の仮想マシンVagrantでの最小限の設定を作成する
  3. 仮想マシンを作成して起動、最小限のデフォルト設定を行う

をこなしてくれます。
vagrant up”の際にログが表示されますが、それを読み解くといろいろな作業を肩代わりしてくれていることがわかります。

コマンドの入力待ちになったら、"vagrant status"で起動したマシンの状態を確認します。
"default running (virtualbox)"と表示されれば、無事仮想マシンが起動しています。
あくまでも動作のテストですので、この初期設定しかされていない仮想マシンは停止して削除してしまいます。

仮想マシンを停止して削除する

マシンの停止と削除は以下のコマンドを実行します。

vagrant halt
vagrant destroy -f

確認として"vagrant global-status"を実行します。これは、Vagrant全体で管理している環境の状態を表示するコマンドです。
「(英文で)Vagrant環境はないよ。それか、環境を破棄してはいないけど、古いバージョンで作ったVagrantの環境を作りし直してないよ」と表示されればVagrantでの作業は完了です。
ここまでで生成された環境の設定ファイル等は残ったままになっていますので、必要がなければ、テストに使用したディレクトリもOS側から削除します。


ここまでの作業で、Vagrantにダウンロードされた環境のboxは残っています。
削除したい場合は、"vagrant box remove centos/7"を実行します。

実際には何が起きたのか

ここでは上記のテストで何が起きていたかを把握します。とにかく環境を作れればいいんだよ、という方は読み飛ばしてください。

vagrant init”まで

Vagrantでは一つの環境を一つのディレクトリ内で管理します。*1
そのため、まずは空のディレクトリを作成して、作業ディレクトリとします。
vagrant init [box-name]"は使用するbox名を指定して設定ファイルであるVagrantfileを生成します。
このVagrantfileは使用するbox名だけを指定した空のテンプレートであり、テキストエディタで開くといくつかの設定例が記載されています。
実際にはこのVagrantfileを編集して、環境の設定やその手順を追加していきます。

vagrant up”

"vagrant up"は作業フォルダ内のVagrantfileに従って、仮想環境を作成して、マシンを起動します。
実際には、以下のコマンド・作業を肩代わりしてくれています。

  1. vagrant box add ”:環境のベースとなるboxをダウンロードしてVagrantに登録する
  2. 設定の作成:最小限の設定のみを記述したVagrantfileの生成
  3. 仮想マシンの作成と諸設定:boxで起動されるマシンへのネットワーク設定や、仮想OSへのsshログインの設定、仮想マシンとの共有ディレクト*2の設定

これらの作業のうち、初回作成時にのみ必要な作業は二回目以降の"vagrant up"では省略され、起動時間が短縮されます。

vagrant destroy -f”まで

vagrant halt”は現在作業しているディレクトリの仮想マシンをシャットダウンします。
"vagrant destroy"は現在作業しているディレクトリの仮想マシンを破棄します。オプションは確認を省略するオプションです。providerにアクセスして実際にマシンを削除してくれます。
以上、ここまでが、この記事内で行った作業となります。

*1:このディレクトリがプロジェクトに対応するという考え方のようです

*2:よく見たら"folder"と表記されてる