跳转至

Ansible 批量更新 Ubuntu 内核


2018-03-22 by dongnan

目标

  • 使用 ansibleUbuntu 服务器,更新内核。
  • 解决安全漏洞,详见 Ubuntu 16.04 内核本地提权漏洞

要点

ansible-playbook 配置文件

  • 使用 apt 模块,进行系统更新。
  • 使用 vars 语句 定义变量。
  • 使用 when 语句进行条件判断。

环境

参考这里

配置文件

playbook 文件

cat upgrade_kernel.yml

---
- hosts: docker
  remote_user: root
  vars:
    kernel_version: "4.4.0-117-generic"
  tasks:
    - name: upgrade kernel
      apt:
        name: linux-image-generic
        state: latest
        update_cache: yes

    - name: "verify kernel"
      command: uname -r

    - name: "reboot system"
      command: /sbin/reboot
      when: ansible_kernel != kernel_version

#    - name: Upgrade all packages to the latest version
#      apt:
#        name: "*"
#        state: latest 

主机信息

tail  -n 5 /etc/ansible/hosts

[docker]
node1
node2
node3

执行 playbook

ansible-playbook upgrade_kernel.yml

PLAY [docker] ******************************************************************
# ...省略
TASK [reboot system] ***********************************************************
skipping: [node1]
skipping: [node2]
skipping: [node3]

PLAY RECAP *********************************************************************
node1                      : ok=3    changed=1    unreachable=0    failed=0  
node2                      : ok=3    changed=1    unreachable=0    failed=0  
node3                      : ok=3    changed=1    unreachable=0    failed=0   

扩展

如何获得 ansible 的预定义环境变量

举个例子: 获得 ubuntu 系统的内核版本,返回值,ansible_kernel 就是我们需要的环境变量。

ansible node1 -m setup > var.txt
grep -i 'kernel' var.txt
"ansible_kernel": "4.4.0-117-generic",

参考

ansible-apt-module

回到页面顶部