Move ansible to it's own directory structure
This commit is contained in:
121
ansible/playbooks/update-linux-os.yml
Normal file
121
ansible/playbooks/update-linux-os.yml
Normal file
@@ -0,0 +1,121 @@
|
||||
---
|
||||
- name: Linux OS Upgrade
|
||||
hosts: all
|
||||
gather_facts: true
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
- name: Update all packages
|
||||
ansible.builtin.package:
|
||||
name: '*'
|
||||
state: latest
|
||||
update_cache: true
|
||||
|
||||
- name: Upgrade Debian and Ubuntu systems with apt
|
||||
when: ansible_os_family == "Debian"
|
||||
block:
|
||||
- name: Dist-upgrade
|
||||
ansible.builtin.apt:
|
||||
upgrade: dist
|
||||
update_cache: true
|
||||
register: upgrade_result
|
||||
|
||||
- name: Debain check if reboot is required
|
||||
ansible.builtin.shell: "[ -f /var/run/reboot-required ]"
|
||||
failed_when: false
|
||||
register: debian_reboot_required
|
||||
changed_when: debian_reboot_required.rc == 0
|
||||
notify:
|
||||
- Reboot server
|
||||
|
||||
- name: Debian remove unneeded dependencies
|
||||
ansible.builtin.apt:
|
||||
autoremove: true
|
||||
register: autoremove_result
|
||||
|
||||
- name: Debian print errors if upgrade failed
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
Upgrade Result: {{ upgrade_result }}
|
||||
Autoremove Result: {{ autoremove_result }}
|
||||
|
||||
- name: Upgrade RHEL systems with DNF
|
||||
when: ansible_os_family == "RedHat" and not (ansible_distribution_major_version == "7")
|
||||
block:
|
||||
- name: Get packages that can be upgraded with DNF
|
||||
ansible.builtin.dnf:
|
||||
list: upgrades
|
||||
state: latest
|
||||
update_cache: true
|
||||
register: reg_dnf_output_all
|
||||
|
||||
- name: List packages that can be upgraded with DNF
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ reg_dnf_output_all.results | map(attribute='name') | list }}"
|
||||
|
||||
- name: Upgrade packages with DNF
|
||||
become: true
|
||||
ansible.builtin.dnf:
|
||||
name: '*'
|
||||
state: latest
|
||||
update_cache: true
|
||||
update_only: false
|
||||
register: reg_upgrade_ok
|
||||
|
||||
- name: Print DNF errors if upgrade failed
|
||||
ansible.builtin.debug:
|
||||
msg: "Packages upgrade failed"
|
||||
when: reg_upgrade_ok is not defined
|
||||
|
||||
- name: Install dnf-utils
|
||||
when: reg_dnf_output_all is defined
|
||||
become: true
|
||||
ansible.builtin.dnf:
|
||||
name: 'dnf-utils'
|
||||
state: latest
|
||||
update_cache: true
|
||||
|
||||
- name: Upgrade legacy RHEL systems with YUM
|
||||
when: ansible_os_family == "RedHat" and ansible_distribution_major_version == "7"
|
||||
block:
|
||||
- name: Get packages that can be upgraded with YUM
|
||||
ansible.builtin.yum:
|
||||
list: upgrades
|
||||
state: latest
|
||||
update_cache: true
|
||||
register: reg_yum_output_all
|
||||
|
||||
- name: List packages that can be upgraded with YUM
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ reg_yum_output_all.results | map(attribute='name') | list }}"
|
||||
|
||||
- name: Upgrade packages with YUM
|
||||
become: true
|
||||
ansible.builtin.yum:
|
||||
name: '*'
|
||||
state: latest
|
||||
update_cache: true
|
||||
update_only: false
|
||||
register: reg_yum_upgrade_ok
|
||||
|
||||
- name: Print YUM errors if upgrade failed
|
||||
ansible.builtin.debug:
|
||||
msg: "Packages upgrade failed"
|
||||
when: reg_yum_upgrade_ok is not defined
|
||||
|
||||
- name: Check legacy RHEL system if a reboot is required
|
||||
become: true
|
||||
ansible.builtin.command: needs-restarting -r
|
||||
register: reg_reboot_required
|
||||
ignore_errors: true
|
||||
failed_when: false
|
||||
changed_when: reg_reboot_required.rc != 0
|
||||
notify:
|
||||
- Reboot server
|
||||
|
||||
handlers:
|
||||
- name: Reboot server
|
||||
ansible.builtin.reboot:
|
||||
msg: "Reboot initiated by Ansible after OS update"
|
||||
reboot_timeout: 3600
|
||||
test_command: uptime
|
||||
Reference in New Issue
Block a user