Ansible 批量更新 Ubuntu 内核
2018-03-22 by dongnan
目标
- 使用
ansible
为Ubuntu
服务器,更新内核。 - 解决安全漏洞,详见
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",