예제 #1
0
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})
예제 #2
0
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))
예제 #3
0
파일: views.py 프로젝트: BoonyaPython/oms
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)) 
예제 #4
0
파일: views.py 프로젝트: Elivis/opsa-master
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)) 
예제 #5
0
파일: views.py 프로젝트: whantt/opsa-master
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))