ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

Vagrantのプロビジョニング

Vagrantfileの設定が通るようになったので、ドットインストールの続きを進めた。この記事の続き。

プロジェクトのセットアップ

別のディレクトリ(今回はmyCentOSVM2)を作成して、プロジェクトのセットアップ(vagrant init)を行なう。

$ mkdir myCentOSVM2
$ cd myCentOSVM2
$ vagrant init centos64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileを編集する。

$ vi Vagrantfile 

インラインでシェルを使用する場合

provisioner実行時にecho hello worldをゲストマシン内で実行させるには、Vagrantfileにconfig.vm.provision :shell, :inline => "echo hello world”を追加する。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box = "centos64"
    config.vm.provision :shell, :inline => "echo hello world
(省略)
end

hello worldが表示される。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
(省略)
==> default: hello world

外部のシェルスクリプトを使用する場合

2行以上の設定を記載する場合、ファイル(今回はprovision.sh)を作成し、config.vm.provision :shell, :path => "provision.sh"をVagrantfileに設定する。

provision.shの内容。

sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on

下記のように、ファイル名を指定する方法はルートVagrantfileへの相対パスだが、絶対パスを指定することも可能。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box = "centos64"
    config.vm.provision :shell, :path => “provision.sh"
(省略)
end

仮想マシンが立ち上がっている場合はvagrant upせずに、vagrant provisionのみ実行する。

$ vagrant up
(省略)
$ vagrant provision
==> default: Running provisioner: shell...
    default: Running: /var/folders/23/1h_b5tjs4kv4y0yv53jcrn_c0000gp/T/vagrant-shell20140929-75881-4pff3h.sh
(省略)

vagrant ssh後、HTTPサーバの起動が確認できた。

$ vagrant ssh
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ sudo service httpd status
httpd (pid  2164) is running...

参考