Slide 1

Slide 1 text

Windows x Ansible Ansible ではじめる Windows 自動化 Interact 2018 | June. 30th, 2018

Slide 2

Slide 2 text

Interact 2018 2 ひよこ大佐 テクニカルサポートエンジニア 3月にTwitter転職しました Twitter: @hiyoko_taisa blog : http://hiyoko-infratech.hateblo.jp/ 自己紹介

Slide 3

Slide 3 text

Interact 2018 3 1. Ansibleとは 2. Windowsを管理しよう 3. トラブルシュート 本日のおしながき

Slide 4

Slide 4 text

Interact 2018 4 1. Ansibleの概要 2. Windowsを管理する上での基礎知識 3. トラブルシュートの基礎知識 本セッションでわかること

Slide 5

Slide 5 text

突然ですが……

Slide 6

Slide 6 text

Ansibleを使ったことがある人?

Slide 7

Slide 7 text

その中で…… AnsibleでWindowsを管理している人?

Slide 8

Slide 8 text

AnsibleはWindowsの管理でも 活躍します!

Slide 9

Slide 9 text

その前に…… Ansible とは?

Slide 10

Slide 10 text

Interact 2018 10 Ansibleとは? Red Hatとコミュニティで開発している構成管理ツール ● 最新版はAnsible 2.6 (2018/6/29 リリース) ● コミュニティ版とRed HatがサポートするAnsible Engine ● 自動化オーケストレーションツールのAnsible Tower

Slide 11

Slide 11 text

Interact 2018 11 Ansibleの利点 ● 学習コストの低いYAML形式のPlaybook ● べき等性を保った変更 ● シンプルかつ柔軟な拡張が可能 ● コミュニティでの開発・拡張が活発 ● 多種多様な環境をコントロール(Linux/Windows/Network機器)

Slide 12

Slide 12 text

Interact 2018 12 Ansible Playbookのサンプル --- - name: Add a user hosts: all gather_facts: false tasks: - name: Add User win_user: name: ansible password: "@ns1bl3" state: present https://github.com/ansible/ansible-examples/blob/master/windows/create-user.yml

Slide 13

Slide 13 text

Interact 2018 13 Ansibleの接続イメージ SSH / WinRM

Slide 14

Slide 14 text

Interact 2018 14 Ansibleの構造 Inventory host_A host_B Playbook test.yml 1. スクリプトを転送 host_A 3.結果を返却 Connection Plugin Modules 2.実行

Slide 15

Slide 15 text

Interact 2018 15 AnsibleでWindowsを管理するメリット ● WindowsでもInfrastructure as Codeを実践 ● Linuxサーバーと同時に自動化(統一化された管理)

Slide 16

Slide 16 text

Windows を管理しよう!

Slide 17

Slide 17 text

Interact 2018 17 必要なもの 事前準備 Playbook 作成 実行

Slide 18

Slide 18 text

Interact 2018 18 事前準備 ■ Ansible側 ● pywinrmのパッケージの導入 Playbookには…… ● ansible_connection: winrm を指定 ● ansible_winrm_transportを指定

Slide 19

Slide 19 text

Interact 2018 19 Windows Serverを管理する ansible_winrm_transportで指定可能な認証方式

Slide 20

Slide 20 text

Interact 2018 20 Windows Serverを管理する ■ Windows側 ● Powershell 3.0以上 ( Windows 7 SP1 / Windows Server 2008 SP1以上 ) ● WinRM(Windows Remote Management)の有効化 ● 自動でWindowsホストで必要な準備を実行するPowershellも (ConfigureRemotingForAnsible.ps1) https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotin gForAnsible.ps1

Slide 21

Slide 21 text

Interact 2018 21 Windows Module ● 80を超えるWindows Module ● 現在も増え続けている

Slide 22

Slide 22 text

Interact 2018 22 便利なWindows Module ● win_domain_user Active Directoryのユーザを管理 win_domain_user: name: bob firstname: Bob surname: Smith password: B0bP4ssw0rd state: present domain_username: DOMAIN\admin-account domain_password: SomePas2w0rd domain_server: [email protected]

Slide 23

Slide 23 text

Interact 2018 23 便利なWindows Module ● win_package パッケージのインストール/アンインストール ● ネットワーク上のパッケージも取得可能 win_package: path: http://download.microsoft.com/.../vcredist_x64.exe product_id: '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}' arguments: /install /passive /norestart

Slide 24

Slide 24 text

Interact 2018 24 便利なWindows Module ● win_updates Windows Updateの実行 - name: Install only particular updates based on the KB numbers win_updates: category_name: - SecurityUpdates whitelist: - KB4056892 - KB4073117

Slide 25

Slide 25 text

トラブルシューティング

Slide 26

Slide 26 text

Interact 2018 26 確認するべきポイント ● pywinrmのバージョン(最新版への更新) ● WinRMサービスの状態 ● WinRM Configの確認 ● Debugログから原因を追跡

Slide 27

Slide 27 text

Interact 2018 27 WinRMのトラブルシューティング ■ WinRMの設定の問題か切り分ける ● 他のWindowsマシンからWinRM接続を試してみる # test out HTTP winrs -r:http://server:5985/wsman -u:Username -p:Password ipconfig # test out HTTPS (will fail if the cert is not verifiable) winrs -r:http://server:5985/wsman -u:Username -p:Password -ssl ipconfig

Slide 28

Slide 28 text

Interact 2018 28 WinRMのトラブルシューティング ■ WinRMの設定確認 > winrm get winrm/config

Slide 29

Slide 29 text

Interact 2018 29 winrm/configの出力結果

Slide 30

Slide 30 text

Interact 2018 30 Debug出力の確認 WinRMのConnection含む詳細な出力を確認可能 $ ansible-playbook -i inventory all test.yml -vvvvv

Slide 31

Slide 31 text

Interact 2018 31 事例: HTTP 401/Credentials Rejected ● HTTP 401 エラーの場合、接続時の認証で失敗している ● 認証情報が正しいか ● ユーザがlocal Administrator groupに属するユーザであること ● ansible_winrm_transport で指定した認証方法が、 Service\Auth\下でEnableになっていること ● Basic認証をADのユーザーに対して指定していないか ● 関連するpythonパッケージを更新

Slide 32

Slide 32 text

Interact 2018 32 事例: HTTP 500 Error ● WinRMサービスに問題がある ● サービス再起動など

Slide 33

Slide 33 text

Interact 2018 33 事例: Timeout ● FirewallがWinRMのListenerポートをブロックしていないか ● WinRMサービスが起動しているか ● ネットワークで問題が発生していないか ● 負荷の高いタスクで発生する場合、Timeout値を伸ばしてみる ansible_winrm_operation_timeout_sec ansible_winrm_read_timeout_sec

Slide 34

Slide 34 text

THANK YOU!