2

過去に、Vagrant を使用して「ローカル」開発インスタンスをデプロイする試みをいくつか中止しましたが、時間をかけて学習曲線を完全に理解することはできませんでした。もう一度試してみましたが、Opscode クックブック (apache2) をロードすることはできますが、DocumentRootが を指していないため、そのままでは機能しません/vagrant

私はそれを理解し、予想外ではありませんが、これをすべてまとめる方法がわかりません.Vagrantのドキュメントは、当然のことながら、あまり詳細には触れていません. 一方、 Opscode のクックブックのreadmeには、非常に詳細な情報が記載されているため、初心者の私には理解できません。

これが私が今持っている非常にシンプルなスニペットです:

config.vm.provision :chef_solo do |chef|
  chef.cookbooks_path = "cookbooks"
  chef.add_recipe "apache2"

  # You may also specify custom JSON attributes:
  # chef.json = { :mysql_password => "foo" }
end

そこにはあまりありません、私は知っています。ある意味で、chef.jsonコンポーネントが自分のやりたいことに影響していることはわかっていますが、その方法はわかりません。DocumentRootインストールされている Apache2 インスタンスをどのように構成するかの Vagrant 中心の例を誰かが提供できますか、または私に指摘できますか? 例があれば、必要なものをすべて組み合わせる方法がわかると思います。

また、好奇心から、なぜchef.add_recipeApache2クックブックをロードするため呼び出しているのですか? それとも、構文を誤解していますか?

ご協力いただきありがとうございます。

4

1 に答える 1

1

私は apache2 クックブックを詳しく見ていませんが、そのクックブックに付属しているデフォルト サイト テンプレートは /var/www を指していると思います。これを考えると、2 つのオプションがあると思います。1) apache2 クックブックに付属のサイト リソースを使用して、新しいサイトを作成します。2) vagrant を介して Web ルートを /var/www にマウントします。どのアプローチがちょっとあなたの目標に依存します。Web サイトをテストするだけの場合は、2 をお勧めします。これを行うには、vagrant 構成に次のようなものを追加します。

config.vm.share_folder "web", "/var/www", "~/src/www"

ここで、最初の引数は共有の任意の ID、2 番目はターゲット ディレクトリ (この場合は /var/www、Apache 構成で指定されているため)、3 番目は共有しているローカル パスです。 .

NB Virtualbox はシンボリック リンクには適していないため、共有にシンボリック リンクがある場合は、これを追加する必要があります。

config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/graph", "1"]

これにより、シンボリックリンクが機能するようになります。

Chef の学習に興味がある場合は、アプローチ #1 を使用できます。これには、独自のクックブックを作成し、Apache サイト定義と組み合わせて適切な構成ファイルを生成できるテンプレートを作成する必要があります。これがあなたの目標である場合は、この回答を拡張して、これを実装する方法についても詳しく説明できます。

HTH。

于 2012-07-17T00:41:37.840 に答える