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...