/vagrant/cssCSSファイルを生成し、それを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 のドキュメントにも関連する情報はありません。