

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

# Windows Instance でのパッケージのインストール
<a name="cookbooks-101-opsworks-install-software-package"></a>

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

**注記**  
この例では、「[Windows インスタンスでのレシピの実行](cookbooks-101-opsworks-opsworks-windows.md)」の例を実行済みであることを前提としています。実行済みでない場合は、最初にその例を実行する必要があります。特に、インスタンスへの RDP アクセスを有効にする方法について説明しています。

ソフトウェアが MSI ファイルなどのインストーラパッケージで提供されている場合は、そのファイルをインスタンスにダウンロードして実行する必要があります。この例では、関連する環境変数を定義する方法など、MSI パッケージ、Python ランタイムをインストールするクックブックを実装する方法を示しています。IIS など Windows の機能をインストールする方法の詳細については、「[Windows の機能のインストール: IIS](cookbooks-101-opsworks-install-software-feature.md)」を参照してください。

**クックブックをセットアップするには**

1. `installpython` という名前のディレクトリを作成し、そのディレクトリに移動します。

1. `installpython` に、次のコンテンツを含む `metadata.rb` ファイルを追加します。

   ```
   name "installpython"
   version "0.1.0"
   ```

1. `installpython` に `recipes` ディレクトリと `files` ディレクトリを追加して、ファイルに `default` ディレクトリを追加します。

1. [Python Releases for Windows](https://www.python.org/downloads/windows/) からクックブックの `files\default` ディレクトリに Python パッケージをダウンロードします。この例では、`python-3.4.3.amd64.msi` という名前の MSI インストーラを使用して、Python 3.5.0a3 の Windows x86-64 バージョンをインストールします。

1. 以下のレシピコードを保存した `default.rb` という名前のファイルを `recipes` ディレクトリに追加します。

   ```
   directory 'C:\tmp' do
     rights :full_control, 'Everyone'
     recursive true
     action :create
   end
   
   cookbook_file 'C:\tmp\python-3.4.3.amd64.msi' do
     source "python-3.4.3.amd64.msi"
     rights :full_control, 'Everyone'
     action :create
   end
   
   windows_package 'python' do
     source 'C:\tmp\python-3.4.3.amd64.msi'
     action :install
   end
   
   env "PATH" do
     value 'c:\python34'
     delim ";"
     action :modify
   end
   ```

   このレシピでは、以下のような処理を実行します。

   1. [ディレクトリ](https://docs.chef.io/chef/resources.html#directory)リソースを使用して、`C:\tmp` ディレクトリを作成します。

      このリソースの詳細については、「[例 3: ディレクトリの作成](cookbooks-101-basics-directories.md)」を参照してください。

   1. [cookbook\$1file](https://docs.chef.io/chef/resources.html#cookbook-file) リソースを使用して、クックブックの `files\default` ディレクトリから `C:\tmp` にインストーラをコピーします。

      このリソースの詳細については、「[クックブックからのファイルのインストール](cookbooks-101-basics-files.md#cookbooks-101-basics-files-cookbook_file)」を参照してください。

   1. [windows\$1package](https://docs.chef.io/chef/resources.html#windows-package) リソースを使用して、`c:\python34` に Python をインストールする MSI インストーラを実行します。

      インストーラによって必要なディレクトリを作成され、ファイルがインストールされますが、システムの `PATH` 環境変数は変更されません。

   1. [env](https://docs.chef.io/chef/resources.html#env) リソースを使用して、システムパスに `c:\python34` を追加します。

      env リソースを使用して、環境変数を定義します。この例では、レシピによって `c:\python34` がパスに追加されて、コマンドラインから Python スクリプトを簡単に実行できるようになります。
      + この例では、リソース名に環境変数の名前 `PATH` を指定します。
      + この例では、`value` 属性に変数の値 `c:\\python34` を指定します (`\` 文字をエスケープする必要があります)。
      + `:modify` アクションによって、指定した値が変数の現在の値に付加されます。
      + `delim` 属性には、既存の値と新しい値を区切る記号 (この例では `;`) を指定します。

1. `.zip` の `installpython` アーカイブを作成し、S3 バケットにアップロードして、公開します。後で使用できるように、アーカイブの URL を記録します。詳細については、「[クックブックリポジトリ](workingcookbook-installingcustom-repo.md)」を参照してください。

   Amazon S3 バケットに配信されるコンテンツには、カスタマーコンテンツが含まれている場合があります。機密データの削除の詳細については、[「S3 バケットを空にする方法」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)または[「S3 バケットを削除する方法」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)を参照してください。

以下のようにこの例のスタックを作成します。既存の Windows スタックを使用することもできます。後で説明するように、クックブックを更新するだけです。

**Stack を作成する**

1. [OpsWorks スタックコンソール](https://console.aws.amazon.com/opsworks/)を開いて [**Add Stack**] を選択します。以下の設定を指定し、その他の設定はデフォルト値を受け入れて、[**Add Stack**] を選択します。
   + **Name** (名前) – InstallPython
   + **リージョン** – 米国西部 (オレゴン)

     この例はいずれのリージョンでも動作しますが、チュートリアルでは米国西部 (オレゴン) を使用することをお勧めします。
   + **Default operating system** (デフォルトのオペレーティングシステム) – Microsoft Windows Server 2012 R2

1. [**Add a layer**] を選択し、以下の設定を使用してスタックに[カスタムレイヤーを追加](workinglayers-custom.md)します。
   + **Name** (名前) – Python
   + **Short name** (短縮名) – python

1. デフォルト設定で Pythonレイヤーに [24/7 インスタンスを追加](workinginstances-add.md)し、[起動](workinginstances-starting.md)します。

インスタンスがオンラインになった後、クックブックをインストールし、レシピを実行できます

**クックブックをインストールし、レシピを実行するには**

1. [カスタムクックブックを有効にするようにスタックを編集](workingcookbook-installingcustom-enable.md)し、以下の設定を指定します。
   + **Repository type** (リポジトリタイプ) – **S3 Archive** (アーカイブ)
   + **Repository URL** (リポジトリの URL) – 前の手順で記録したクックブックのアーカイブ の URL。

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

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

1. カスタムクックブックの更新が終了したら、**実行するレシピ**を **installpython::default** に設定して**レシピの実行**スタックコマンドを実行することで、レシピを実行します。このコマンドは、`installpython::default` から成る実行リストで Chef 実行を開始します。
**注記**  
この例では、便宜上 **Execute Recipes** を使用していますが、通常 OpsWorks 、適切なライフサイクルイベントに割り当てることで、 スタックで[レシピを自動的に実行](workingcookbook-assigningcustom.md)します。このようなレシピは、イベントを手動でトリガーすることによって実行できます。Setup および Configure イベントをトリガーするにはスタックコマンドを使用し、Deploy および Undeploy イベントをトリガーするには[デプロイコマンド](workingapps-deploying.md)を使用できます。

1. インストールを確認するには、[RDP を使用してインスタンスに接続](workinginstances-rdp.md)し、Windows Explorer を開きます。
   + ファイルシステムに `C:\Python34` ディレクトリがあることを確認できます。
   + コマンドラインから `path` を実行した場合は、`PATH=c:\python34;C:\Windows\system32;...`のようになります。
   + コマンドラインから `python --version` を実行した場合は、`Python 3.4.3` が返されます。