def host_test(self, serializer, hosts, all_hostname): x = 1 # all_username = serializer.data['host_username'].split(',') # all_password = serializer.data['host_password'].split(',') # all_hostname = serializer.data['hostname'].split(',') # all_ip = serializer.data['hostip'].split(',') # all_port = serializer.data['hostport'].split(',') # hosts = [] # for i in range(len(all_ip)): # host = {'username': all_username[i], 'password': all_password[i], 'ip': all_ip[i], 'port': all_port[i], 'hostname': all_hostname[i]} # hosts.append(host) resource = dict() resource['test'] = dict() resource['test']['hosts'] = hosts rbt = ANSRunner(resource) # rbt.run_model(host_list=[hostname, ], module_name='ping', module_args="") rbt.run_model(host_list=all_hostname, module_name='ping', module_args="") data = rbt.get_model_result() return data
def get_host_info(self): """ 获取所有远程主机的状态 :return: data_dicts """ hosts = [] hostnames = [] all_hosts = Host.objects.all() for host in all_hosts: host = dict(host) hosts.append(host) hostnames.append(host['hostname']) resource = dict() resource['test'] = dict() resource['test']['hosts'] = hosts rbt = ANSRunner(resource) # rbt.run_model(host_list=[hostname, ], module_name='ping', module_args="") rbt.run_model(host_list=hostnames, module_name='setup', module_args="filter=ansible_*_mb") data_dicts = rbt.get_model_result() return data_dicts
def ad_hoc(request): ''' /hosts/adhoc 前端为一个复选框和一个输入框 复选框是用户主机,传值为主机ip 输入框为输入的命令,如:'ls /' :param request: :return: ''' hosts = request.POST.getlist('host[]') module_args = request.POST['module_args'] resource = make_resource(hosts) rbt = ANSRunner(resource) rbt.run_model(host_list=hosts,module_name='shell',module_args=module_args) res = rbt.get_model_result() # data = dict() # success_hosts = res['success'].keys() # unreach_hosts = res['unreachable'].keys() # failed_hosts = res['failed'].keys() # # for success_host in success_hosts: # data[success_host] = res['success'][success_host]['stdout'] # # for failed_host in failed_hosts: # data[failed_host] = res['failed'][failed_host]['stderr'] # # for unreach_host in unreach_hosts: # data[unreach_host] = res['unreachable'][unreach_host]['msg'] return JsonResponse(res)
def play_book(request): ''' /hosts/playbook 前端为两个复选框, 第一个复选框是主机复选框,传值为主机的ip 第二个复选框 是需要安装的环境 :param request: :return: ''' hosts = request.POST.getlist('host[]') installs = request.POST.getlist('install[]') resource = make_resource(hosts) rbt = ANSRunner(resource) res = dict() for insta in installs: playbook_path = '../pycharm_project_205/taskdo/utils/base/install_' + insta rbt.run_playbook(playbook_path=playbook_path) data = rbt.get_playbook_result() res[insta] = data return JsonResponse(res)
def host_test(self, serializer, hosts, all_hostname): resource = dict() resource['test'] = dict() resource['test']['hosts'] = hosts rbt = ANSRunner(resource) # rbt.run_model(host_list=[hostname, ], module_name='ping', module_args="") rbt.run_model(host_list=all_hostname, module_name='ping', module_args="") data = rbt.get_model_result() return data
def ad_hoc(request): ''' /hosts/adhoc 前端为一个复选框和一个输入框 复选框是用户主机,传值为主机ip 输入框为输入的命令,如:'ls /' :param request: :return: ''' hosts = request.POST.getlist('host[]') module_args = request.POST['module_args'] resource = make_resource(hosts) rbt = ANSRunner(resource) rbt.run_model(host_list=hosts, module_name='shell', module_args=module_args) res = rbt.get_model_result() return JsonResponse(res)
while 1: hosts = [] hostnames = [] all_hosts = Host.objects.all() for host in all_hosts: host = dict(host) hosts.append(host) hostnames.append(host['hostname']) resource = dict() resource['test'] = dict() resource['test']['hosts'] = hosts rbt = ANSRunner(resource) # rbt.run_model(host_list=[hostname, ], module_name='ping', module_args="") rbt.run_model(host_list=hostnames, module_name='setup', module_args="filter=ansible_*_mb") data = rbt.get_model_result() for hostname in hostnames: host = Host.objects.filter(hostname=hostname)[0] hostname = hostname.replace('.', '_') try: freememory = data['success'][hostname]['ansible_facts'][ 'ansible_memfree_mb'] host.freememory = freememory allmemory = data['success'][hostname]['ansible_facts'][