03-6416-1579

平日 10:00-18:00

Ansible で Windows ホストを操作できるように設定する


Windows ホストの設定

必要要件

Windows ホストの必要要件は以下のとおりです。

  • Microsoft 社から公式にサポートされている OS であること
  • PowerShell 3.0 以上および .NET Framework 4.0 以上がインストールされていること
  • WinRM リスナが設定されていること

Ansible による操作のためのユーザの作成

コントロールノードから Windows ホストを操作するためには、Windows ホスト上で Administrator グループに所属するユーザが必要となります。 Ansible による操作のためのユーザ (以下、ansible ユーザと呼びます) を作成してください。

PowerShell および .NET Framework のアップグレード

PowerShell 3.0 以上および .NET Framework 4.0 以上が必要となります。

  1. PowerShell のバージョンを確認してください。

    PowerShell を起動し、$PSVersionTable.PSVersion コマンドを実行してください。Major 列の数値が PowerSHell のメジャーバージョンです。 このバージョンが 3 未満の場合、アップグレードが必要となります。

    PS > $PSVersionTable.PSVersion
     
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    2      0      -1     -1

  2. 必要な場合、PowerShell 3.0 へアップグレードしてください。

    手順については Windows Management Framework 3.0 (PowerShell 3 を含む) をインストールする を参照してください。

WinRM のメモリ使用制限に関する修正プログラムの適用 (PowerShell v3.0 のみ)

下記に示す環境では、 WinRM サービスが MaxMemoryPerShellMB の値を適切に使用しないことに起因する不具合が存在します。この不具合のため、Playbook の実行時にエラーが発生する可能性があります。

  • Windows Server 2008 SP2 および WMF 3.0 がインストール済み
  • Windows 7 SP1 および WMF 3.0 がインストール済み
  • Windows Server 2008 R2 SP1 および WMF 3.0 がインストール済み
  • Windows 8
  • Windows Server 2012

この既知の問題を解消するために、 Microsoft Update Catalog から修正プログラムを入手し、Windows ホストにインストールしてください。

(この問題の詳細については "Out of memory" error on a computer that has a customized MaxMemoryPerShellMB quota set and has WMF 3.0 installed を参照してください。)

WinRM の設定

コントロールノードから Windows ホストを操作するために、WinRM を構成します。 Red Hat 社から WinRM を構成するためのスクリプト (ConfigureRemotingForAnsible.ps1) が提供されています。

  1. ConfigureRemotingForAnsible.ps1 をダウンロードします。

    管理者権限で PowerShell を起動し、次のコマンドを実行してください。

    [HTTP Proxy が必要無い場合]

    PS > Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -outfile ConfigureRemotingForAnsible.ps1

    [HTTP Proxy が必要な場合]

    ホスト名 (proxy.example.com) やポート番号 (8080) は、自組織の設定に合わせて設定してください。

    PS > Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -outfile ConfigureRemotingForAnsible.ps1 -Proxy http://proxy.example.com:8080

  2. ConfigureRemotingForAnsible.ps1 を実行します。

    管理者権限で PowerShell を起動し、次のコマンドを実行してください。

    PS > powershell.exe -ExecutionPolicy ByPass -File .\ConfigureRemotingForAnsible.ps1

  3. WinRM リスナを確認します。PowerShell 上で次のコマンドを実行してください。

    PS > winrm enumerate winrm/config/Listener
    Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = 127.0.0.1, ****
     
    Listener
    Address = *
    Transport = HTTPS
    Port = 5986
    Hostname = SERVER2012
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint = abcd
    ListeningOn = 127.0.0.1, ****

接続テスト

Ansible をインストールする - Ping モジュールを利用した接続テスト (Windows ホスト) を参照し、コントロールノードから Windows ホストへの接続テストを実施してください。