ansible + tornado + MongoDB

http://blog.csdn.net/smallfish1983/article/details/38078019

照着上面那哥们写的,初学,不要吐血,基本功能实现了。

[email protected]:~/ansible/tornado# tree
.
├── templates
│   ├── index.html
│   └── result.html
└── test.py

[email protected]:~/ansible/tornado# cat test.py

#coding:utf-8

import os.path
import tornado.locale
import tornado.httpserver
import tornado.ioloop  
import tornado.options  
import tornado.web  
from tornado.options import define, options  
import pymongo

define("port", default=8000, help="run on the given port", type=int)

class Application(tornado.web.Application):  
    def __init__(self):  
        #初始化一些东西  
        handlers = [  
            #url匹配  
            (r"/", MainHandler),  
            (r"/index", MainHandler),   
            (r"/result", Module_actionHandler),  
 
        ]  
        settings = dict(  
            #程序设置,字典形式  
            template_path=os.path.join(os.path.dirname(__file__), "templates"),  
            #设置模板文件路径  
            static_path=os.path.join(os.path.dirname(__file__), "static"),  
            #设置静态文件路径,如css\jpg\gif等  
            # ui_modules={"Book": BookModule},  
            #设置ui模块,可以用字典添加多个  
            debug=True,  
        )

tornado.web.Application.__init__(self, handlers, **settings)  
        #传入设置配置

class MainHandler(tornado.web.RequestHandler):  
    #主页函数方法  
    def get(self):  
        #设置get方法函数  
        self.render(  
            "index.html",  
        )

class Module_actionHandler(tornado.web.RequestHandler):  
    #定义模块操作函数方法  
       
 
    def post(self, *args, **kwargs):

pattern = self.get_arguments(‘pattern‘)[0]  
        #获取主机名  
        module_name = self.get_arguments(‘module_name‘)[0]  
        #获取模块名  
        module_args = self.get_arguments(‘module_args‘)[0]  
        #获取参数  
        
        import ansible.runner  
        runner = ansible.runner.Runner(  
            #根据ansible的api来运行脚本  
            module_name = module_name,  
            module_args = module_args, 
            pattern = pattern, 
        )  
        result = runner.run()  
    
        conn = pymongo.Connection("localhost", 27017)
        db = conn["ansible"]
        if type(result) == dict:
           db.ansible.insert(result)       
     
 
        def pars_result(result):  
            # 定义一个判断结果的函数  
            if len(result[‘dark‘])>0:  
                # dark返回不为空则表示操作失败了  
                return result[‘dark‘],‘失败!‘  
            else:  
                return result[‘contacted‘],‘成功!‘  
        result = pars_result(result)

self.render(  
            "result.html", 
            message = result[0],  
            result = result[1]  
        )

if __name__ == "__main__":  
    tornado.options.parse_command_line()  
    http_server = tornado.httpserver.HTTPServer(Application())  
    http_server.listen(options.port)  
    tornado.ioloop.IOLoop.instance().start()

# cat index.html

<!DOCTYPE html>
<html>
    <head><title>ansible </title></head>
    <body>
        <h1>Enter arg bellow:</h1>
        <form method="post" action="/result">
        <p>pattern<br><input type="text" name="pattern"></p>
        <p>module_name<br><input type="text" name="module_name"></p>
        <p>module_args<br><input type="text" name="module_args"></p>
        <input type="submit">
        </form>
    </body>
</html>

# cat result.html

<!DOCTYPE html>
<html>
    <head><title>ansible result</title></head>
    <body>
        <h1>ansible result</h1>
                <p> message: {{message}} </p>
                <p> result: {{result}} </p>
    </body>
</html>

时间: 2024-08-24 00:33:41

ansible + tornado + MongoDB的相关文章

tornado+ansible+twisted+mongodb运维自动化系统开发(三)

又到周末啦~~楼上在装修!!睡不着了.....你懂得! 索性整理一下思路做一个改进版的运维自动化个工具,希望能够实现: 控制主机的初始化:如添加ssh密钥\存储资料库的设置\操作用户和密码 受管主机管理:添加\修改\删除 添加主机的用户名\密码\端口 在后台完成ssh密钥登陆,添加受管主机到存储资料库 playbooks管理:添加\修改\删除 添加一个标准的playbook,方便添加修改 ansible模块管理:添加\修改\删除 模块操作:包含ping\setup\shell\copy4个模块,

tornado+ansible+twisted+mongodb运维自动化系统开发(四)

这周好忙,根据之前的写了个简陋的demo,放在腾讯的云主机上了,大家多交流哈 demo地址 http://203.195.193.251/tornado+ansible+twisted+mongodb运维自动化系统开发(四)

DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客

DigitalOcean 之前买了个便宜的VPS并且在上面搭建了我自己写的博客程序,后来VPS里运行MongoDB经常自己挂掉就索性没理了.直到现在VPS已经过期,服务器被强制关掉了.周末在家索性想着把这个博客程序重新搭建起来. 选择Linode还是云主机(阿里云等等)?阿里云貌似有些贵,而且还有一堆备案的流程.Linode最近推出SSD服务,20刀/月的价格,加量不加价,很是吸引人.但无奈还是花的有些心疼.忽然另外一个VPS服务DigitalOcean(链接含refcode喔)被我无意发现.D

tornado+ansible+twisted+mongodb运维自动化系统开发(二)

源码: #!/usr/bin/env python #coding:utf-8 import os.path import tornado.locale import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, options import pymongo define("port", defa

tornado+ansible+twisted+mongodb运维自动化系统开发(一)

前段时间学习了一下ansible的配置管理(http://blog.csdn.net/column/details/ansible.html   anisble配置工具翻译专栏),感觉很强大,就想着把最近看的tornado和twisted和它结合一下做一个webUI 今天动手做了一个demo,目前大概实现的功能是:添加ansible主机,然后单台运行脚本(后续会把playbook和批量运行加上)在这里做一下记录. 用freemind总结了下思路 下面是demo的截图 添加主机,后台完成清单目录的

tornado+ansible+twisted+mongodb操作和维护系统开发自己主动(一个)

前段时间去了解ansible配置管理(http://blog.csdn.net/column/details/ansible.html   anisble配置工具盒翻译),我感觉很强烈,认为短期内tornado和twisted它是做什么的组合webUI 今天动手做了一个demo,眼下大概实现的功能是:加入ansible主机,然后单台执行脚本(兴许会把playbook和批量执行加上)在这里做一下记录. 用freemind总结了下思路 watermark/2/text/aHR0cDovL2Jsb2c

python tornado+mongodb的使用

tornado 1 tar xvzf tornado-1.2.1.tar.gz 2 cd tornado-1.2.1 3 python setup.py build 4 sudo python setup.py install sudo apt-get install python-pycurl PyMongo sudo pip install pymongo MongoDB cd mongodb-linux-i686-1.4.3/bin ./mongod ./mongo 这期间会提示你安装部分

mongodb 实现关系型数据库中查询某一列 的效果

最近在tornado\mongodb\ansible mongodb中有个find()方法很牛逼,可以将集合中所有的表都传出来,一开始我这么写 class Module_actionHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): coll = self.application.db.waitfish hosts = coll.find({}, {'hostname':1,"_id":0}) mod

大数据系统工具集

Bootstrapping引导:Kickstart.Cobbler.rpmbuild/xen.kvm.lxc.Openstack. Cloudstack.Opennebula.Eucalyplus.RHEV配置类工具:Capistrano.Chef.puppet.func.salstack.Ansible.rundeck监控类工具:Cacti.Nagios(Icinga).Zabbix.基于时间监控前端Grafana.Mtop 日志系统:Logstash.Scribe绘图工具:RRDtool.G