千家信息网

ansible + tornado + MongoDB

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,http://blog.csdn.net/smallfish2983/article/details/38078019照着上面那哥们写的,初学,不要吐血,基本功能实现了。root@ubuntu12:~
千家信息网最后更新 2024年11月18日ansible + tornado + MongoDB

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


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




root@ubuntu12:~/ansible/tornado# tree
.
├── templates
│ ├── index.html
│ └── result.html
└── test.py


root@ubuntu12:~/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



ansible

Enter arg bellow:



pattern


module_name


module_args







# cat result.html



ansible result

ansible result


message: `message`


result: `result`





附件:http://down.51cto.com/data/2364907
0