57 lines
1.9 KiB
YAML
57 lines
1.9 KiB
YAML
---
|
|
- name: Automatic kernel update with reboot (excluding AWX server)
|
|
hosts: all:!awx
|
|
become: yes
|
|
gather_facts: yes
|
|
|
|
tasks:
|
|
# 1. Текущая версия ядра
|
|
- name: Get current kernel version
|
|
command: uname -r
|
|
register: kernel_before
|
|
changed_when: false
|
|
|
|
# 2. Выводим в логи, что начинаем обновление
|
|
- name: Show current kernel
|
|
debug:
|
|
msg: "Current kernel on {{ inventory_hostname }}: {{ kernel_before.stdout }}"
|
|
|
|
# 3. Обновление всех пакетов (включая ядро)
|
|
- name: Update all packages (dist-upgrade)
|
|
apt:
|
|
upgrade: dist
|
|
autoremove: yes
|
|
autoclean: yes
|
|
register: apt_result
|
|
|
|
# 4. Новая версия ядра
|
|
- name: Get new kernel version after update
|
|
command: uname -r
|
|
register: kernel_after
|
|
changed_when: false
|
|
ignore_errors: yes
|
|
|
|
# 5. Проверяем, изменилось ли ядро
|
|
- name: Check if kernel version changed
|
|
set_fact:
|
|
kernel_updated: "{{ kernel_before.stdout != kernel_after.stdout }}"
|
|
|
|
# 6. Выводим информацию о результате
|
|
- name: Show kernel update status
|
|
debug:
|
|
msg: "Kernel on {{ inventory_hostname }} {{ 'was updated' if kernel_updated else 'is already up to date' }}"
|
|
when: kernel_after.stdout is defined
|
|
|
|
# 7. Перезагрузка, если ядро обновлено
|
|
- name: Reboot if kernel was updated
|
|
reboot:
|
|
reboot_timeout: 600
|
|
pre_reboot_delay: 30
|
|
post_reboot_delay: 60
|
|
when: kernel_updated
|
|
|
|
# 8. Сообщаем о завершении (опционально, для логов)
|
|
- name: Kernel update completed
|
|
debug:
|
|
msg: "Kernel update process finished on {{ inventory_hostname }}"
|
|
when: kernel_updated |