--- - 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