例 1: パッケージのインストール - AWS OpsWorks

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

例 1: パッケージのインストール

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

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

package 'git' do action :install end

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

注記

Windows システムにソフトウェアをインストールするには、多少異なる手順が必要です。詳細については、「Windows ソフトウェアのインストール」を参照してください。

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

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

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

    name "installpkg" version "0.1.0"

    この章の例ではわかりやすいようにクックブックの名前とバージョンのみを指定しますが、metadata.rbには幅広いクックブックのメタデータを含めることができます。詳細については、「クックブックのメタデータについて」を参照してください。

    注記

    必ず Test Kitchen を初期化する前に metadata.rb を作成してください。デフォルトの設定ファイルを作成するためにこのデータを使用します。

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

  4. 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_name.rb 拡張子を省略します。初期状態で、.kitchen.yml 実行リストにはクックブックのデフォルトのレシピである installpkg::default が含まれています。これはこれから実行するレシピです。実行リストを変更する必要はありません。

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

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

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

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

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

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

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

この例は手始めには適していますが、非常にシンプルです。インストールがより複雑なパッケージもあります。以下の一部またはすべてを実行しなければならない場合もあります。

  • ユーザーを作成して設定します。

  • データやログなどのために 1 つ以上のディレクトリを作成します。

  • 1 つ以上の設定ファイルをインストールします。

  • さまざまなオペレーティングシステムに対して異なるパッケージ名や属性値を指定します。

  • サービスを開始し、必要に応じて再起動します。

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