server_update_reboot

ansible-role-server-update-reboot

Роль Ansible для обновления сервера до последних версий пакетов, перезагрузки сервера и ожидания его запуска. После этого можно добавлять другие роли для продолжения установки/настройки сервера.
Также можно исключать пакеты из обновления, обновлять только указанные пакеты или устанавливать указанные пакеты.
Работает с Redhat/CentOS и Ubuntu.

Может использоваться для обновления пакетов для Снижения Уязвимости Meltdown/Spectre для Redhat/CentOS 7 и Ubuntu 16.04

Более подробный пример можно найти в блоге: Использование Ansible для обновления Ubuntu, CentOS и Redhat

Требуется: Ansible 2.7.1 (использует модуль перезагрузки, 2.7.1 исправляет reboot_timeout)

Примечание:
Эта роль может перезагрузить сервер, если есть обновление ядра, и если переменная перезагрузки истинна (перезагрузка - это настройка по умолчанию).

Протестированные дистрибутивы

  • Ubuntu 18.04 / 16.04
  • CentOS & RHEL 7.x

Групповые переменные

./group_vars/centos-dev/proxy.yml
С прокси:

proxy_env:
  http_proxy: http://my.internal.proxy:80
  https_proxy: https://my.internal.proxy:80

Без прокси:

proxy_env: []

Настройки по умолчанию

  • debug_enabled_default: true|false (по умолчанию false)
  • update_default: true|false (по умолчанию true)
  • reboot_default: true|false (по умолчанию true)
  • server_update_reboot_pre_delay: Время (в секундах) ожидания перед выполнением задач в этой роли
  • server_update_reboot_pre_reboot_delay: Время (в секундах) ожидания перед перезагрузкой
  • server_update_reboot_post_reboot_delay: Время (в секундах) ожидания после перезагрузки
  • server_update_reboot_reboot_timeout: Максимальное время (в секундах) ожидания перезагрузки сервера

Переменные для RHEL/CentOS:

  • server_update_yum_exclude_pkgs: строка с именами пакетов, разделенная запятыми, которые нужно исключить из обновления. Можно использовать подстановочные знаки. (по умолчанию [])
  • server_update_yum_install_pkgs: строка с именами пакетов, которые только обновляются. Можно использовать подстановочные знаки. (по умолчанию '*' - все пакеты)

Переменные для Ubuntu:

  • server_update_apt_exclude_default: true|false. Установите true, если используете список исключений ниже (по умолчанию false)
  • server_update_apt_exclude_pkgs: Список пакетов, которые не нужно обновлять (каждый на отдельной строке). Можно использовать подстановочный знак (но используйте ^ для начала совпадения, иначе совпадет много пакетов). (по умолчанию не определено)
  • server_update_apt_default: full|update_specific|install (по умолчанию full)
    • full: обновить все пакеты с помощью "apt-get dist-upgrade"
    • update_specific: обновить только из списка в переменной server_update_apt_install_pkgs
    • install: только установить из списка в переменной server_update_apt_install_pkgs
  • server_update_apt_install_pkgs: Список пакетов для ТОЛЬКО обновления или установки (каждый на отдельной строке). Можно использовать подстановочный знак для совпадения с несколькими пакетами. (по умолчанию не определено)

Пример плейбука server-update-reboot.yml

Пример плейбука обновит/перезагрузит один сервер за раз (используя переменные max_fail_percentage и serial). Если хотите обновить/перезагрузить все сразу, раскомментируйте эти строки.

---
- hosts: '{{inventory}}'
  max_fail_percentage: 0
  serial: 1
  become: yes
  roles:
#  - stop-applications
  - server-update-reboot
#  - server-config-xyz
#  - start-applications

Подготовка

  • установить ansible
  • создать ключи
  • зайти по ssh на клиент, чтобы добавить запись в файл known_hosts
  • настроить authorized_keys для клиентского сервера
  • выполнить команды ansible

Использование

Для Redhat/CentOS/Ubuntu

Используйте все настройки по умолчанию, чтобы обновить, перезагрузить сервер и дождаться его запуска:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev

То же самое, но не перезагружать сервер:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev

Для Redhat/CentOS

Обновить все пакеты, кроме указанных пакетов (для RHEL):

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev

Обновить (или установить) только указанные пакеты (для RHEL):

ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev

Для Ubuntu

Обновить все пакеты, кроме указанных (для Ubuntu):

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=ubuntu-dev server_update_apt_exclude_default=true' --extra-vars '{"server_update_apt_exclude_pkgs": [bash, openssl, ^mysql*, ^openssh*]}' -i hosts-dev

Обновить только указанные пакеты (для Ubuntu):

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode, openssh*]}" -i hosts-dev

Только установить указанные пакеты (для Ubuntu). Будьте осторожны с подстановочными знаками:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=install" --extra-vars "{'server_update_apt_install_pkgs': [bash, openssh-server]}" -i hosts-dev

Снижение Уязвимости Spectre/Meltdown

Чтобы установить патчи для Redhat/CentOS 7 и Ubuntu 16.04 от Spectre и Meltdown (CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
Информация от Ubuntu
Информация от Redhat

Или просто установить патчи для всего, используя первую команду выше.

Для Redhat/CentOS 7 (Снижение Уязвимости Spectre/Meltdown)

ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev

Для Ubuntu 16.04 (Снижение Уязвимости Spectre/Meltdown)

ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode]}" -i hosts-dev

Примечания

RHEL5

Для RHEL/CentOS 5 требуется установить зависимость: python-simplejson
Эта команда будет использовать сырой модуль для его установки:

ansible centos5 -m raw -a "yum install -y python-simplejson" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev

SELinux

Если SELinux включен или работает в разрешительном режиме, нужна зависимость: libselinux-python
Эта команда будет использовать сырой модуль для ее установки:

ansible centos5 -m raw -a "yum install -y libselinux-python" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev
О проекте

Role to update packages on linux and optionally reboot

Установить
ansible-galaxy install ryandaniels/ansible-role-server-update-reboot
Лицензия
mit
Загрузки
15358
Владелец
Ansible all the things