--- - name: Install client VM updates and reboot as much as needed block: - name: Install Windows updates (looped) tags: update_windows ansible.windows.win_updates: category_names: - CriticalUpdates - DefinitionUpdates - SecurityUpdates - UpdateRollups reboot: true register: update_result retries: 5 delay: 30 until: update_result.reboot_required == false - name: Wait for host to come back online tags: update_windows ansible.builtin.wait_for_connection: timeout: 600 - name: Update all choco packages win_command: choco upgrade all -y tags: update_choco - 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 }}.xml" when: "inventory_hostname in groups['meta-type_client']|default([])" - name: Install Server VM updates and reboot as much as needed tags: update_windows block: - name: Install Windows updates (looped) ansible.windows.win_updates: category_names: - CriticalUpdates - DefinitionUpdates - SecurityUpdates - UpdateRollups reboot: true register: update_result retries: 5 delay: 30 until: update_result.reboot_required == false - name: Wait for host to come back online ansible.builtin.wait_for_connection: timeout: 600 when: "inventory_hostname in groups['meta-type_server']"