概要
DigitalOceanを使うときに、Vagrantfileを下記のように編集するかと思います。
[ruby]
Vagrant.configure(‘2’) do |config|
config.vm.provider :digital_ocean do |provider, override|
override.ssh.private_key_path = ENV["DIGITAL_SSH_KEY"]
override.vm.box = ‘digital_ocean’
override.vm.box_url = ‘digital_ocean_box’
provider.client_id = ENV["DIGITAL_CLIENT"]
provider.api_key = ENV["DIGITAL_API"]
provider.image = ‘CentOS 6.4 x64’
provider.region = ‘New York 2’
provider.size = ‘512MB’
provider.ca_path = ENV["SSL_CERT_FILE"]
provider.ssh_key_name = ENV["DIGITAL_SSH_KEYNAME"]
end
end
[/ruby]
DigitalOceanを使うたびに毎回毎回同じ事を書くのは、非常に面倒だってことで、
今回は、Vagrantfileを読み込む順番を使って対応したいと思います。
(DigitalOceanに対応したVagrantfileをローカル、gitなどに作っておき、必要なときに持ってくればいいんじゃないかとか)げふん、げふん‥
Vagrantfileを読み込む順番とは?
上記ドキュメントに詳しく書かれていますが、以下のように読み込まれます。
*どこにVagrantfileが存在するのか、私の環境ですが記述しておきます
- デフォルトのVagrantfile
(/Applications/Vagrant/embedded/gems/gems/vagrant-1.4.3/templates/commands/init/Vagrantfile.rb)
- 使用するboxに含まれるVagrantfile
(/Users/username/.vagrant.d/boxes/boxname/virtualbox/Vagrantfile)
- VagrantのホームディレクトリにあるVagrantfile
(デフォルトは ~/.vagrant.d 以下のVagrantfile)
- プロジェクトディレクトリにあるVagrantfile
(vagrant init で作成されたVagrantfile)
同じ設定があるときは、あとから読み込まれたファイルの内容が優先されます。
今回は3番目のvagrant.dディレクトリに、DigitalOceanの設定が書かれたVagrantfileを配置します。
配置&実行
[bash]
[localhost@localhost projectdir] ls ~/.vagrant.d
Vagrantfile ← 概要で表示したVagrantfileを配置済み
[localhost@localhost projectdir] vagrant init
[/bash]
このとき init コマンドで作成されるVagrantfileにはDigitalOceanの設定は書かれていません。
init コマンドで作成した Vagrantfile を少し編集します。
[bash]
# Vagrantfile API/syntax version. Don’t touch unless you know what you’re doing!
VAGRANTFILE_API_VERSION = "2" ← この行を
# VAGRANTFILE_API_VERSION = "2" ← このようにコメントアウト
[/bash]
コメントアウト忘れると warning が出力されますが、正常に実行は出来ます。
では起動してみましょう。
[bash]
[localhost@localhost projectdir] vagrant up –provider=digital_ocean
Bringing machine ‘default’ up with ‘digital_ocean’ provider…
[default] Using existing SSH key: digital
[default] Creating a new droplet…
[default] Assigned IP address: hoge.hoge.hoge.hoge
[default] Modifying sudoers file to remove tty requirement…
[default] Rsyncing folder: /Users/username/projectdir/ => /vagrant…
[/bash]
起動出来ました。
ログインしてみます。
[bash]
[localhost@localhost projectdir] vagrant ssh
[root@default ~]#
[/bash]
まとめ
このように面倒な設定などはある程度テンプレートとして用意することで、Vagrantをより使いやすくしようとの事でした。
DigitalOceanの設定を別に書く事で、Vagrantfileを共有するときなど便利なのかなと思ったり思わなかったり。
私の場合、使用するOSやメモリーまでテンプレートとして含めてしまっていますが、init コマンドで作成したVagrantfileで設定の上書きが可能です。
init コマンドで作成されるVagrantfileのテンプレートを編集すればいいんじゃないかとも思ったのですが、最新版をインストールするたび編集する手間が生じるのがあります。
そもそも Vagrant や vagrant-digitalocean が大きく変更されたら元も子もないのでは‥と思っていますがそれはそれで‥