1
/
5

【Windows Server 2016】Ansibleリモートサーバーとしての初期設定について【エンジニアブログより】

こんにちは、技術4課の城です。

構成管理ツールのAnsibleについて勉強中です。
今回はWindows Server 2016へRDPログインせずに初期設定をしてみましたので、紹介します。
【参考】https://docs.ansible.com/ansible/devel/user_guide/windows_setup.html


リモートサーバーの要件

Ansibleを実行するリモートサーバーの要件としては下記となります。

  • 対応クライアントOS:Windows 7、8.1、10、
  • 対応サーバーOS:Windows Server 2008、2008 R2、2012、2012 R2、2016
  • PowerShell version 3.0以上
  • .NET Framework 4.0以上

利用したAMI:Windows_Server-2016-Japanese-Full-Base-2018.03.24(ami-07f2a061)ですと、初期状態で要件を満たしており、対応は不要でした。

リモートサーバーの要件

Ansibleを実行するリモートサーバーの要件としては下記となります。

  • 対応クライアントOS:Windows 7、8.1、10、
  • 対応サーバーOS:Windows Server 2008、2008 R2、2012、2012 R2、2016
  • PowerShell version 3.0以上
  • .NET Framework 4.0以上

利用したAMI:Windows_Server-2016-Japanese-Full-Base-2018.03.24(ami-07f2a061)ですと、初期状態で要件を満たしており、対応は不要でした。


リモートサーバーの初期設定

Ansibleを実行するためにはリモートサーバーに次の設定が必要となります。

  • WinRM(Windows Remote Management)サービスのセットアップ
  • WinRMのリスナーのセットアップ

初期設定については公式で用意されたスクリプトを利用して基本設定を行うことが可能です。
ただし公式の注意書きにもありますが、このスクリプトではWinRMでのBasic認証を利用する設定となるため、本番環境での利用は非推奨です。

The ConfigureRemotingForAnsible.ps1 script is intended for training and development purposes only and should not be used in a production environment, since it enables settings (like Basic authentication) that can be inherently insecure.

今回はuserdataで先に紹介したスクリプト ConfigureRemotingForAnsible.ps1を取得、実行する形で初期設定したいと思います。
実行したuserdataです。

<powershell>
mkdir "$env:SystemDrive\temp"
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:SystemDrive\temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
</powershell>

セキュリティグループの設定

初期設定でWinRMのHTTPSリスナーのポートはTCP5986なので、セキュリティグループにルールを追加します。

インベントリファイルの作成

インベントリファイルは接続に利用する変数を設定することができます。
今回は次のものを作成しました。

[test-windows2016]
13.231.178.197

[test-windows2016:vars]
ansible_ssh_user=Administrator
ansible_ssh_pass=******************
ansible_ssh_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

ansible_winrm_server_cert_validationはPythonのSSL証明書検証エラー回避のために設定しました。

Ansible実行確認


Ansibleサーバー側からwin_pingモジュールを利用して設定できているか確認します。
SUCCESSと返ってくればOKです。

ansible test-windows2016 -i hosts -m win_ping

13.231.178.197 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

さいごに

簡単ではありますが、リモートサーバーの設定をしてみました。

多数のサーバーに同一設定を実施するようなケースで、Ansibleは非常に強力なツールです。
是非使いこなしていきたいですね。

株式会社サーバーワークス's job postings

Weekly ranking

Show other rankings
Like Kaede Suzuki's Story
Let Kaede Suzuki's company know you're interested in their content