Добавить playbooks/update.yml
This commit is contained in:
@@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
- name: System update for all managed hosts
|
||||||
|
hosts: all
|
||||||
|
become: yes
|
||||||
|
gather_facts: yes
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
# 1. Показываем текущую версию ОС и ядра (для контекста)
|
||||||
|
- name: Show OS and kernel version
|
||||||
|
debug:
|
||||||
|
msg:
|
||||||
|
- "Host: {{ inventory_hostname }}"
|
||||||
|
- "OS: {{ ansible_distribution }} {{ ansible_distribution_version }}"
|
||||||
|
- "Kernel: {{ ansible_kernel }}"
|
||||||
|
|
||||||
|
# 2. Обновляем кэш apt и запоминаем, изменился ли он
|
||||||
|
- name: Update apt cache
|
||||||
|
apt:
|
||||||
|
update_cache: yes
|
||||||
|
cache_valid_time: 3600
|
||||||
|
register: apt_update_result
|
||||||
|
|
||||||
|
- name: Show apt cache update status
|
||||||
|
debug:
|
||||||
|
msg: "Apt cache was {{ 'updated' if apt_update_result.changed else 'already up to date' }}"
|
||||||
|
|
||||||
|
# 3. Получаем список пакетов, которые можно обновить (до обновления)
|
||||||
|
- name: Get list of upgradable packages
|
||||||
|
command: apt list --upgradable
|
||||||
|
register: upgradable_before
|
||||||
|
changed_when: false
|
||||||
|
ignore_errors: yes # если команда недоступна, продолжить
|
||||||
|
|
||||||
|
- name: Show upgradable packages before update
|
||||||
|
debug:
|
||||||
|
var: upgradable_before.stdout_lines
|
||||||
|
when: upgradable_before.stdout_lines | length > 0
|
||||||
|
|
||||||
|
# 4. Выполняем полное обновление (dist-upgrade)
|
||||||
|
- name: Perform dist-upgrade (full upgrade)
|
||||||
|
apt:
|
||||||
|
upgrade: dist
|
||||||
|
autoremove: yes
|
||||||
|
autoclean: yes
|
||||||
|
register: apt_upgrade_result
|
||||||
|
|
||||||
|
# 5. Показываем результат обновления (что изменилось)
|
||||||
|
- name: Show upgrade results
|
||||||
|
debug:
|
||||||
|
msg:
|
||||||
|
- "Packages upgraded: {{ apt_upgrade_result.results | default([]) | map(attribute='packages') | list | flatten | unique | join(', ') if apt_upgrade_result.results is defined else 'No package list available' }}"
|
||||||
|
when: apt_upgrade_result.changed
|
||||||
|
|
||||||
|
# 6. Если изменений не было – сообщаем об этом
|
||||||
|
- name: No packages were upgraded
|
||||||
|
debug:
|
||||||
|
msg: "All packages are up to date."
|
||||||
|
when: not apt_upgrade_result.changed
|
||||||
|
|
||||||
|
# 7. Проверяем, требуется ли перезагрузка (наличие /var/run/reboot-required)
|
||||||
|
- name: Check if reboot is required
|
||||||
|
stat:
|
||||||
|
path: /var/run/reboot-required
|
||||||
|
register: reboot_required_file
|
||||||
|
|
||||||
|
# - name: Reboot if required
|
||||||
|
# reboot:
|
||||||
|
# reboot_timeout: 600
|
||||||
|
# pre_reboot_delay: 30
|
||||||
|
# post_reboot_delay: 30
|
||||||
|
# when: reboot_required_file.stat.exists
|
||||||
|
|
||||||
|
# - name: Reboot not required
|
||||||
|
# debug:
|
||||||
|
# msg: "No reboot required."
|
||||||
|
# when: not reboot_required_file.stat.exists
|
||||||
Reference in New Issue
Block a user