Ubuntu_updates_test.yaml 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. ---
  2. - name: Update packages on Ubuntu servers
  3. hosts: all
  4. gather_facts: yes
  5. become: yes
  6. tasks:
  7. - name: Perform a dist-upgrade.
  8. ansible.builtin.apt:
  9. upgrade: dist
  10. update_cache: yes
  11. - name: Generate list of updated packages
  12. shell: dpkg --list | grep "^ii" | awk '{print $2"="$3}' > /home/ansible@AD.HAGOOD.US/updatesTest.txt
  13. - name: Copy updates list to control node
  14. fetch:
  15. src: /home/ansible@AD.HAGOOD.US/updatesTest.txt
  16. dest: /home/ansible@AD.HAGOOD.US/updatesTest.txt
  17. flat: yes
  18. delegate_to: preprod-group
  19. - name: Check if a reboot is required.
  20. ansible.builtin.stat:
  21. path: /var/run/reboot-required
  22. get_md5: no
  23. register: reboot_required_file
  24. - name: Reboot the server (if required).
  25. ansible.builtin.reboot:
  26. when: reboot_required_file.stat.exists == true
  27. - name: Remove dependencies that are no longer required.
  28. ansible.builtin.apt:
  29. autoremove: yes
  30. - name: Append update and reboot information to a text file
  31. lineinfile:
  32. path: "/path/to/{{ inventory_hostname }}.txt"
  33. line: |
  34. *** Starting Check for Updates ***
  35. Updates installed on {{ ansible_date_time.date }} at {{ ansible_date_time.time }}
  36. Updated Packages:
  37. {% for package in updated_packages.stdout_lines %}
  38. - {{ package }}
  39. {% endfor %}
  40. Update Result: {{ 'Successful' if package_update_result.changed else 'Failed' }}
  41. Reboot Required: {{ 'Yes' if reboot_required.changed else 'No' }}
  42. ***********************************************************
  43. Process_Complete
  44. create: yes
  45. insertafter: EOF
  46. - name: Copy update log to local machine
  47. copy:
  48. src: "/path/to/{{ inventory_hostname }}.txt"
  49. dest: "/local/path/to/{{ inventory_hostname }}.txt"
  50. # - name: Copy update log to network shared drive
  51. # copy:
  52. # src: "/path/to/{{ inventory_hostname }}_update_log.txt"
  53. # dest: "/network/shared/drive/{{ inventory_hostname }}_update_log.txt"