Windows インスタンスでのレシピの実行 - AWS OpsWorks

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

Windows インスタンスでのレシピの実行

重要

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

このトピックでは、基本的に「Linux インスタンスでのレシピの実行」の簡略版であり、Windows スタックでレシピを実行する方法を示しています。最初に「Linux インスタンスでのレシピの実行」を参照することをお勧めします。より詳細に説明されており、内容の大部分がいずれかのタイプのオペレーティングシステムに関連しているためです。

AWS OpsWorks スタックの Linux インスタンスでレシピを実行する方法の詳細については、「Linux インスタンスでのレシピの実行」を参照してください。

RDP アクセスの有効化

この操作の開始前に、セキュリティグループをまだ設定していない場合は、インスタンスへの RDP アクセスを許可するインバウンドルールを使用して、セキュリティグループを設定する必要があります。スタックを作成するとき、そのグループが必要になります。

リージョン内で最初のスタックを作成すると、AWS OpsWorks スタックによって一連のセキュリティグループが作成されます。それらのグループには AWS-OpsWorks-RDP-Server のような名前が付けられており、RDP アクセスを許可するために AWS OpsWorks スタックによってすべての Windows インスタンスにアタッチされます。ただし、デフォルトでは、このセキュリティグループにはルールが存在しないため、インスタンスへの RDP アクセスを許可するインバウンドルールを追加する必要があります。

RDP アクセスを許可するには
  1. Amazon EC2 console (Amazon EC2 コンソール) を開き、スタックのリージョンに設定して、ナビゲーションペインから [Security Groups] (セキュリティーグループ) を選択します。

  2. AWS-OpsWorks-RDP-Serverを選択しインバウンドタブを選択し、編集を選択します

  3. 以下の設定でルールを追加します。

    • Type (タイプ) - RDP

    • Source (ソース) – 許可される送信元 IP アドレス。

      通常は、自身の IP アドレスまたは指定した IP アドレス範囲(社内の IP アドレス範囲が一般的)へのインバウンド RDP リクエストを許可します。

注記

後で説明するように、通常のユーザーに対して RDP アクセスを許可するようにユーザーアクセス権限を編集する必要があります。

詳細については、「RDP でのログイン」を参照してください。

レシピの作成と実行

以下に、この例のスタックを作成する方法を簡単に示します。詳細については、「新しいスタックを作成する」を参照してください。

Stack を作成する
  1. AWS OpsWorks スタックコンソールを開いて [Add Stack] を選択します。以下の設定を指定し、その他の設定はデフォルト値を受け入れて、[Add Stack] を選択します。

    • 名前 – WindowsRecipeTest

    • リージョン – 米国西部 (オレゴン)

      この例はいずれのリージョンでも動作しますが、チュートリアルでは米国西部 (オレゴン) を使用することをお勧めします。

    • Default operating system (デフォルトのオペレーティングシステム) – Microsoft Windows Server 2012 R2

  2. [Add a layer] を選択し、以下の設定を使用してスタックにカスタムレイヤーを追加します。

    • 名前 – RecipeTest

    • Short name (短縮名) – recipetest

  3. デフォルト設定でレイヤーに 24/7 インスタンスを追加し、 RecipeTest起動します。 24/7 インスタンスの手動による起動、停止、再起動

    AWS OpsWorks スタックによって AWS-OpsWorks-RDP-Server がこのインスタンスに自動的に割り当てられ、承認されたユーザーがログインできるようになります。

  4. [Permissions]、[Edit]、[SSH/RDP]、[sudo/admin] の順に選択します。通常のユーザーは、インスタンスにログインするために、AWS-OpsWorks-RDP-Server セキュリティグループに加えて、この権限が必要です。

    注記

    管理者としてログインすることもできますが、それには別の手順が必要です。詳細については、「RDP でのログイン」を参照してください。

インスタンスの起動中に (通常は数分かかります)、クックブックを作成できます。この例のレシピによってデータディレクトリが作成されます。これは基本的に「例 3: ディレクトリの作成」からのレシピであり、Windows 用に修正しています。

注記

AWS OpsWorks スタックの Windows インスタンス用にクックブックを実装する場合は、AWS OpsWorks スタックの Linux インスタンス用にクックブックを実装する場合とは多少異なるディレクトリ構造を使用します。詳細については、「クックブックリポジトリ」を参照してください。

クックブックをセットアップするには
  1. windowstest という名前のディレクトリを作成し、そのディレクトリに移動します。

  2. 以下の内容で metadata.rb ファイルを作成し、windowstest に保存します。

    name "windowstest" version "0.1.0"
  3. recipes 内に windowstest ディレクトリを作成します。

  4. 次のレシピで default.rb ファイルを作成し、recipes ディレクトリに保存します。

    Chef::Log.info("******Creating a data directory.******") directory 'C:\data' do rights :full_control, 'instance_name\username' inherits false action :create end

    [username] を自身のユーザー名に置き換えます。

  5. リポジトリへのクックブックの保存

    AWS OpsWorks スタックインスタンスにクックブックをインストールするには、クックブックをリポジトリに保存しておき、クックブックをインスタンスにダウンロードするために必要な情報を AWS OpsWorks スタックに指定する必要があります。S3 バケットまたは Git リポジトリにアーカイブファイルとして Windows のクックブックを保存できます。この例では、S3 バケットを使用しているため、windowstest ディレクトリの .zip アーカイブを作成する必要があります。クックブックリポジトリの詳細については、「クックブックリポジトリ」を参照してください。

  6. S3 バケットにアーカイブをアップロードし、アーカイブを公開して、アーカイブの URL を記録しておきます。プライベートアーカイブを使用することもできますが、この例ではパブリックアーカイブで十分であり、作業がいくらか簡単になります。

    Amazon S3 バケットに配信されるコンテンツには、カスタマーコンテンツが含まれている場合があります。機密データの削除の詳細については、「S3 バケットを空にする方法」または「S3 バケットを削除する方法」を参照してください。

これで、クックブックをインストールし、レシピを実行できるようになりました。

レシピを実行するには
  1. カスタムクックブックを有効にするようにスタックを編集し、以下の設定を指定します。

    • Repository type (リポジトリタイプ) – S3 Archive (アーカイブ)

    • Repository URL (リポジトリの URL) - 前の手順で記録したクックブックアーカイブ URL

    その他の設定ではデフォルト値を受け入れ、[Save] を選択してスタック設定を更新します。

  2. [Update Custom Cookbooks] スタックコマンドを実行します。カスタムクックブックの最新バージョンがスタックのインスタンス(オンラインインスタンスを含む)にインストールされます。以前のバージョンのクックブックがある場合は、このコマンドによって上書きされます。

  3. カスタムクックブックの更新が終了したら、実行するレシピwindowstest::default に設定してレシピの実行スタックコマンドを実行することで、レシピを実行します。このコマンドによって Chef 実行が開始され、レシピで構成される実行リストが渡されます。

レシピが正常に実行された後で、それを検証できます。

windowstest を検証するには
  1. Chef ログを調べます。opstest1 インスタンスの [Log] (ログ) 列で [show] (表示) を選択すると、ログが表示されます。下へスクロールすると、下部にログメッセージが表示されます。

    ... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
  2. Instances (インスタンス) を選択し、インスタンスの Actions (アクション) 列で [rdp] を選択し、適切な有効期限を持つ RDP パスワードを要求します。DNS 名、ユーザー名、パスワードをコピーします。Windows Remote Desktop Connection クライアントなどの RDP クライアントでその情報を使用して、インスタンスにログインし、c:\data があることを確認できます。詳細については、「RDP でのログイン」を参照してください。

注記

レシピが正しく実行されない場合、トラブルシューティングのヒントについては「レシピのトラブルシューティングと修正」を参照してください。それらのヒントのほとんどは Windows インスタンスにも当てはまります。インスタンスのレシピの編集による修正内容をテストする場合は、C:\chef\cookbooks ディレクトリで目的のクックブックを探します。このディレクトリに、AWS OpsWorks スタックによってカスタムクックブックがインストールされています。

レシピの自動実行

[Execute Recipes] コマンドは、カスタムレシピをテストするための便利な方法であるため、ここでの例のほとんどで使用しています。ただし実際のところ、レシピは通常、インスタンスのライフサイクルでの標準のポイント (インスタンスの起動完了後やアプリケーションのデプロイ時など) で実行する必要があります。AWS OpsWorksスタックでは、各レイヤーの一連の lifecycle events (ライフサイクルイベント) (セットアップ、構成、デプロイ、アンデプロイ、シャットダウン) をサポートすることで、インスタンスでのレシピの実行を簡略化します。レシピを適切なライフサイクルイベントに割り当てることで、そのレシピが AWS OpsWorks スタックによってレイヤーのインスタンスで自動的に実行されるようにできます。

通常は、インスタンスの起動が完了したら (Setup イベント)、すぐにディレクトリを作成します。以下に示しているのは、前の例で作成した同じスタックを使用して、セットアップ時にサンプルレシピを実行する方法です。他のイベントにも同じ手順を使用できます。

セットアップ時にレシピを自動的に実行するには
  1. ナビゲーションペインでレイヤーを選択し、 RecipeTest レイヤーのレシピリンクの横にある鉛筆アイコンを選択します。

  2. windowstest::default をレイヤーの Setup (セットアップ) レシピに追加します。次に、[+] を選択してレイヤーに追加し、[Save] (保存) を選択して設定を保存します。

  3. [Instances] を選択し、レイヤーに別のインスタンスを追加して、そのインスタンスを起動します。

    インスタンスの名前を recipetest2 に変更する必要があります。起動の完了後に、AWS OpsWorks スタックによって windowstest::default が実行されます。

  4. recipetest2 インスタンスがオンラインになった後、c:\data があることを確認します。

注記

Setup、Configure、または Deploy イベントにレシピを割り当てた場合は、スタックコマンド (Setup および Configure) またはデプロイコマンド (Deploy) を使用してイベントをトリガーすることで、それらのレシピを手動で実行することもできます。イベントに複数のレシピが割り当てられている場合、これらのコマンドによってそれらのレシピがすべて実行されます。