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 以上が必要となります。
-
PowerShell のバージョンを確認してください。
PowerShell を起動し、$PSVersionTable.PSVersion コマンドを実行してください。Major 列の数値が PowerSHell のメジャーバージョンです。 このバージョンが 3 未満の場合、アップグレードが必要となります。
PS > $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
-
必要な場合、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) が提供されています。
-
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
-
ConfigureRemotingForAnsible.ps1 を実行します。
管理者権限で PowerShell を起動し、次のコマンドを実行してください。
PS > powershell.exe -ExecutionPolicy ByPass -File .\ConfigureRemotingForAnsible.ps1
-
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 ホストへの接続テストを実施してください。