Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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'][