登录 | 立即注册 切换到窄版
查看: 2135|回复: 3

通过Ansible1.9实现web化管理思路

[复制链接]

3

主题

11

帖子

83

积分

版主

Rank: 7Rank: 7Rank: 7

积分
83
发表于 2016-9-18 22:24:57 | 显示全部楼层 |阅读模式
本帖最后由 zhoujian1028 于 2016-9-19 10:19 编辑

本人具备一定的开发能力,所以根据tower思路,开发了简单的ansible web系统,该系统采用PHP语言开发,后端python ansible api ansible1.9版本
目前这版已不在使用,新版本采用python django开发,是运维管理平台其中一个模块

任务执行需要记录每个任务的状态,起止时间,状态,返回值,耗时等,所以就需要一个id记录操作过程
其实我对ansible知识掌握的不足,所以我是对源码新增了task_id,如果只是需要执行结果而不需要过程记录则用callback就行,如果要获取playbook执行过程那么就需要改源码(我所理解的需要改源码),
大牛们肯定会有其他好的办法,我在这里献丑了。。。

1、ansible playbook api 新增taskid  id是数据库中的id
        pb=ansible.playbook.PlayBook(
            playbook = yamlfile,
            stats = stats,
            callbacks = playbook_cb,
            runner_callbacks = runner_cb,
            extra_vars = vars,
            host_list = host_list,
            remote_user = 'ansible',
            remote_port = '22',
            become = True,
            become_method = 'sudo',
            taskid = id      
        )


2、ansible/playbook/__init__.py
     def __init__ 新增
     taskid           = None,


3、ansible/playbook/play.py
    _pb_common = [
        'accelerate', 'accelerate_ipv6', 'accelerate_port', 'any_errors_fatal', 'become',
        'become_method', 'become_user', 'environment', 'force_handlers', 'gather_facts',
        'handlers', 'hosts', 'name', 'no_log', 'remote_user', 'roles', 'serial', 'su',
        'su_user', 'sudo', 'sudo_user', 'tags', 'vars', 'vars_files', 'vars_prompt',
        'vault_password', 'taskid',
    ]

    __slots__ = _pb_common + [
        '_ds', '_handlers', '_play_hosts', '_tasks', 'any_errors_fatal', 'basedir',
        'default_vars', 'included_roles', 'max_fail_pct', 'playbook', 'remote_port',
        'role_vars', 'transport', 'vars_file_vars', 'taskid',
    ]


   def __init__ 下新增
   self.taskid           = ds.get('taskid', None)

4、ansible/callbacks.py 我没有单独写callback插件 直接修改callbacks
主要是把playbook执行的操作记录到文件 比如jobidxxxx xxx就是数据库id
任务执行过程中 可以通过websocket 前端实时显示执行过程

以下截图是旧版本目前 不在使用 新版本基于ansible2.2 界面完全不同

主机组列表,服务器划分区域和模块,对于大量服务器的管理尤为方便


作业模板就是ansible里面的playbook,后缀名为yaml文件
playbook提供了一个操作的集合,可以将一系列的操作放在一个文件中
平台不但提供了yaml的上传,还提供yaml的在线编辑器(语法高亮)



任务列表:将前面编辑好的playbook(作业模板)设置成一个任务包括:
1、 需要执行的主机列表
2、 playbook 任务模板
3、 任务id:作为任务执行状态记录数据库
4、 info 或 debug 日志级别
5、 任务执行者


已完成:已经完成的任务列表
执行中:在执行的任务列表
待执行:串行推送列表,将任务推送到“执行中“去
定时任务:定时执行任务列表,当该任务到执行时间的时候,会推送到“待执行“模块



查看任务的执行情况图




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

1

主题

3

帖子

38

积分

版主

Rank: 7Rank: 7Rank: 7

积分
38
发表于 2016-9-18 23:50:36 | 显示全部楼层
写的不错啊,什么时候能开源
回复 支持 反对

使用道具 举报

1

主题

7

帖子

39

积分

新手上路

Rank: 1

积分
39
发表于 2016-10-6 16:37:45 | 显示全部楼层
兄弟们呐,我安装官方tower为啥报错停止这个服务失败,自检过不去,我用python安装了这个应用依然报错
回复 支持 反对

使用道具 举报

1

主题

7

帖子

39

积分

新手上路

Rank: 1

积分
39
发表于 2016-10-8 14:48:11 | 显示全部楼层
问题解决了。。我也想问,什么时候开源! 哈哈!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Ansible中国社区 ( 京ICP备13038968号

GMT+8, 2017-9-26 04:34 , Processed in 0.064411 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表