Posted at

Vagrantの便利機能メモ

More than 5 years have passed since last update.

『入門Chef Solo』1周読んだ後に、ドットインストール「Vagrant入門」を学習して知った便利機能についてメモ


1.共有フォルダ

Vagrantの初期化を行ったディレクトリが、仮想OSとの共有フォルダになっている

#Vagrantの初期化を行ったフォルダ

$ pwd
/var/root/centos

#ファイル一覧
$ ls
.vagrant Vagrantfile provision.sh

#仮想OSにログイン
$ vagrant ssh

#下記、フォルダが共有フォルダになっている
$ cd /vagrant/

#Vagrantfileがあることがわかる
$ ls
provision.sh Vagrantfile

#試しにファイルを作成してみる
$ sudo touch test

#仮想OSをログアウト
$ logout

#ホスト側で作成したファイルを確認できた
$ ls
.vagrant Vagrantfile provision.sh test


2.Provisioning

Provisioningで、仮想マシンが立ち上がったあとに実行される処理を指定できる

講義内でも言われてたがChefと機能が被りそうだけど、

プロジェクト内に既存のセットアップシェルなどがあれば、こっちのがお手軽そうではある


(1)起動時にシェルを実行する

Vagrantfileに以下、設定を追加する

 config.vm.provision :shell, :inline => "コマンド"

#編集

$ vi Vagrantfile
〜中略〜
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "centos"
config.vm.provision :shell, :inline => "echo hello world" ← 追加
〜中略〜

#仮想OS起動
$ vagrant up
〜中略〜
[default] -- /vagrant
[default] Running provisioner: shell...
[default] Running: inline script
hello world ← コマンドが実行された


(2)ファイルを読み込ませる

Vagrantfileに以下、設定を追加する

 config.vm.provision :shell, :path => "ファイルパス"

#ファイル作成

#学習内容通り、Apacheインストールから起動まで
$ vi provision.sh
sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on

#編集
$ vi Vagrantfile
〜中略〜
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "centos"
config.vm.provision :shell, :path => "provision.sh" ← 追加
〜中略〜

#仮想OS起動
$ vagrant up

#仮想OSにログイン
$ vagrant ssh

#Apache起動確認
$ sudo service httpd status
httpd (pid 2382) is running...


3.起動中の仮想サーバからBox作成

#起動中の仮想OSはシャットダウンされてしまうので注意!!

$ vagrant package
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Creating temporary directory for export...
[default] Exporting VM...
[default] Compressing package to: /private/var/root/centos/package.box

#package.boxが作成されている
$ ls
.vagrant Vagrantfile package.box provision.sh

以上