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