def module_deploy(request): """ deploy (nginx/php/mysql..etc) module """ ret = [] jid = [] user = request.user if request.method == 'POST': action = request.get_full_path().split('=')[1] if action == 'deploy': tgt = request.POST.get('tgt') arg = request.POST.getlist('module') tgtcheck = HostList.objects.filter(hostname=tgt) if tgtcheck: Message.objects.create(type='salt', action='deploy', action_ip=tgt, content='saltstack %s module depoy' % (arg)) sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) db = db_operate() if 'sysinit' in arg: obj = sapi.async_deploy(tgt, arg[-1]) # 先执行初始化模块,其他任意 sysinit 在最后的模块 sql = "insert INTO salt_returns VALUES(%s) " % obj print (sql) jid.append(obj) arg.remove('sysinit') if arg: for i in arg: obj = sapi.async_deploy(tgt, i) jid.append(obj) else: for i in arg: obj = sapi.async_deploy(tgt, i) sql = "insert INTO salt_returns VALUES(%s) " % obj db.mysql_command(settings.OMS_MYSQL, sql) jid.append(obj) msg = '%s deploy %s module success,jid is %s' % (tgt, i, obj) ret.append(msg) # db = db_operate() # for i in jid: # # time.sleep(10) # sql = 'select returns from salt_returns where returns=%s' # result=db.select_table(settings.OMS_MYSQL,sql,str(i)) #通过jid获取执行结果 # print result # ret.extend(result) # sapi.async_deploy('test-01','zabbix.api') #调用zabbix.api执行模块监控 else: ret = '亲,目标主机不对,请重新输入' return render(request, 'salt_module_deploy.html', {'ret': ret})
def module_deploy(request): """ deploy (nginx/php/mysql..etc) module """ ret = [] jid = [] user = request.user if request.method == 'POST': action = request.get_full_path().split('=')[1] if action == 'deploy': tgt = request.POST.get('tgt') arg = request.POST.getlist('module') tgtcheck = HostList.objects.filter(hostname=tgt) if tgtcheck: Message.objects.create(type='salt', action='deploy', action_ip=tgt, content='saltstack %s module depoy' % (arg)) sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) if 'sysinit' in arg: obj = sapi.async_deploy(tgt, arg[-1]) #先执行初始化模块,其他任意 jid.append(obj) arg.remove('sysinit') if arg: for i in arg: obj = sapi.async_deploy(tgt, i) jid.append(obj) else: for i in arg: obj = sapi.async_deploy(tgt, i) jid.append(obj) db = db_operate() for i in jid: time.sleep(10) sql = 'select returns from salt_returns where jid=%s' result = db.select_table(settings.RETURNS_MYSQL, sql, str(i)) #通过jid获取执行结果 ret.append(result) #sapi.async_deploy('test-01','zabbix.api') #调用zabbix.api执行模块监控 else: ret = '亲,目标主机不对,请重新输入' return render_to_response('salt_module_deploy.html', {'ret': ret}, context_instance=RequestContext(request))
def module_deploy(request): """ deploy (nginx/php/mysql..etc) module """ ret = [] jid = [] user = request.user if request.method == 'POST': action = request.get_full_path().split('=')[1] if action == 'deploy': tgt = request.POST.get('tgt') arg = request.POST.getlist('module') tgtcheck = HostList.objects.filter(hostname=tgt) if tgtcheck: Message.objects.create(type='salt', action='deploy', action_ip=tgt, content='saltstack %s module depoy' % (arg)) sapi = SaltAPI(url=settings.SALT_API['url'],username=settings.SALT_API['user'],password=settings.SALT_API['password']) if 'sysinit' in arg: obj = sapi.async_deploy(tgt,arg[-1]) #先执行初始化模块,其他任意 jid.append(obj) arg.remove('sysinit') if arg: for i in arg: obj = sapi.async_deploy(tgt,i) jid.append(obj) else: for i in arg: obj = sapi.async_deploy(tgt,i) jid.append(obj) db = db_operate() for i in jid: time.sleep(10) sql = 'select returns from salt_returns where jid=%s' result=db.select_table(settings.RETURNS_MYSQL,sql,str(i)) #通过jid获取执行结果 ret.append(result) #sapi.async_deploy('test-01','zabbix.api') #调用zabbix.api执行模块监控 else: ret = '亲,目标主机不对,请重新输入' return render_to_response('salt_module_deploy.html', {'ret': ret},context_instance=RequestContext(request))
def module_deploy(request): ret = [] ret_err = '' jid = [] if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] user = request.user hostlists = HostList.objects.all() if request.method == 'POST': action = request.get_full_path().split('=')[1] tgt = request.POST.getlist('tgt') if len(tgt) == 0: ret_err = "目标主机不能为空" else: ret_err ="" if action == 'deploy': arg = request.POST.getlist('module') #Message.objects.create(type='salt', action='deploy', action_ip=tgt, content='saltstack %s module depoy' % (arg)) sapi = SaltAPI(url=settings.SALT_API['url'],username=settings.SALT_API['user'],password=settings.SALT_API['password']) for host in tgt: if 'sysinit' in arg: obj = sapi.async_deploy(host,arg[-1]) #先执行初始化模块,其他任意 jid.append(obj) joblist.objects.create(fun='sysinit',tgt=host,status='2',jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s sysinit_jid %s' % (host,obj)) arg.remove('sysinit') if arg: for i in arg: obj = sapi.async_deploy(host,i) jid.append(obj) joblist.objects.create (fun=i,tgt=host,status='2',jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s %s_jid %s' % (host,i,obj)) else: if arg: for i in arg: obj = sapi.async_deploy(host,i) jid.append(obj) joblist.objects.create (fun=i,tgt=host,status='2',jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s %s_jid %s' % (host,i,obj)) #return HttpResponseRedirect(reverse('job_list')) elif action == 'sysinit': #tgt = request.POST.getlist('tgt') arg = 'sysinit' #tgtcheck = HostList.objects.filter(hostname=tgt) sapi = SaltAPI(url=settings.SALT_API['url'],username=settings.SALT_API['user'],password=settings.SALT_API['password']) for h in tgt: #Message.objects.create(type='salt-module', action='os_init', action_ip=ip, username=user, content='%s %s_jid %s' % (host,i,obj)) sapi.accept_key(h) #sapi.remote_noarg_execution(h,'test.ping') install_ret = SystemInstall.objects.filter(hostname=h) for each_ret in install_ret: sroom_id = each_ret.sroom_id if sroom_id: arg = "sysinit_"+str(sroom_id) obj = sapi.async_deploy(h,arg) SystemInstall.objects.filter(hostname=h).delete() #安装后,装机列表此IP信息删除,转让到安装记录里供审计 Message.objects.create(type='installed', action='os_init', action_ip=ip, username=user, content='%s acceptkey_%s_del_sysinstall' % (h,arg)) #Message.objects.create(type='salt', action=arg, action_ip=h, content='已经初始化') #time.sleep(5) #obj = sapi.async_deploy(h,arg) #先执行初始化模块,其他任意 #jid.append(obj) joblist.objects.create (fun=arg,tgt=h,status='2',jid=obj) return HttpResponseRedirect(reverse('job_list')) return render_to_response('salt_module_deploy.html',{'ret': ret,'hostlists': hostlists,'ret_err':ret_err,'jid':jid,'request':request},context_instance=RequestContext(request))
def module_deploy(request): ret = [] ret_err = '' jid = [] if request.META.has_key('HTTP_X_FORWARDED_FOR'): ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] user = request.user hostlists = HostList.objects.all() if request.method == 'POST': action = request.get_full_path().split('=')[1] tgt = request.POST.getlist('tgt') if len(tgt) == 0: ret_err = "目标主机不能为空" else: ret_err = "" if action == 'deploy': arg = request.POST.getlist('module') #Message.objects.create(type='salt', action='deploy', action_ip=tgt, content='saltstack %s module depoy' % (arg)) sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) for host in tgt: if 'sysinit' in arg: obj = sapi.async_deploy(host, arg[-1]) #先执行初始化模块,其他任意 jid.append(obj) joblist.objects.create(fun='sysinit', tgt=host, status='2', jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s sysinit_jid %s' % (host, obj)) arg.remove('sysinit') if arg: for i in arg: obj = sapi.async_deploy(host, i) jid.append(obj) joblist.objects.create(fun=i, tgt=host, status='2', jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s %s_jid %s' % (host, i, obj)) else: if arg: for i in arg: obj = sapi.async_deploy(host, i) jid.append(obj) joblist.objects.create(fun=i, tgt=host, status='2', jid=obj) Message.objects.create(type='salt-module', action='deploy', action_ip=ip, username=user, content='%s %s_jid %s' % (host, i, obj)) #return HttpResponseRedirect(reverse('job_list')) elif action == 'sysinit': #tgt = request.POST.getlist('tgt') arg = 'sysinit' #tgtcheck = HostList.objects.filter(hostname=tgt) sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) for h in tgt: #Message.objects.create(type='salt-module', action='os_init', action_ip=ip, username=user, content='%s %s_jid %s' % (host,i,obj)) sapi.accept_key(h) #sapi.remote_noarg_execution(h,'test.ping') install_ret = SystemInstall.objects.filter(hostname=h) for each_ret in install_ret: sroom_id = each_ret.sroom_id if sroom_id: arg = "sysinit_" + str(sroom_id) obj = sapi.async_deploy(h, arg) SystemInstall.objects.filter( hostname=h).delete() #安装后,装机列表此IP信息删除,转让到安装记录里供审计 Message.objects.create( type='installed', action='os_init', action_ip=ip, username=user, content='%s acceptkey_%s_del_sysinstall' % (h, arg)) #Message.objects.create(type='salt', action=arg, action_ip=h, content='已经初始化') #time.sleep(5) #obj = sapi.async_deploy(h,arg) #先执行初始化模块,其他任意 #jid.append(obj) joblist.objects.create(fun=arg, tgt=h, status='2', jid=obj) return HttpResponseRedirect(reverse('job_list')) return render_to_response('salt_module_deploy.html', { 'ret': ret, 'hostlists': hostlists, 'ret_err': ret_err, 'jid': jid, 'request': request }, context_instance=RequestContext(request))