Windows PowerShell スクリプトの実行 - AWS OpsWorks

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

Windows PowerShell スクリプトの実行

重要

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

注記

以下の例では、「Windows インスタンスでのレシピの実行」の例を実行済みであることを前提としています。実行済みでない場合は、最初にその例を実行する必要があります。特に、インスタンスへの RDP アクセスを有効にする方法について説明しています。

レシピで Windows インスタンスのタスクを実行する方法の 1 つ、特に対応する Chef リソースを持たないタスクは、レシピで Windows PowerShell スクリプトを実行することです。このセクションでは、Windows PowerShell スクリプトを使用して Windows 機能をインストールする方法について説明し、基本について説明します。

powershell_script リソースは、インスタンスで Windows PowerShell コマンドレットを実行します。次の例では、Install-WindowsFeature cmdlet を使用してインスタンスに XPS ビューワーをインストールします。

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

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

    • 名前 – PowerShellTest

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

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

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

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

    • 名前 – PowerShell

    • Short name (短縮名) – powershell

  3. デフォルト設定で PowerShell レイヤーに 24/7 インスタンスを追加、起動します

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

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

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

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

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

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

    Chef::Log.info("******Installing XPS.******") powershell_script "Install XPS Viewer" do code <<-EOH Install-WindowsFeature XPS-Viewer EOH guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name XPS-Viewer).installed" end
    • powershell_script リソースによって、[XPS] ビューアーをインストールするコマンドレットが実行されます。

      この例では、1 つのコマンドレットのみを実行していますが、code ブロックには任意の数のコマンドラインを含めることができます。

    • guard_interpreter 属性は、64 ビットバージョンの Windows を使用するように Chef に指示します PowerShell。

    • not_if ガード属性を指定すると、Chef によってインストール済みの機能はインストールされません。

  5. .zip ディレクトリの powershell アーカイブを作成します。

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

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

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

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

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

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

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

  2. [Update Custom Cookbooks] スタックコマンドを実行して、カスタムクックブックの最新バージョンをインスタンスにインストールします。

  3. カスタムクックブックの更新が終了したら、実行するレシピpowershell::default に設定してレシピの実行スタックコマンドを実行することで、レシピを実行します。

注記

この例では、わかりやすいように [Execute Recipes] を使用していますが、通常は、適切なライフサイクルイベントに割り当てることで、AWS OpsWorks スタックによってレシピが自動的に実行されるようにします。このようなレシピは、イベントを手動でトリガーすることによって実行できます。Setup および Configure イベントをトリガーするにはスタックコマンドを使用し、Deploy および Undeploy イベントをトリガーするにはデプロイコマンドを使用できます。

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

PowerShell レシピを確認するには
  1. Chef ログを調べます。powershell1 インスタンスの [Log] (ログ) 列の [show] (表示) をクリックすると、ログが表示されます。下へスクロールすると、下部にログメッセージが表示されます。

    ... [2015-04-27T18:12:09+00:00] INFO: Storing updated cookbooks/powershell/metadata.rb in the cache. [2015-04-27T18:12:09+00:00] INFO: ******Installing XPS.****** [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Install XPS Viewer] action run (powershell::default line 3) [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Guard resource] action run (dynamically defined) [2015-04-27T18:12:42+00:00] INFO: powershell_script[Install XPS Viewer] ran successfully ...
  2. RDP を使用してインスタンスにログインし、[Start] メニューを開きます。XPS Viewer が [Windows Accessories] に表示されていることを確認できます。