Windows server へ Ansibleから設定する準備
Overview
Windows serverへの設定をAnsibleから
設定対象サーバでの事前作業
PowerShellにて
>Enable-PSRemoting
>winrm quickconfig
>winrm set winrm/config/service/auth '@{Basic="true"}'
>winrm set winrm/config/service '@{AllowUnencrypted="true"}'
認証方法によってこの辺りのコマンドは変わります。
今回はローカルでのキッティング作業想定で色々試していたためbasic認証です。
Ansible作業後
>Disable-PSRemoting
>winrm set winrm/config/service/auth '@{Basic="false"}'
>winrm set winrm/config/service '@{AllowUnencrypted="false"}'
WinRMが動いてるかの確認
何かしらのWindowsマシンから、
>winrs -r:http://\<IP address>:5985/wsman -u:\<user name> -p:<password> ipconfig
アドレスなどが見れればwinrmが動作しています。
インベントリファイルサンプル
認証周りはこちら参照
https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#authentication-options
https://docs.ansible.com/ansible/latest/plugins/connection/winrm.html
下の例では何も設定が入っていない、ワークグループ設定を前提にしています。(なのでbasic)
あるいは、ローカルはNTLM, ADアカウントを使うならkerberos、あるいは証明書なんかが使える。
[windows]
<target-ip-address-1>
<target-ip-address-2>
<target-ip-address-3>...
[windows:vars]
ansible_user=<local-administrator>
ansible_password=<password>
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
ansible_winrm_transport=basic
ansible_winrm_port=5985
ansible_winrm_scheme=http
コマンド
単発コマンド
ansible all -i hosts -m win_command -a ipconfig
playbook実行
ansible-playbook -i hosts <hogehoge.yml>
その他
ansible直接関係ないけどPowerShellのリモートセッション試してみました。便利。
Enter-PSSession -ComputerName \<computer name or ip address> -Credential \<user>
Ansible初めて触ってる所ですがplaybookよくわからないです。
適当にLinux相手に試していったほうが身につくの早いかも……。