全然記事を投稿していないので、しばらくは自分が作成したスクリプト系を紹介するだけの記事を投稿します。
背景
セキュリティ対策として定期的なシステムアップデートなどが必要と思いますが、自分で管理しているサーバの台数がちらほらと増えてきて、また思いついたときに実行しているくらいだったので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_facts
はtrue
必須です。ここでOSファミリー情報を取得して、実行するモジュールをwhen
で使い分けます- 自分はRedHat系とWindows Serverで試したかったので、Debian系を使用している人は別のタスクを追加してください
- Windows Updateについては、
category_names
にすべてのカテゴリーを書いたつもりですが、*
でも大丈夫らしいです。ただ自分が実施したときに一部当てられないパッチがあった気がしたので指定してます。(おいおい気づいたのですが、インストール済みだけどWindowsのコンソール上は終わってないように見えていただけの節がありますが細かく検証してないです) - Windowsについては必要に応じてリブートするようにしてます。そのため自分はAWXでワークフロージョブとしてこのplaybook前後に正常性確認のplaybookを指定してます。それは別の機会に紹介します。