Files
AWX/check-available-updates.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