『入門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
以上