/vagrant/css
CSSファイルを生成し、それをWebルートディレクトリ(私の場合はVM上)のどこかに置くChef(ソロ)レシピがあります。問題は、レシピが VM 上の vagrant 同期ディレクトリへの絶対パスを知る必要があることです。これは、あるフォルダーでVagrantfile
あり、デフォルトで/vagrant
は VM 内にマップされます。
私はそのパスを設定する方法を知っています:
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/synced/dir/on/vm"
end
しかし、問題は、それをレシピにどのように知らせるかです/synced/dir/on/vm
。
現在、私はそれを使用しています:
Vagrant.configure("2") do |config|
config.vm.provision :chef_solo do |chef|
chef.json = {
"base_directory" => "/vagrant" # THIS IS IT
}
end
end
レシピ コード内で使用できますnode["base_directory"]
が、これには欠点があります。複数のレシピを記述する場合node["base_directory"]
、すべてのレシピで使用するのは不便です。パスをハードコーディングする方がはるかに優れていますがchef.json
、すべてのレシピで同じキーを使用する必要があります。
さらに、レシピを共有したい場合は、ユーザーにその"base_directory" => "/vagrant"
キーと値のペアをVagrantfile
.
レシピ コードで VM 上のこの同期されたディレクトリ パスを取得する API メソッドはありますか? または、より一般的に: Chef レシピから Vagrant 固有のプロパティを取得する方法はありますか?
私は Vagrant のドキュメントを精査しましたが、そのトピックに関するページは 1 つだけのようで、Vagrant に固有のものであるため、Chef のドキュメントにも関連する情報はありません。