From 74b5c802a251a4d09c0695e40c58fd897055f560 Mon Sep 17 00:00:00 2001 From: abrown38 Date: Mon, 26 May 2025 09:20:19 +0100 Subject: [PATCH] win_update changes --- ansible/roles/win_client/tasks/start_menu.yml | 10 ++-- ansible/roles/win_client/templates/newXML.py | 4 +- ansible/roles/win_update/tasks/main.yml | 2 + ansible/roles/win_update/tasks/software.yml | 34 +++++++++++ ansible/roles/win_update/tasks/update.yml | 59 +------------------ 5 files changed, 44 insertions(+), 65 deletions(-) create mode 100644 ansible/roles/win_update/tasks/software.yml diff --git a/ansible/roles/win_client/tasks/start_menu.yml b/ansible/roles/win_client/tasks/start_menu.yml index 2e790a5..2380bf9 100644 --- a/ansible/roles/win_client/tasks/start_menu.yml +++ b/ansible/roles/win_client/tasks/start_menu.yml @@ -43,18 +43,18 @@ block: - name: Copy Python script to target machine ansible.windows.win_template: - src: '{{ script_name }}' - dest: '{{ script_path }}' + src: "{{ script_name }}" + dest: "{{ script_path }}" force: true - name: Copy current XML to backup location win_copy: remote_src: true - src: '{{ start_menu_xml }}' - dest: '{{ backup_xml }}' + src: "{{ start_menu_xml }}" + dest: "{{ backup_xml }}" - name: Run Python script on remote machine - win_command: python "{{ script_path }}" + win_command: python {{ script_path }} - name: Update Group Policy win_shell: gpupdate /force /boot /logoff diff --git a/ansible/roles/win_client/templates/newXML.py b/ansible/roles/win_client/templates/newXML.py index 3140631..48a55b0 100644 --- a/ansible/roles/win_client/templates/newXML.py +++ b/ansible/roles/win_client/templates/newXML.py @@ -3,8 +3,8 @@ import shutil import re import xml.etree.ElementTree as ET -original_xml = "{{ start_menu_xml }}" -backup_xml = "{{ backup_xml }}" +original_xml = r"{{ start_menu_xml }}" +backup_xml = r"{{ backup_xml }}" # This script assumes backup and copying already handled by Ansible diff --git a/ansible/roles/win_update/tasks/main.yml b/ansible/roles/win_update/tasks/main.yml index 1884f4b..7d0c5b5 100644 --- a/ansible/roles/win_update/tasks/main.yml +++ b/ansible/roles/win_update/tasks/main.yml @@ -1,2 +1,4 @@ --- - import_tasks: update.yml +- import_tasks: software.yml + when: "inventory_hostname in groups['meta-type_client']|default([])" diff --git a/ansible/roles/win_update/tasks/software.yml b/ansible/roles/win_update/tasks/software.yml new file mode 100644 index 0000000..e163ed2 --- /dev/null +++ b/ansible/roles/win_update/tasks/software.yml @@ -0,0 +1,34 @@ +--- +- name: Update all choco packages + tags: update_choco + block: + - name: Run Chocolatey upgrade (allow failure, don't mark as failed) + win_shell: | + choco upgrade all -y --ignore-checksums --failonunfound --continue-on-failure + register: choco_result + ignore_errors: true + + - name: Show Chocolatey output + debug: + var: choco_result + +- name: Update Start Menu Shortcuts in XML on remote Windows machines + tags: update_start_menu + block: + - name: Copy current XML to backup location + win_copy: + remote_src: true + src: "{{ start_menu_xml }}" + dest: "{{ backup_xml }}" + force: true + + - name: Run Python script on remote machine + win_command: python {{ script_path }} + + rescue: + - name: Restore backup XML + win_copy: + remote_src: true + src: "{{ backup_xml }}" + dest: "{{ start_menu_xml }}" + force: true \ No newline at end of file diff --git a/ansible/roles/win_update/tasks/update.yml b/ansible/roles/win_update/tasks/update.yml index bf74567..b72dac4 100644 --- a/ansible/roles/win_update/tasks/update.yml +++ b/ansible/roles/win_update/tasks/update.yml @@ -1,6 +1,6 @@ --- - name: Install all updates and reboot as many times as needed - tags: update_windows1 + tags: update_windows block: - name: Install Windows updates (looped) ansible.windows.win_updates: @@ -11,60 +11,3 @@ delay: 30 until: update_result.reboot_required == false - - name: Wait for host to come back online - ansible.builtin.wait_for_connection: - timeout: 600 - -- name: Install all Windows updates and reboot if required - tags: update_windows - block: - - name: Install Windows updates (no auto reboot) - ansible.windows.win_updates: - category_names: '*' - reboot: false - register: update_result - - - name: Reboot the machine if updates require it - ansible.windows.win_reboot: - when: update_result.reboot_required - - - name: Wait for the host to come back online - ansible.builtin.wait_for_connection: - timeout: 600 - -- name: Update all choco packages - tags: update_choco - block: - - name: Run Chocolatey upgrade (allow failure, don't mark as failed) - win_command: choco upgrade all -y --ignore-checksums --failonunfound --continue-on-failure - register: choco_result - ignore_errors: true - failed_when: false # << This prevents Ansible from treating it as a failed task - - - name: Show Chocolatey output - debug: - var: choco_result - -- name: Update Start Menu Shortcuts in XML on remote Windows machines - tags: update_start_menu - block: - - name: Copy Python script to target machine - ansible.windows.win_template: - src: "{{ script_name }}" - dest: "{{ script_path }}" - force: true - - - name: Copy current XML to backup location - win_copy: - remote_src: true - src: "{{ start_menu_xml }}" - dest: "{{ backup_xml }}" - - - name: Run Python script on remote machine - win_command: python "{{ script_path }}" - register: output - - - name: debug - debug: - var: output -