Ansibleを使用してWindowsの更新プログラムを適用してみました。

ITのブログ

概要

Ansibleのwin_updatesまたはwin_hotfixモジュールを使用してWindows Serverに更新プログラムを適用する検証を行いました。Windows Server 2016には問題なく適用できましたが、Windows Server 2022は一部エラーが出力され適用することができませんでした。実施内容について以下に記載します。

前提

  • 調査時期は2021年11月頃となるため、この先Ansibleの条件が変わる可能性があります。
  • Ansibleのインベントリ等の基礎知識があることを前提に記事を記載しています。
  • Windows Serverは試用版を使用しています。

検証結果

win_updates

以下のAnsible-playbookを作成しWindows Serverにリリースされている全ての更新プログラムを適用しました。

- hosts: windows
  gather_facts: false

  tasks:
   - name: Install all updates and reboot as many times as needed
     ansible.windows.win_updates:
      category_names: '*'
      reboot: yes

Windows Server 2016で1回実行すると、KB890830とKB5005698とKB4103730が適用され再起動も行われたが、timeoutのようなエラーで停止してしまいました。2回目実行すると、再起動後の「更新プログラムを構成しています」の処理に時間がかかりすぎて(検証機のスペックが低いため)エラーで停止しました。3回目でokが表示されました。なので、okが表示されるまで何度も実行する形になると思います。

Windows Server 2022では問題なく、change=1となりました。

win_hotfix

以下のAnsible-playbookを作成しWindows Serverにmsu形式の更新プログラムを適用しました。 またこちらの定義はWindows Server 2016が前提となります。

- hosts: windows
  gather_facts: false

  tasks:
    - name: Create work directory
      win_file:
        path: C:\work
        state: directory

    - name: Copy patch
      ansible.windows.win_copy:
       src: /patch/windows10.0-kb5008601-x64_c0fddabd5b9698548d741effbdfd03a4f2440ba2.msu
       dest: C:\work\windows10.0-kb5008601-x64_c0fddabd5b9698548d741effbdfd03a4f2440ba2.msu

    - name: Install hotfix
      win_hotfix:
       source: C:\work\windows10.0-kb5008601-x64_c0fddabd5b9698548d741effbdfd03a4f2440ba2.msu
       state: present
      register: hotfix_result

    - name: Reboot host if required
      win_reboot:
      when: hotfix_result.reboot_required

Windows Server 2016は問題なく更新プログラムを適用することができました。しかし、Windows Server 2022はエラーを出力して適用することができませんでした。今後、適用されるように修正されるのではないかと思います。

タイトルとURLをコピーしました