翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2.3: カスタムクックブックの実装
重要
- AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 にお問い合わせください。 AWS Support でのチーム AWS re:Post
スタックは、基本的にはインスタンスのコンテナですが、インスタンスを直接スタックに追加することはありません。それぞれ関連するインスタンスのグループを表すレイヤーを 1 つ以上追加し、そのレイヤーにインスタンスを追加します。
レイヤーは基本的に、 AWS OpsWorks スタックは を使用して、同じ設定の Amazon EC2インスタンスのセットを作成します。インスタンスは、オペレーティングシステムの基本バージョンから開始し、インスタンスのレイヤーはさまざまなタスクをインスタンスで実行して、次のような設計図を実装します。
-
ディレクトリとファイルの作成
-
ユーザーの管理
-
ソフトウェアのインストールと設定
-
サーバーの起動または停止
-
アプリケーションコードおよび関連ファイルのデプロイ
レイヤーは、[Chef recipes]
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レイヤーをサポートするクックブックを設定する方法について説明します。以降のトピックでは、レシピを実装する方法を示します。
開始するには、以下の手順を実行します。
-
ワークステーション上の適切な場所に、
iis-cookbook
というディレクトリを作成します。 -
iis-cookbook
に、次のコンテンツを含むmetadata.rb
ファイルを追加します。name "iis-cookbook" version "0.1.0"
この例では、最小限の
metadata.rb
を使用します。このファイルを使用する方法の詳細については、「metadata.rb」を参照してください。 -
iis-cookbook
にrecipes
ディレクトリを追加します。このディレクトリ (名前を
recipes
にする必要があります) には、クックブックのレシピが含まれています。
通常、クックブックには他のさまざまディレクトリを含めることができます。たとえば、レシピがテンプレートを使用して設定ファイルを作成する場合、テンプレートは通常 templates\default
ディレクトリに配置されます。この例のクックブックは完全にレシピで構成されているため、他のディレクトリは必要ありません。また、この例では、1 つのクックブックを使用しますが、必要な数のクックブックを使用できます。複雑なプロジェクトでは、多くの場合、複数のクックブックを使用することが推奨されます。たとえば、セットアップタスクとデプロイタスクに別個のクックブックを使用することができます。クックブックのその他の例については、「クックブックとレシピ」を参照してください。
インストールして開始するレシピの実装 IIS
IIS は Windows 機能であり、Windows Server にインストールできるオプションのシステムコンポーネントのセットの 1 つです。recipe は、次のいずれかIISの方法でインストールできます。
-
powershell_script
リソースお使用して Install-WindowsFeature
コマンドレットを実行する。 -
Chef Windows クックブック
の windows_feature
リソースを使用する。windows
クックブックには、プロバイダーが Deployment Image Servicing and Management ()を使用して、機能のインストールを含む Windows インスタンスでさまざまなタスクを実行する一連のリソースが含まれています。DISM
注記
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 アーカイブを使用するには
-
.zip
ディレクトリのiis-cookbook
アーカイブを作成します。AWS OpsWorks スタックは、Windows スタックの
.tgz
(gzip 圧縮 tar) アーカイブもサポートしています。 -
アーカイブを米国西部 (カルフォルニア北部) リージョンの S3 バケットにアップロードし、ファイルを公開します。プライベート S3 アーカイブを使用することもできますが、この例ではパブリックアーカイブで十分であり、作業がいくらかシンプルになります。
にサインインする AWS Management Console で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/
。 -
us-west-1
内にバケットがまだ存在しない場合は、[Create Bucket] (バケットを作成する) を選択して、バケットを米国西部 (カリフォルニア北部)リージョン内に作成します。 -
バケットリストの中からファイルをアップロードしたいバケットの名前を選択し、[Upload] を選択します。
-
[Add Files] を選択します。
-
アップロードするアーカイブを選択し、[Open] を選択します。
-
[Upload - Select Files and Folders] ダイアログの下部で、[Set Details] を選択します。
-
[Set Details] ダイアログの下部で、[Set Permissions] を選択します。
-
[Set Permissions] ダイアログで、[Make everything public] を選択します。
-
[Set Permissions] ダイアログの下部で、[Start Upload] を選択します。アップロードが終了すると、
iis-cookbook.zip
ファイルがバケット内に表示されます。 -
バケットを選択し、選択したバケットの [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料金
スタックのカスタムクックブックを有効にするには
-
左 AWS OpsWorks スタックコンソールで、ナビゲーションペインでスタックを選択し、右上のスタック設定を選択します。
-
[Settings] ページの右上にある [Edit] を選択します。
-
[Settings] ページで、[Use custom Chef cookbooks] を [Yes] に設定し、次の情報を入力します。
-
[リポジトリタイプ] - [S3 Archive] (S3 アーカイブ)
-
リポジトリ URL – 前に記録したURLクックブックアーカイブファイルの S3。
-
-
[Save] を選択してスタック設定を更新します。
AWS OpsWorks スタックは、すべての新しいインスタンスにカスタムクックブックをインストールします。次の点に注意してください。 AWS OpsWorks スタックは、オンラインインスタンスにカスタムクックブックを自動的にインストールまたは更新しません。これは、後で説明するように、手動で行うことができます。