

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# レイヤーごとのオペレーティングシステムパッケージのインストール
<a name="per-layer-os-package-install"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

Chef 12 からは、カスタムレシピを使用して、さまざまなオペレーティングシステムを実行しているレイヤーでパッケージをインストールする必要があります。この方法により、パッケージのインストールについての最大の柔軟性とコントロールが得られます。

たとえば、Linux オペレーティングシステムの RedHat、Ubuntu、および Amazon バージョンを実行しているレイヤーに Apache をインストールするとします。RedHat および Amazon Linux 用の Apache パッケージは `httpd` と呼ばれますが、Ubuntu では `apache2` と呼ばれます。

パッケージの命名の違いに対応するために、次の例のレシピで、次のような構文を使用できます。レシピは各オペレーティングシステムに対して適切な Apache パッケージをインストールします。この例は、[Chef のドキュメント](https://docs.chef.io/)に基づいています。

```
package "Install Apache" do
   case node[:platform]
      when "redhat", "amazon"
         package_name "httpd"
      when "ubuntu"
         package_name "apache2"
   end
end
```

`package` リソースを使用してパッケージを管理する方法の詳細については、Chef のドキュメントの[パッケージ](https://docs.chef.io/resource_package.html)のページを参照してください。

または、同じ作業をより簡単に達成する Chef レシピ DSL (ドメイン固有言語) の `value_for_platform` ヘルパーメソッドを使用できます。

```
package "Install Apache" do
   package_name value_for_platform(
      ["redhat", "amazon"] => { "default" => "httpd" },
      ["ubuntu"] => { "default" => "apache2" }
   )
end
```

`value_for_platform` ヘルパーメソッドの使用の詳細については、「[レシピ DSL について](https://docs.chef.io/dsl_recipe.html)」を参照してください。