2

/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 のドキュメントにも関連する情報はありません。

4

1 に答える 1