ステップ 2.3: カスタムクックブックの実装 - AWS OpsWorks

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

ステップ 2.3: カスタムクックブックの実装

重要

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

スタックは、基本的にはインスタンスのコンテナですが、インスタンスを直接スタックに追加することはありません。それぞれ関連するインスタンスのグループを表すレイヤーを 1 つ以上追加し、そのレイヤーにインスタンスを追加します。

レイヤーは基本的に、 AWS OpsWorks スタックは を使用して、同じ設定の Amazon EC2インスタンスのセットを作成します。インスタンスは、オペレーティングシステムの基本バージョンから開始し、インスタンスのレイヤーはさまざまなタスクをインスタンスで実行して、次のような設計図を実装します。

  • ディレクトリとファイルの作成

  • ユーザーの管理

  • ソフトウェアのインストールと設定

  • サーバーの起動または停止

  • アプリケーションコードおよび関連ファイルのデプロイ

レイヤーは、[Chef recipes] (シェフのレシピ) (略してレシピ)を実行してインスタンスに対してタスクを実行します。recipe は、Chef のドメイン固有の言語 (DSL) を使用してインスタンスの最終状態を記述する Ruby アプリケーションです。で AWS OpsWorks スタックでは、各レシピは通常、レイヤーのライフサイクルイベント の 1 つに割り当てられます: セットアップ、設定、デプロイ、デプロイ解除、シャットダウン。インスタンスでライフサイクルイベントが発生すると、 AWS OpsWorks スタックはイベントのレシピを実行して、適切なタスクを実行します。たとえば、Setup イベントは、インスタンスの起動の完了後に発生します。 AWS OpsWorks スタックはその後、Setup レシピを実行します。それは通常、サーバーソフトウェアのインストールや設定、関連サービスの起動などのタスクを実行します。

AWS OpsWorks スタックは、標準タスクを実行する一連の組み込みレシピを各レイヤーに提供します。カスタムレシピを実装して追加タスクを実行し、レイヤーのライフサイクルイベントに割り当てることで、レイヤーの機能を拡張できます。Windows スタックは、いくつかの基本タスクのみ実行する最小限のレシピセットを持つカスタムレイヤーをサポートします。Windows インスタンスに機能を追加するには、ソフトウェアのインストール、アプリケーションのデプロイなどを行うカスタムレシピを実装する必要があります。このトピックでは、IISインスタンスをサポートするシンプルなカスタムレイヤーを作成する方法について説明します。

クックブックとレシピの簡単な説明

レシピは、インスタンスの予想される状態の 1 つ以上の側面を定義します (存在するディレクトリ、インストールが必要なソフトウェアパッケージ、デプロイが必要なアプリケーションなど)。レシピは、クックブックにパッケージ化されており、通常は 1 つ以上の関連レシピと、設定ファイルを作成するためのテンプレートなどの関連するファイルが含まれています。

このトピックはレシピの非常に基本的な概要であり、シンプルなカスタムIISレイヤーをサポートするクックブックを実装する方法を示すのに十分です。クックブックのより全般的な説明については、「クックブックとレシピ」を参照してください。Windows 固有のトピックを含む、クックブックの実装方法の詳細なチュートリアルについては、「クックブック 101」を参照してください。

Chef レシピは技術的には Ruby アプリケーションですが、すべてではないにしても、ほとんどのコードは Chef にありますDSL。は、主に一連のリソース DSLで構成されており、インスタンスの状態の側面を宣言的に指定するために使用できます。例えば、directory リソースは、システムに追加するディレクトリを定義します。次の例は、指定されたユーザーに属する、フルコントロール権限を持つ C:\data ディレクトリを定義しており、親ディレクトリの権限を継承しません。

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Chef は、レシピを実行するとき、関連付けられたプロバイダ (インスタンスの状態の変更の詳細を処理する Ruby オブジェクト) にデータを渡すことにより各リソースを実行します。この場合、プロバイダは指定された設定を使用して新しいディレクトリを作成します。

カスタムIISレイヤーのカスタムクックブックは、次のタスクを実行する必要があります。

  • IIS 機能をインストールし、サービスを開始します。

    通常は、インスタンスの起動が終了した直後のセットアップ中にこのタスクを実行します。

  • この例の簡単なHTMLページであるアプリケーションをインスタンスにデプロイします。

    通常は、セットアップ時にこのタスクを実行します。ただし、アプリケーションは通常定期的に更新する必要があるため、インスタンスがオンラインのときに更新をデプロイする必要もあります。

1 つのレシピでこれらのすべてのタスクを実行する必要があります。ただし、セットアップタスクとデプロイタスクに別個のレシピを使用することをお勧めします。このようにして、セットアップコードを実行しなくても、いつでもアプリケーションの更新をデプロイすることができます。次に、カスタムIISレイヤーをサポートするクックブックを設定する方法について説明します。以降のトピックでは、レシピを実装する方法を示します。

開始するには、以下の手順を実行します。
  1. ワークステーション上の適切な場所に、iis-cookbook というディレクトリを作成します。

  2. iis-cookbook に、次のコンテンツを含む metadata.rb ファイルを追加します。

    name "iis-cookbook" version "0.1.0"

    この例では、最小限の metadata.rb を使用します。このファイルを使用する方法の詳細については、「metadata.rb」を参照してください。

  3. iis-cookbookrecipes ディレクトリを追加します。

    このディレクトリ (名前を recipes にする必要があります) には、クックブックのレシピが含まれています。

通常、クックブックには他のさまざまディレクトリを含めることができます。たとえば、レシピがテンプレートを使用して設定ファイルを作成する場合、テンプレートは通常 templates\default ディレクトリに配置されます。この例のクックブックは完全にレシピで構成されているため、他のディレクトリは必要ありません。また、この例では、1 つのクックブックを使用しますが、必要な数のクックブックを使用できます。複雑なプロジェクトでは、多くの場合、複数のクックブックを使用することが推奨されます。たとえば、セットアップタスクとデプロイタスクに別個のクックブックを使用することができます。クックブックのその他の例については、「クックブックとレシピ」を参照してください。

インストールして開始するレシピの実装 IIS

IIS は Windows 機能であり、Windows Server にインストールできるオプションのシステムコンポーネントのセットの 1 つです。recipe は、次のいずれかIISの方法でインストールできます。

注記

powershell_script は、特に Windows レシピに役立ちます。 PowerShell スクリプトまたはコマンドレットを実行することで、インスタンスでさまざまなタスクを実行できます。特に、Chef リソースによってサポートされていないタスクに役立ちます。

この例では、ウェブサーバー () をインストールして起動する PowerShell スクリプトを実行しますIIS。windows クックブックについては後で説明します。windows_feature を使用して をインストールする方法の例については、IIS「」を参照してくださいWindows 機能のインストール: IIS

以下の内容で install.rb という名前のレシピをクックブックの recipes ディレクトリに追加します。

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

レシピには、2 つのリソースが含まれています。

powershell_script

powershell_script は、指定された PowerShellスクリプトまたはコマンドレットを実行します。例では、以下の属性設定を使用します。

  • code – 実行する PowerShell コマンドレット。

    この例では、ウェブサーバー () Install-WindowsFeature をインストールする コマンドレットを実行しますIIS。通常、code 属性の行数に制限はないため、必要な数のコマンドレットを実行できます。

  • not-if – recipe がまだインストールされていない場合にのみインストールされるようにするガード属性。 IIS

    通常は、レシピを [idempotent] (べき等) にするため、同じタスクを複数回実行して時間を無駄にすることがありません。

各リソースには、プロバイダが実行するアクションを指定するアクションがあります。この例には明示的なアクションがないため、プロバイダーは指定された PowerShell スクリプトを実行するデフォルトの:runアクションを実行します。詳細については、「Windows PowerShell スクリプトの実行」を参照してください。

service

この場合、 はサービスであるウェブサーバーIISサービス (W3SVC) serviceを管理します。この例では、デフォルトの属性を使用し、 を起動して有効に:enableする :startと の 2 つのアクションを指定しますIIS。

注記

などのパッケージインストーラーを使用するソフトウェアをインストールする場合はMSI、 windows_packageリソースを使用できます。詳細については、「パッケージのインストール」を参照してください。

カスタムクックブックの有効化

AWS OpsWorks スタックは、各インスタンスのローカルキャッシュからレシピを実行します。カスタムレシピを実行するには、以下を実行する必要があります。

  • リモートリポジトリにクックブックを保存します。

    AWS OpsWorks スタックは、このリポジトリから各インスタンスのローカルキャッシュにクックブックをダウンロードします。

  • カスタムクックブックが有効になるようにスタックを編集します。

    カスタムクックブックはデフォルトで無効になっているため、スタックのカスタムクックブックを有効にし、リポジトリURLと関連情報を提供する必要があります。

AWS OpsWorks スタックはカスタムクックブックの S3 アーカイブと Git リポジトリをサポートします。この例では S3 アーカイブを使用します。詳細については、「クックブックリポジトリ」を参照してください。

S3 アーカイブを使用するには
  1. .zip ディレクトリの iis-cookbook アーカイブを作成します。

    AWS OpsWorks スタックは、Windows スタックの .tgz (gzip 圧縮 tar) アーカイブもサポートしています。

  2. アーカイブを米国西部 (カルフォルニア北部) リージョンの S3 バケットにアップロードし、ファイルを公開します。プライベート S3 アーカイブを使用することもできますが、この例ではパブリックアーカイブで十分であり、作業がいくらかシンプルになります。

    1. にサインインする AWS Management Console で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

    2. us-west-1 内にバケットがまだ存在しない場合は、[Create Bucket] (バケットを作成する) を選択して、バケットを米国西部 (カリフォルニア北部)リージョン内に作成します。

    3. バケットリストの中からファイルをアップロードしたいバケットの名前を選択し、[Upload] を選択します。

    4. [Add Files] を選択します。

    5. アップロードするアーカイブを選択し、[Open] を選択します。

    6. [Upload - Select Files and Folders] ダイアログの下部で、[Set Details] を選択します。

    7. [Set Details] ダイアログの下部で、[Set Permissions] を選択します。

    8. [Set Permissions] ダイアログで、[Make everything public] を選択します。

    9. [Set Permissions] ダイアログの下部で、[Start Upload] を選択します。アップロードが終了すると、iis-cookbook.zip ファイルがバケット内に表示されます。

    10. バケットを選択し、選択したバケットの [Properties] タブを選択します。リンク の横にあるアーカイブファイルの を記録URLして後で使用します。

    Amazon S3 バケットへのファイルのアップロードの詳細については、「Amazon S3 Console User Guide」(Amazon S3 コンソールユーザーガイド) で「How Do I Upload Files and Folders to an S3 Bucket? (S3 バケットにファイルとフォルダをアップロードする方法) を参照してください。

重要

ここまでは、ウォークスルーには少し時間しかかかりません。 AWS OpsWorks スタックサービス自体は無料です。ただし、Amazon S3 ストレージなど、使用するすべてのAWSリソースに対して料金を支払う必要があります。アーカイブをアップロードするとすぐに料金が発生し始めます。詳細については、「 のAWS料金」を参照してください。

スタックのカスタムクックブックを有効にするには
  1. 左 AWS OpsWorks スタックコンソールで、ナビゲーションペインでスタックを選択し、右上のスタック設定を選択します。

  2. [Settings] ページの右上にある [Edit] を選択します。

  3. [Settings] ページで、[Use custom Chef cookbooks] を [Yes] に設定し、次の情報を入力します。

    • [リポジトリタイプ] - [S3 Archive] (S3 アーカイブ)

    • リポジトリ URL – 前に記録したURLクックブックアーカイブファイルの S3。

  4. [Save] を選択してスタック設定を更新します。

AWS OpsWorks スタックは、すべての新しいインスタンスにカスタムクックブックをインストールします。次の点に注意してください。 AWS OpsWorks スタックは、オンラインインスタンスにカスタムクックブックを自動的にインストールまたは更新しません。これは、後で説明するように、手動で行うことができます。