

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

# 例 1: パッケージのインストール
<a name="cookbooks-101-basics-packages"></a>

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

パッケージのインストールはレシピのもっとも一般的な用途の 1 つで、パッケージによっては非常にシンプルにできます。たとえば、以下のレシピは Linux システムに Git をインストールします。

```
package 'git' do
  action :install
end
```

[`package` リソース](https://docs.chef.io/chef/resources.html#package)はパッケージのインストールを処理します。この例では、属性を指定する必要はありません。リソース名が `package_name` 属性のデフォルト値であり、これでパッケージを識別します。`install` アクションがプロバイダーにパッケージをインストールするように指示します。`install` を省略することでコードをよりシンプルにできます。これは `package` リソースのデフォルトアクションです。レシピを実行すると、Chef は適切なプロバイダーを使用してパッケージをインストールします。例として使用する Ubuntu システムでは、プロバイダーは `apt-get` を呼び出して Git をインストールします。

**注記**  
Windows システムにソフトウェアをインストールするには、多少異なる手順が必要です。詳細については、「[Windows ソフトウェアのインストール](cookbooks-101-opsworks-install-software.md)」を参照してください。

Test Kitchen を使用して Vagrant でこのレシピを実行するには、まずクックブックを設定し Test Kitchen を初期化して設定する必要があります。以下にあげるのは Linux システム用ですが、Windows および Macintosh システムでも基本的に手順は同様です。ターミナルウィンドウを開くことから始めます。この章の例ではすべてコマンドラインツールを使用します。

**クックブックを準備するには**

1. ホームディレクトリで、`opsworks_cookbooks` という名前のサブディレクトリを作成します。この章でのクックブックはすべてここに置きます。次にこのクックブック用のサブディレクトリ `installpkg` を作成し、そのディレクトリに移動します。

1. `installpkg` で、以下のコードを含む `metadata.rb` というファイルを作成します。

   ```
   name "installpkg"
   version "0.1.0"
   ```

   この章の例ではわかりやすいようにクックブックの名前とバージョンのみを指定しますが、`metadata.rb`には幅広いクックブックのメタデータを含めることができます。詳細については、「[クックブックのメタデータについて](http://docs.chef.io/cookbook_repo.html#about-cookbook-metadata)」を参照してください。
**注記**  
必ず Test Kitchen を初期化する前に `metadata.rb` を作成してください。デフォルトの設定ファイルを作成するためにこのデータを使用します。

1. `installpkg` で `kitchen init` を実行し、Test Kitchen を初期化してデフォルトの Vagrant ドライバをインストールします。

1. `kitchen init` コマンドは、`installpkg` という名前の `.kitchen.yml` に YAML 設定ファイルを作成します。お好きなテキストエディタで ファイルを開きます。`.kitchen.yml` には、レシピを実行するシステムを指定する `platforms` セクションが含まれています。Test Kitchen はインスタンスを作成して、各プラットフォームで指定されたレシピを実行します。
**注記**  
デフォルトでは、Test Kitchen は一度に 1 つのプラットフォームでレシピを実行します。インスタンスを作成するいずれかのコマンドに `-p` 引数を追加した場合、Test Kitchen はそれぞれのプラットフォームで平行してレシピを実行します。

   この例では単一のプラットフォームが有効です。したがって `.kitchen.yml` を編集して `centos-6.4` プラットフォームを削除します。`.kitchen.yml` ファイルは以下のようになります。

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: default
       run_list:
         - recipe[installpkg::default]
       attributes:
   ```

   Test Kitchen は `.kitchen.yml` の実行リストにあるレシピのみを実行します。レシピは `[cookbook_name::recipe_name]` 形式を使用して識別します。*recipe\$1name* は `.rb` 拡張子を省略します。初期状態で、`.kitchen.yml` 実行リストにはクックブックのデフォルトのレシピである `installpkg::default` が含まれています。これはこれから実行するレシピです。実行リストを変更する必要はありません。

1. `installpkg` という名前の `recipes` のサブディレクトリを作成します。

   クックブックにレシピが含まれる場合 (たいていは含まれますが)、`recipes` サブディレクトリに置かれている必要があります。

これで、クックブックにレシピを追加し、Test Kitchen を使用してインスタンスで実行できるようになりました。

**レシピを実行するには**

1. セクションの冒頭にある Git インストールコード例を含む `default.rb` という名前のファイルを作成し、サブディレクトリ `recipes` に保存します。

1. `installpkg` ディレクトリで `kitchen converge` を実行します。このコマンドはVagrantで新しいUbuntuインスタンスを起動し、クックブックをインスタンスにコピーし、`.kitchen.yml`の実行リストにあるレシピを実行するためにChefの実行を開始します。

1. レシピが成功したことを確認するために、`kitchen login` を実行してインスタンスへの SSH 接続を開きます。次に `git --version` を実行して、Git が正しくインストールされたことを確認します。ワークステーションに戻るには、`exit` を実行します。

1. 完了したら、`kitchen destroy` を実行してインスタンスをシャットダウンします。以下の例では、別のクックブックを使用します。

この例は手始めには適していますが、非常にシンプルです。インストールがより複雑なパッケージもあります。以下の一部またはすべてを実行しなければならない場合もあります。
+ ユーザーを作成して設定します。
+ データやログなどのために 1 つ以上のディレクトリを作成します。
+ 1 つ以上の設定ファイルをインストールします。
+ さまざまなオペレーティングシステムに対して異なるパッケージ名や属性値を指定します。
+ サービスを開始し、必要に応じて再起動します。

以下の例でこれらの問題を処理する方法を説明するとともに、役に立つ操作をいくつかご紹介します。