2

環境:

  • CentOS 6
  • シェフ 10

community.opscode から apache2 クックブックをダウンロード# chef-client し、クライアント ノードで実行しました。インストールとサービスの開始は成功しました。

[2013-03-12T15:30:00+09:00] INFO: Processing package[apache2] action install(apache2::default line 20)

cookbooks/apache2/recipes/default.rb にアクセスするとaction:install 、Ruby を初めて使用するという行がないため、インストールを担当するコード行がどこにあるのかわかりません。

さらに、apache2 がインストールされている場合、レシピ内に何らかのインストール パッケージが含まれていますか? たとえば、.rpm パッケージ?はいの場合、完全なパスは何ですか?

前もって感謝します!

編集:

パッケージが

package "apache2" do
   package_name node['apache']['package']
end

をデフォルトとして持ってaction :installいます。しかし、やはり、何をインストールするかはわかりません。インストーラー パッケージ自体はどこにありますか、それともクックブックはインストーラーと同じですか?

4

2 に答える 2

7

ここでお話しすることがいくつかあります。まず、正規のリファレンス ドキュメントは、パッケージ リソースのChef Docsページにあります。

Chef レシピは Ruby DSL であるため、それが何を意味するのかを調べてみましょう。レシピで定義された各リソースにはタイプがあり、1 つ以上のプロバイダーを持つことができます。リソースは、そのリソースの管理方法を処理する基礎となるもの (プロバイダー) への宣言型インターフェイスです。Chef は、ノードのプラットフォームに基づいてプロバイダーを自動的に選択します。パッケージの場合、Chef には yum、apt、solaris、macports などのプロバイダーがあります。詳細については、ドキュメントを参照してください。

レシピでリソースを宣言する場合、Ruby 用語では、文字列とオプションでブロックの 2 つの引数を取ります。文字列はリソースの「名前」です。ブロック内の各属性パラメータにはデフォルト オプションが含まれる場合があります。これは、さまざまなコア Chef リソースおよびプロバイダのドキュメント サイトに記載されています。この名前は、「name_attribute」と呼ばれる属性の 1 つにも使用されます。この例の場合:

package "apache2" do
  package_name node['apache']['package']
end

リソースの名前は、すべての意図と目的で「apache2」です。ただし、パッケージの name 属性は ですpackage_name。この場合、パッケージ名はnode['apache']['package']クックブックのattributes/default.rbファイルに設定されている属性から取得されます。これは、2 つのディストリビューション/OS がパッケージの呼び方について合意できないため (Debian では apache2、RHEL では httpd)、プラットフォーム固有です。

リソースの特別な属性はアクションです。これは、リソースがどのような状態であるべきかを基になるプロバイダーに伝えます。デフォルトでは、Chef はリソースに対して最も積極的なアクションを実行します。基盤となるシステム リソースへの宣言型インターフェイスとして、Chef はそれが最も正気で驚くべきことではないと考えています。パッケージの場合、Chef はデフォルトでパッケージをインストールします。

したがって、この種のレシピを書く際の概要として:

  1. " " という名前のパッケージを管理するよう Chef に指示しましたapache2
  2. 管理するパッケージの名前は、実際には属性 `node['apache']['package'] からのものであることを Chef に伝えました。
  3. 特定のアクションがない場合、Chef はデフォルトinstallでパッケージを実行します。
  4. Chef は、ノードのプラットフォーム用にデフォルトで設定されている基盤となるパッケージ マネージャーを使用して、パッケージをインストールします。Debian/Ubuntu システムでは、apt-get install apache2. RHEL/CentOS などのシステムでは、yum install httpd.
于 2013-03-12T16:38:20.193 に答える
0

デフォルトCentOSのパッケージ マネージャーではyum、 経由でインストールされyumます。シェフ パッケージ リソース ドキュメント プロバイダーのセクションを参照してください。

于 2013-03-12T10:47:45.993 に答える