58 lines
2.2 KiB
YAML
58 lines
2.2 KiB
YAML
- name: Windows Update Assessment and Reporting
|
|
hosts: windows
|
|
gather_facts: false
|
|
tasks:
|
|
- name: Ensure temporary directory exists
|
|
win_file:
|
|
path: C:\Temp
|
|
state: directory
|
|
- name: Scan for available Windows updates
|
|
win_updates:
|
|
state: searched
|
|
category_names: '*'
|
|
register: avail_updates
|
|
- name: Process and format update information
|
|
set_fact:
|
|
formatted_kb_updates: |
|
|
{% for update_id, update in avail_updates.updates.items() %}
|
|
{% if update.kb | length > 0 %}
|
|
{% set major_category = update.categories | reject('match', '.*Windows Server.*') | first | default('Unknown') %}
|
|
Major Category: {{ major_category }}
|
|
Title: {{ update.title }}
|
|
KB: {{ update.kb | join(', ') }}
|
|
---
|
|
{% endif %}
|
|
{% endfor %}
|
|
formatted_non_kb_updates: |
|
|
{% for update_id, update in avail_updates.updates.items() %}
|
|
{% if update.kb | length == 0 %}
|
|
Title: {{ update.title }}
|
|
ID: {{ update.id }}
|
|
Categories: {{ update.categories | join(', ') }}
|
|
---
|
|
{% endif %}
|
|
{% endfor %}
|
|
has_non_kb_updates: >-
|
|
{% set non_kb_count = [] %}
|
|
{% for update_id, update in avail_updates.updates.items() %}
|
|
{% if update.kb | length == 0 %}
|
|
{% set _ = non_kb_count.append(1) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ non_kb_count | length > 0 }}
|
|
- name: Show available updates with KB numbers
|
|
debug:
|
|
msg: "{{ formatted_kb_updates.split('\n') }}"
|
|
- name: Show updates without KB numbers (if any)
|
|
debug:
|
|
msg: "Updates without KB numbers:\n{{ formatted_non_kb_updates.split('\n') }}"
|
|
when: has_non_kb_updates | bool
|
|
- name: Save KB updates report to file
|
|
ansible.windows.win_copy:
|
|
content: "{{ formatted_kb_updates }}"
|
|
dest: C:\Temp\windows_updates_with_kb.txt
|
|
- name: Save non-KB updates report to file
|
|
ansible.windows.win_copy:
|
|
content: "{{ formatted_non_kb_updates }}"
|
|
dest: C:\Temp\windows_updates_without_kb.txt
|
|
when: has_non_kb_updates | bool |