目的
Ansibleを使いたいため、WindowsServer2016に以下の手順を参考にしながらWinRMサービス設定を行ったところ、エラーが出て失敗。 簡単な回避方法があったのでメモ。 docs.ansible.com
エラー内容
公式ドキュメント記載の手順、3行目で失敗します。
$url = "https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" $file = "$env:temp\ConfigureRemotingForAnsible.ps1" (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) powershell.exe -ExecutionPolicy ByPass -File $file
スクリプトのダウンロードに失敗していますね。
日本語でのエラーメッセージがこうで、
PS C:\Users\Administrator> $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" PS C:\Users\Administrator> $file = "$env:temp\ConfigureRemotingForAnsible.ps1" PS C:\Users\Administrator> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) "2" 個の引数を指定して "DownloadFile" を呼び出し中に例外が発生しました: "要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした" 発生場所 行:1 文字:1 + (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : WebException
英語でのエラーメッセージがこちら。
PS C:\Users\Administrator> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) Exception calling "DownloadFile" with "2" argument(s): "The request was aborted: Could not create SSL/TLS secure channel." At line:1 char:1 + (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : WebException
簡単な回避策
スクリプトのダウンロードに失敗しているので、手動でそれを作成するだけです。
スクリプトの微修正や設定変更などは不要!
ConfigureRemotingForAnsible.ps1をブラウザで開く。 ansible/ConfigureRemotingForAnsible.ps1 at devel · ansible/ansible · GitHub
テキストにコピペする。スクリプト名は「ConfigureRemotingForAnsible.ps1」で、文字コードは「Unicode」で保存すること。絶対。
隠しフォルダを表示し、「C:\Users\Administrator\AppData\Local\Temp\」に2で作ったスクリプトを置く。
管理者権限でPowershellを実行し、コマンドをたたく。
PS C:\Users\Administrator> $file = "$env:temp\ConfigureRemotingForAnsible.ps1" PS C:\Users\Administrator> powershell.exe -ExecutionPolicy ByPass -File $file Self-signed SSL certificate generated; thumbprint: D5006B006958E6A365DD26E82C422352BC40C6A4 wxf : http://schemas.xmlsoap.org/ws/2004/09/transfer a : http://schemas.xmlsoap.org/ws/2004/08/addressing w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd lang : en-US Address : http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous ReferenceParameters : ReferenceParameters Ok. PS C:\Users\Administrator> winrm enumerate winrm/config/Listener Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 127.0.0.1, 172.31.32.14, ::1, 2001:0:348b:fb58:88c:3e90:53e0:dff1, fe80::5efe:172.31.32.14%7, fe80::88 c:3e90:53e0:dff1%6, fe80::f4b3:ee13:47ac:a094%4 Listener Address = * Transport = HTTPS Port = 5986 Hostname = EC2AMAZ-11KTLG7 Enabled = true URLPrefix = wsman CertificateThumbprint = D5006B006958E6A365DD26E82C422352BC40C6A4 ListeningOn = 127.0.0.1, 172.31.32.14, ::1, 2001:0:348b:fb58:88c:3e90:53e0:dff1, fe80::5efe:172.31.32.14%7, fe80::88 c:3e90:53e0:dff1%6, fe80::f4b3:ee13:47ac:a094%4 PS C:\Users\Administrator>
雑記
できた。
この手は1ファイルだけで完結するからさくっとできた話。