[系统开发] 基于Ansible的产品上线系统
前言:
应部门急需,开发了一套基于Ansible Playbook的产品上线系统。由于时间很紧,UI直接套用了之前开发的一套perl cgi模板,后续计划用 django 重新编写。
个人感觉该系统的功能也可以用jenkins实现,只是自己开发的系统可以针对特殊需求进行定制。
1. 系统概述
本系统通过Web管理Ansible Playbook版本上线脚本,支持参数传递、动态显示、并发执行、日志管理。
...
4. 登录系统
用浏览器打开服务器IP的80端口,并用已创建的用户登录:
5. 节点管理
5.1 配置节点
ssh登录系统,修改/etc/ansible/hosts文件
5.2 查看节点列表
节点管理—节点列表
5.3 节点维护
节点管理—节点维护
5.3.1 准备ansible playbook
编写ansible playbook或者playbook role,放入一个目录中,重命名该目录,然后放到/var/www/ansible/playbooks/目录下;
1)对于rsync脚本
请同时定义srcHosts参数和destHosts参数;
# /var/www/ansible/playbooks/rsync/site.yaml
2)对于其它脚本
只需要定义destHosts参数;
# /var/www/ansible/playbooks/install/site.yaml
---
5.3.2 通过UI选择命令
命令列表:
-
页面显示的每个命令对应/var/www/ansible/playbooks/下的同名子目录下的site.yaml文件,
-
site.yaml可以是独立的ansible playbook,也可以是playbook role目录的入口文件。
5.3.3 目标主机和源主机
对于rsync命令,系统要求选择目标主机和源主机;
对于其它命令,只需要选择目标主机;
按键盘CTRL键选择主机或取消选择,支持多选;
5.3.4 执行命令
点击执行,UI会在后台执行该命令、写入log文件,前台则动态显示执行进度;
5.3.5 并发执行命令
每次执行任务的时候,都可以按“返回”键返回,然后执行新的命令。多个命令可以在后台并发执行,用户可以通过日志菜单随时查看日志。
6. 日志管理
6.1 管理日志
日志—管理历史
6.2 Ansible日志
日志—Ansible日志
该页面可以筛选和显示每次执行ansible playbook的日志:
7. 系统配置
修改下述文件后reload httpd:
#vim /var/www/ansible/modules/pmConfig.pm
our $theScriptDir = '/var/www/ansible/playbooks';
our $theTitle = 'Ansible 版本上线系统';
our $theUsersFile = '/var/www/ansible/users/users.txt';
our $theAnsibleHostsFile = '/etc/ansible/hosts';
our $theLogDir = '/var/www/ansible/log';
our $theLogFile = $theLogDir.'/ansible-ui.log';
our $theVersion = '1.0';