diff --git a/playbooks/kernel-update.yml b/playbooks/kernel-update.yml new file mode 100644 index 0000000..2383ea0 --- /dev/null +++ b/playbooks/kernel-update.yml @@ -0,0 +1,57 @@ +--- +- 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 \ No newline at end of file