Files
toallab-automation/roles/oatakan.windows_update/tasks/updates-all.yml

70 lines
2.3 KiB
YAML

---
- block:
- name: check for available updates
win_updates:
category_names: "{{ win_update_category_names }}"
reject_list: "{{ win_update_reject_list | default(omit) }}"
server_selection: "{{ win_update_server_selection }}"
state: searched
register: available_updates
rescue:
- name: ensure we have connection
wait_for_connection:
- name: check for available updates (retry)
win_updates:
category_names: "{{ win_update_category_names }}"
reject_list: "{{ win_update_reject_list | default(omit) }}"
server_selection: "{{ win_update_server_selection }}"
state: searched
register: available_updates
- debug:
msg: "{{ _msg.split('\n')[:-1] }}"
vars:
_msg: |
{{ inventory_hostname }} has {{ available_updates.found_update_count }} updates available.
{% for update in updates %}
- {{ update.title }}
{% endfor %}
updates: "{{ (available_updates.updates.values() | list) if (available_updates.updates is mapping) else (available_updates.updates) }}"
when: available_updates.updates is defined
- include_tasks: updates-with-retry.yml
when:
- available_updates.updates is defined
- available_updates.found_update_count > 0
# see https://learn.microsoft.com/en-us/sharepoint/troubleshoot/administration/800703fa-illegal-operation-error
# error code 0x800703FA happens with some updates when user is not logged in
# remove the registry key if added during the update
- include_tasks: force_user_registry.yml
vars:
task_state: absent
when:
- disable_force_unload_registry is defined
- disable_force_unload_registry is not skipped
- disable_force_unload_registry is changed
- name: check for missing updates
win_updates:
server_selection: "{{ win_update_server_selection }}"
state: searched
register: available_updates
- name: list missing updates
debug:
var: available_updates
- name: check to see if update is finished
win_shell: gwmi -Class win32_computersystem -ComputerName 127.0.0.1 | select -ExpandProperty username -ErrorAction Stop
register: logon_status
until: logon_status is success
delay: 10
retries: 100
ignore_errors: yes
when: "'Server' not in ansible_distribution"
- name: reboot windows
win_reboot:
when: "'Server' not in ansible_distribution"