Vagrant の機能は仮想マシーンの起動・停止だけではなく、仮想マシーンの状態の設定を自動化する「プロビジョニング」機能も強力な特徴です。 本稿では Vagrant でのプロビジョニングを初めて学習する人向けに、プロビジョニング機能の使い方を説明したいと思います。
なお、プロビジョニングの概念については、以前の稿「Vagrant入門 – プロビジョニング (Provisioning)」をご覧ください。
本稿でやりたいこと
本稿では、導入としてシェルスクリプトを利用してプロビジョニングを行う方法を説明します。 シェルスクリプトで httpd をインストールする命令を書いておき、CentOS の仮想マシーンを準備する際に自動的に httpd がインストールされてサービスが開始されるようにします。
それでは、さっそく設定の仕方をみていきましょう。
Vagrantfile にスクリプトを記述する
テキストエディタで Vagrantfile を開き、下記の赤字の記述を追加します。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(snip)
script = <<SCRIPT
yum install -y httpd
service httpd start
SCRIPT
config.vm.provision :shell, :inline => script
(snip)
end
変数 script を宣言し、プロビジョンで実行したいコマンド文字列を代入します。 ここでは yum で httpd をインストールしサービスを開始するコマンドを記述しています。
そして、プロビジョンにてそのシェルスクリプトが実行されるように設定します。
プロビジョニングしてみよう
それではプロビジョニングを試してみましょう。 以下のコマンドのように、仮想マシーンを起動したあとにプロビジョニングのコマンドを実行してみてください。
$ # 仮想マシーンを起動
$ vagrant up
$ # プロビジョン - httpd が自動的にインストールされる
$ vagrant provision
[default] Running provisioner: shell...
DL is deprecated, please use Fiddle
[default] Running: inline script
Loaded plugins: fastestmirror
Determining fastest mirrors
(snip)
Installed:
httpd.i686 0:2.2.15-29.el6.centos
(snip)
Complete!
Starting httpd:
[ OK ]
上記はコマンド実行結果をだいぶ省略してしまっていますが、yum で httpd がインストールされ、その後に httpd サービスが開始されたことが確認できると思います。
仮想マシーンにログインし、service httpd status で本当に httpd が実行されているのかを確認してみても良いでしょう。
おわりに
今回はプロビジョニングを簡単に体験するために、シェルスクリプトで httpd をインストールする方法を試しました。 次回はシェルスクリプトを別ファイルにして管理する方法について説明したいと思います。 (現在執筆中)