dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2155
  • 铜币12810枚
  • 威望5719点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:395回复:0

Ansible 批量 更新 Ubuntu 内核

楼主#
更多 发布于:2018-03-22 11:09
目标
使用 ansible 为 Ubuntu 服务器,更新内核。
详见. Ubuntu 16.04 内核本地提权漏洞

要点
ansible-playbook 配置文件
1. 使用 apt 模块,进行系统更新。
2. 使用 vars 语句 定义变量
3. 使用 when 语句进行条件判断

环境
请参考这里

配置文件
1. “剧本”文件
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

2. 主机信息
tail  -n 5 /etc/ansible/hosts
[docker]
node1
node2
node3  

命令
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-变量
ansible-条件选择
ansible-apt-module
#
游客

返回顶部