てんこ

ブログ名は愛猫(てん)の愛称です。中身は個人のIT系学習記録です。

AnsibleでのWindowsUpdateその2

引き続きWindowsUpdateをやってみたお話を書きます。

Ansible関連の実践記事一覧はこちら。

Ansible自動化の実践記事一覧 - てんこ


目的

  • win_updateモジュールの理解度を上げる

    • カテゴリとか
    • log_pathとか
  • win_updateモジュールの公式ドキュメントリンク

ansible.windows.win_updates module – Download and install Windows updates — Ansible Documentation

カテゴリとか

昨日書いてたのは公式ドキュメントのモジュールそのままなんですが、ログを見てたら「installedになってないやつあるな」というのに気が付きました。

実施されていない理由が "filtered_reason": "category_names"とかになってました。

おや?と思ってよく読んだら、もっといっぱいカテゴリあるそうで…

指定できるのはこのあたりのようです。

4種類しか確認できていないので、確認できるか、覚えていたら追記します。

たぶん、他のホームページにいろいろと書いてある予感もします。

カテゴリの宣言名 Default 役割
Application ×
Connectors ×
Critical Updates クリティカルパッチ
Definition Updates × Windows Defenderの定義の更新
Developer Kits ×
Feature Packs ×
Guidance ×
Security Updates セキュリティパッチ
Service Packs ×
Tools ×
Update Rollups ロールアップ更新プログラム?
Updates × オプションの更新プログラム?

カテゴリの宣言名の間にある空白は、あってもなくても認識してくれるみたいでした。

ただ、Definition Updatesを試したとき、installed: true とはなっていたものの、reboot_require: falseになっていたのですが、Windows側の画面を見たところ、「今すぐインストールする」ボタンが出ている状態でした。

↓こんなかんじ。

なので、自動では再起動はされず。

その後、手動で再起動してみたら、反映自体はされた模様です。

つぶやいてみたら、つよつよな方からアドバイスが。

あるあるなんだそうです。

WSUSの画面からの追記

なるほど。いくつかは一致しそうだけど、完全一致にはならないな…うーむ。

log_pathとか

モジュールの説明の中で、Windows Updateのログを出力してくれる、という内容が記載されていました。

WindowsUpdate対象のホスト上にログを作ってくれるようなので、win_fileモジュールを使って事前にパスを作る形にして、そこにファイルを作るように指定してみました。

    - name: file creation
      win_file:
        path: C:\Temp
        state: directory

    - name: Run Windows Update 
      win_updates:
        category_names:
        - Critical Updates
        - Security Updates
        - Update Rollups
        - Updates
        - Feature Packs
        - Definition Updates
        state: installed
        log_path: C:\Temp\ansible_win_update.log
(後略)

結果、確かにしっかりWindowsUpdateに関するログが出力されていました。

Windows側のログ

2019-10-15 20:59:04Z Creating downloader object...
2019-10-15 20:59:04Z Creating download collection...
2019-10-15 20:59:04Z Adding update (66 of 67) 0025cccd-6122-483a-a646-dd3ea3ff861f
2019-10-15 20:59:04Z Downloading (66 of 67) 0025cccd-6122-483a-a646-dd3ea3ff861f
2019-10-15 20:59:22Z Download result code for (66 of 67) 0025cccd-6122-483a-a646-dd3ea3ff861f = 2
(略)
2019-10-15 20:59:28Z Adding update 0025cccd-6122-483a-a646-dd3ea3ff861f
(略)
2019-10-15 21:02:03Z Update (66 of 67) 0025cccd-6122-483a-a646-dd3ea3ff861f succeeded
(略)
2019-10-15 21:02:03Z Performing post-install reboot requirement check...
2019-10-15 21:02:03Z Return value:
{
    "updates":  {
(略)
                    "0025cccd-6122-483a-a646-dd3ea3ff861f":  {
                                                                 "id":  "0025cccd-6122-483a-a646-dd3ea3ff861f",
                                                                 "title":  "Windows Server 2012 R2 用更新プログラム (KB3179574)",
                                                                 "categories":  [
                                                                                    "Updates",
                                                                                    "Windows Server 2012 R2"
                                                                                ],
                                                                 "kb":  [
                                                                            "3179574"
                                                                        ],
                                                                 "installed":  true
                                                             },
(略)
}
2019-10-15 21:02:03Z Native job completed with output: 
Name                           Value                                                                                                                                                                                                                                                                        
----                           -----                                                                                                                                                                                                                                                                        
updates                        {dc8db314-00e0-4fda-9996-8e5baf354720, 443e9449-d923-489b-9e77-39a51056fe0e, 7c295ac6-6cb2-4d47-821b-74b584a6d53e, 2079038a-206c-40c1-94a0-68c9c51ea6fb...}                                                                                                                  
failed_update_count            0                                                                                                                                                                                                                                                                            
found_update_count             67                                                                                                                                                                                                                                                                           
changed                        True                                                                                                                                                                                                                                                                         
reboot_required                True                                                                                                                                                                                                                                                                         
installed_update_count         67                                                                                                                                                                                                                                                                           
filtered_updates               {5aa5521c-0343-48a0-bba4-d2a5b9357e81}                                                                                                                                                                                                                                       

なるほどー。と思った反面、これってモジュール実施中はそのPlaybookからは参照指定とかできないので、やるとしても別でPlaybookで参照用・抽出用を走らせないといけないのかなと思い、そこまでするもんでもないあかなあという思いに至りました。