ryandaniels.server_update_reboot

ansible角色-服务器更新重启

Ansible角色用于将服务器更新到最新的软件包,重启服务器,并等待服务器启动。在此之后可以添加更多角色来继续安装/配置服务器。
还可以排除不更新的软件包,仅更新指定的软件包,或安装指定的软件包。
支持Redhat/CentOS和Ubuntu。

可以用于更新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

熔断/幽灵漏洞修复

要修补 Redhat/CentOS 7 和 Ubuntu 16.04,以应对 幽灵漏洞熔断漏洞(CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
来自 Ubuntu 的信息
来自 Redhat 的信息

或者仅使用上述第一个命令修补所有内容。

对于 Redhat/CentOS 7(熔断/幽灵漏洞修复)

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(熔断/幽灵漏洞修复)

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
此命令将使用 raw 模块安装它:

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
此命令将使用 raw 模块安装它:

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.server_update_reboot
许可证
mit
下载
15.9k
拥有者
Ansible all the things