(はじめの一歩)Vagrantで、ShellScriptをつかったプロビジョニングをしてみた
Vagrant道に則ったやりかた
開発元が考えているVagrantの使い方は、ほぼ素の仮想OSのboxをベースに、インストールするソフトウェアや各種設定などの設定を読み込んで環境を作るといった流れになる。
そして、このboxと設定を記述したファイル(ShellScriptだったりChefだったり)を「配布」して開発チームなどで共有するといった流れになる。
開発環境の生成プロセスの一部として、自動的にソフトウェアをインストールする方法です。後者を行うのが、プロビジョニングです。(実践Vagrant道 P47)
環境
- Vagrant 1.8.0
- ホストOSはmac OS X
- 仮想環境を動かす環境としてVirtualBox5.x系を使用
- 使用するOSはAtlasのbento (CentoOS-6.7)2.2.3
ShellScriptで設定類を読み込む
公式のVagrantのドキュメントでは、プロビジョニングChefにあまり詳しくなければまずはShellScriptで記述するところが入ったほうが良い。ある程度詳しければVagrantはChefを学ぶ格好の場です。といった趣旨のことがかいてある。
確かに、個人レベルで開発、検証用にVagrantを使う程度の話では大げさすぎるかも。
実は、先にchef-DKを使った環境構築を試したものの
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:
chef zero provisioner:
* Missing required value for `chef.nodes_path'.
みたいに出で、何が何だかよくわからん。
nodes_path ディレクトリなんて生成されないし。
ごく単純化したVagrantfileとシェルスクリプトの例
すでにディレクトリとVagrantfileは存在しているとする。
Vagrantfileの作成は、vagrant init -m
のようにコメント抜きでやってもいいかも。
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-6.7"
# 設定をよみこみ
config.vm.provision :shell, :path => "provision/hello.sh"
end
boxの指定と読み込むShellScriptの指定だけの、ごく単純な設定記述です。
#!/bin/sh
echo 'hello world!!'
ShellScriptファイルなので、#!/bin/sh
などの、シェル指定を忘れずに。
プロビジョニングをしてみる
やってることは コメント表示だけですが・・・。
注:対象のVagramt仮想環境が動いている、もしくはvagrant up --provision
(仮想環境を用意しなさい。プロビジョンもしなさい)としてやる必要があり。
vagrant 環境がupしていない状態でvagrant provision
としてもエラーが出ます。
$ vagrant provision
==> default: VM is not currently running. Please, first bring it up with `vagrant up` then run this command.
今回は、仮想環境がupしていない環境からupと同時にプロビジョンを行うケースを試します。
$ vagrant up --provision
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'bento/centos-6.7' is up to date...
(中略)
==> default: Mounting shared folders...
default: /vagrant => /Users/rojiuratech/Documents/vagrant/shell-provision
==> default: Running provisioner: shell...
default: Running: /var/folders/nq/yngpxc915nscw3tt7qlp9rp40000gn/T/vagrant-shell20160327-7456-1t4awpw.sh
==> default: hello world!!
Vagrantfileで指定したプロビジョン用のShellScriptに記載した内容が処理されています。
すでにvagrant up
した(仮想サーバが生成されている)状態のものをvagrant halt
(仮想サーバがシャットダウンされた)状態にし、
ただ単にvagrant up
とした場合
$ vagrant up
default: Mounting shared folders...
default: /vagrant => /Users/rojiuratech/Documents/vagrant/shell-provision
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Author And Source
この問題について((はじめの一歩)Vagrantで、ShellScriptをつかったプロビジョニングをしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/1stMinos/items/903b90cdd11d8fb3b975著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .