引言
前段时间自己实现了ansible对接操作系统升级脚本,现将整个项目记录如下,如果项目中存在问题或优化的点,请帮忙指正。本项目运行在RedHat Linux系统。
在我们生产环境中,操作系统的升级由系统升级、服务器重启以及vmtools安装三部分组成。本次项目的目标有两点:
(1)ansible对接操作系统升级脚本实现自动批量升级服务器系统。
(2)系统升级、服务器重启和vmtools安装三部分即可以用统一运行又可各部分独立运行。
存在的难点:在实现中,如何实现服务器重启部分和其余两个部分的衔接。这里需要考虑以下几点:
(1) 如何判断服务器是否需要重启?
(2) 如何判断服务器是否重启成功?
(3) 如何避免服务器重启过程中ansible会话的断开?
具体的实现过程以及难点解决方法将在后续的项目介绍中展示。
项目介绍
图1 项目中playbook的运行流程
在项目中我们创建一个单独的ansible角色,角色名为update_os。整个ansible角色分为检测任务、主机升级任务、重启任务、vmtools安装任务。各任务的功能如下:
(1) 检测任务: 判断主机是否在线。
(2) 主机升级任务: 升级操作系统、记录升级日志、判断升级是否成功。
(3) 重启任务: 判断主机是否升级成功、重启服务器、判读主机重启是否成功。
(4) vmtools安装任务: 安装vmtools、记录安装日志、判断是否安装成功。
各个playbook的内容:
site.yml文件是updata_os角色的入口,使用roles导入update_so角色。
---
- name: update os
gather_facts: no
hosts: test
roles:
- update_os