72 lines
2.4 KiB
YAML
72 lines
2.4 KiB
YAML
---
|
|
- name: Cloud Providers System Update Playbook
|
|
hosts: huawei,google,ditigalocean,aws
|
|
become: yes
|
|
gather_facts: yes
|
|
|
|
tasks:
|
|
# Ubuntu/Debian 系统更新 (apt)
|
|
- name: Update apt cache (Ubuntu/Debian)
|
|
apt:
|
|
update_cache: yes
|
|
cache_valid_time: 3600
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Upgrade all packages (Ubuntu/Debian)
|
|
apt:
|
|
upgrade: yes
|
|
autoremove: yes
|
|
autoclean: yes
|
|
when: ansible_os_family == "Debian"
|
|
register: apt_upgrade_result
|
|
|
|
# AWS Linux 系统更新 (dnf)
|
|
- name: Update dnf cache (AWS Linux/RHEL)
|
|
dnf:
|
|
update_cache: yes
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
- name: Upgrade all packages (AWS Linux/RHEL)
|
|
dnf:
|
|
name: "*"
|
|
state: latest
|
|
skip_broken: yes
|
|
when: ansible_os_family == "RedHat"
|
|
register: dnf_upgrade_result
|
|
|
|
# 显示升级结果
|
|
- name: Display apt upgrade results
|
|
debug:
|
|
msg: "APT system upgrade completed. {{ apt_upgrade_result.changed }} packages were updated."
|
|
when: ansible_os_family == "Debian" and apt_upgrade_result is defined
|
|
|
|
- name: Display dnf upgrade results
|
|
debug:
|
|
msg: "DNF system upgrade completed. {{ dnf_upgrade_result.changed }} packages were updated."
|
|
when: ansible_os_family == "RedHat" and dnf_upgrade_result is defined
|
|
|
|
# 检查是否需要重启 (Ubuntu/Debian)
|
|
- name: Check if reboot is required (Ubuntu/Debian)
|
|
stat:
|
|
path: /var/run/reboot-required
|
|
register: debian_reboot_required
|
|
when: ansible_os_family == "Debian"
|
|
|
|
# 检查是否需要重启 (AWS Linux/RHEL)
|
|
- name: Check if reboot is required (AWS Linux/RHEL)
|
|
command: needs-restarting -r
|
|
register: rhel_reboot_required
|
|
failed_when: false
|
|
changed_when: false
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
# 通知重启信息
|
|
- name: Notify if reboot is required (Ubuntu/Debian)
|
|
debug:
|
|
msg: "System reboot is required to complete the update."
|
|
when: ansible_os_family == "Debian" and debian_reboot_required.stat.exists is defined and debian_reboot_required.stat.exists
|
|
|
|
- name: Notify if reboot is required (AWS Linux/RHEL)
|
|
debug:
|
|
msg: "System reboot is required to complete the update."
|
|
when: ansible_os_family == "RedHat" and rhel_reboot_required.rc == 1 |