LoginSignup
0
0

More than 1 year has passed since last update.

ansibleでソフトウェアアップデート

Last updated at Posted at 2022-12-08

全然記事を投稿していないので、しばらくは自分が作成したスクリプト系を紹介するだけの記事を投稿します。

背景

セキュリティ対策として定期的なシステムアップデートなどが必要と思いますが、自分で管理しているサーバの台数がちらほらと増えてきて、また思いついたときに実行しているくらいだったのでcronで設定したいと思ってました。
我が家にはサーバのcronマネージャのような立ち位置でAWXくんがいるのですが、そいつに任せればいいじゃないか!ということでシステムアップデート用のansible-playbookを作成してますのでそれの紹介です。

要件

  • Windows ServerとRedHat系のシステムアップデートしたい
  • playbookは一つにまとめたい

playbook

- hosts: all
  gather_facts: true

  tasks:
    - name: OS family display
      debug: var=ansible_os_family
    
    - name: Redhat update(yum)
      become: yes
      yum:
        name: '*'
        state: latest
      register: update_result
      when:
        - ansible_os_family== "RedHat" 
    
    - name: Windows Update
      win_updates:
        category_names:
          - Application
          - Connectors
          - CriticalUpdates
          - DefinitionUpdates
          - DeveloperKits
          - FeaturePacks
          - Guidance
          - SecurityUpdates
          - ServicePacks
          - Tools
          - UpdateRollups
          - Updates
        state: installed
        reboot: yes
        reboot_timeout: 6000
      register: update_result
      when:
        - ansible_os_family== "Windows" 
    
    - name: Update results
      debug: var=update_result

ざっくり要点説明

  • gather_factstrue必須です。ここでOSファミリー情報を取得して、実行するモジュールをwhenで使い分けます
    • 自分はRedHat系とWindows Serverで試したかったので、Debian系を使用している人は別のタスクを追加してください
  • Windows Updateについては、category_namesにすべてのカテゴリーを書いたつもりですが、*でも大丈夫らしいです。ただ自分が実施したときに一部当てられないパッチがあった気がしたので指定してます。(おいおい気づいたのですが、インストール済みだけどWindowsのコンソール上は終わってないように見えていただけの節がありますが細かく検証してないです)
  • Windowsについては必要に応じてリブートするようにしてます。そのため自分はAWXでワークフロージョブとしてこのplaybook前後に正常性確認のplaybookを指定してます。それは別の機会に紹介します。
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0