ansible二次开发(完善版)源码分享
前言:
使用技术:
概览:
http://s7/mw690/006IC8q4zy7mux3FVvUe6&690
说明:
1、
登录过程分为认证、token获取。
登录信息存储在postgresql数据库中,分别为创建的登录用户,密码(密码通过md5加密);服务器远程登录用户密码通过base64编码格式进行浅加密,登录成功后,返回用户token并将真实服务器remote_user密码存储至session中,供用户接下来的操作使用。最终实现不需要root密码且不暴露远程连接的用户密码。
远程登录用户必须设置好sudo,不然权限将限定为普通用户。
2、ansible操作
shell:
{
}
setup:
{
}
playbooks:
{
}
二次开发中,分别对shell模块,setup模块,playbook模块进行封装,发送不同json信息,进行不同操作。
3、producer
采用webpy框架封装ansible-api,提供http/https接口,并且以producer注册至rabbitmq中,将每次用户对ansible进行的操作以任务方式发布至rabbitmq中(请勿在producer中使用.get(timeout=10)获取执行结果,不然就变成同步任务,采用celery和rabbitmq进行解耦的目的就无效了)
4、consumer
将ansible操作记录,以文本方式(根据需要选择存储方式)存储至磁盘,通过celery框架注册至rabbitmq中,来处理producer发布的任务。然后将执行结果存储至redis中(存储是string类型,key为celery-task-meta-加任务id)
此记录是为了完善跳板机机制。
一般跳板机会记录所有用户的操作,通过此模块,可以将用户通过ansible对各服务器的操作也记录到远程的跳板机服务器中,达到统一管理操作记录目的。
如果并不在意用户对服务器做了哪些操作或者就将操作记录写在本地,那么可以不用此模块。也就不需要rabbitmq、redis和celery了。
采用postman模拟使用(redis,数据库,rabbitmq都设置好,启动):
1、
2、
3、
http://s12/mw690/006IC8q4zy7mux5iVsveb&690
登录获取token
4、
http://s2/mw690/006IC8q4zy7mux6x3CV31&690
时间请无视,测试环境没做时间同步
5、
http://s16/mw690/006IC8q4zy7mux8CF1d9f&690
wangml 用户对172.16.22.232和172.16.22.252服务器的操作已经记录到对应文件
代码:
https://github.com/1182640071/AnsibleEx2.git

加载中…