def role_run(request, pk): role = AnsibleRole.objects.select_related('role_user').get(id=pk) main_file = os.path.join(settings.ANSIBLE_ROLE_PATH, role.playbook_name, 'site.yml') if request.method == 'GET': content = '' with open(main_file, 'r') as f: for line in f.readlines(): content = content + line return JsonResponse({ 'code': 200, 'content': content, 'playbook_name': role.playbook_name }) elif request.method == 'POST': redis_conn = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, settings.REDIS_DB) unique_key = role.playbook_name if redis_conn.exists(unique_key): return JsonResponse({'msg': ['有相同的任务正在执行,请稍后再试'], 'code': 403}) else: group_ids = request.POST.getlist('group_ids') try: res = get_playbook_res(group_ids, main_file) return JsonResponse({'code': 200, 'msg': res}) except Exception as e: return JsonResponse({ 'code': 500, 'msg': ['playbook执行失败:{}'.format(e)] }) finally: redis_conn.delete(unique_key)
def playbook_run(request, pk): playbook = AnsiblePlaybook.objects.select_related('playbook_user').get( id=pk) if request.method == 'GET': content = playbook.playbook_content return JsonResponse({'code': 200, 'content': content}) elif request.method == 'POST': redis_conn = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, settings.REDIS_DB) unique_key = playbook.playbook_name if redis_conn.exists(unique_key): return JsonResponse({'msg': ['有相同的任务正在执行,请稍后再试'], 'code': 403}) else: group_ids = request.POST.getlist('group_ids') try: res = get_playbook_res(group_ids, playbook.playbook_file.path) return JsonResponse({'code': 200, 'msg': res}) except Exception as e: return JsonResponse({ 'code': 500, 'msg': ['playbook执行失败:{}'.format(e)] }) finally: redis_conn.delete(unique_key)
def __init__(self, message): super(GuacamoleThread, self).__init__() self._stop_event = threading.Event() self.message = message self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 9) self.read_lock = threading.RLock() self.write_lock = threading.RLock()
def __init__(self, *args, **kwargs): super(PlayBookResultsCollector, self).__init__(*args, **kwargs) self.task_skipped = [] self.task_failed = [] self.task_status = {} self.task_unreachable = [] self.task_ok = [] self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 8) self.channel_key = self.unique_key
def __init__(self, message): super(GuacamoleThread, self).__init__() self._stop_event = threading.Event() self.start_time = time.time() self.current_time = time.strftime(settings.TIME_FORMAT) self.message = message self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 9) self.read_lock = threading.RLock() self.write_lock = threading.RLock() self.txt = []
def __init__(self, *args, **kwargs): super(DeployConsumer, self).__init__(*args, **kwargs) self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 5) self.deploy_results = [] self.config = None self.d_type = None self.release_name = None self.release_desc = None self.host_list = None self.branch_tag = None
def run_module(request): if request.method == 'POST': gen_resource = GenResource() redis_conn = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, settings.REDIS_DB) remote_ip = request.META['REMOTE_ADDR'] group_ids = request.POST.getlist('hostGroup') host_ids = request.POST.getlist('ans_group_hosts') if group_ids == ['custom'] or group_ids == ['all']: resource = gen_resource.gen_host_list(host_ids) else: resource = gen_resource.gen_group_dict(group_ids) host_list = [ ServerAssets.objects.get(id=host_id).assets.asset_management_ip for host_id in host_ids ] selected_module_name = request.POST.get('ansibleModule') custom_model_name = request.POST.get('customModule') module_name = selected_module_name if selected_module_name != 'custom' else custom_model_name module_args = request.POST.get('ansibleModuleArgs') unique_key = '{}.{}.{}'.format(host_ids, module_name, module_args) if redis_conn.exists(unique_key): return JsonResponse({'msg': ['有相同的任务正在执行,请稍后再试'], 'code': 403}) else: try: redis_conn.set(unique_key, 1) ans = ANSRunner(resource, become='yes', become_method='sudo', become_user='******') ans.run_module(host_list=host_list, module_name=module_name, module_args=module_args) res = ans.get_model_result() return JsonResponse({'code': 200, 'msg': res}) except Exception as e: return JsonResponse({ 'code': 500, 'msg': ['任务执行失败:{}'.format(e)] }) finally: redis_conn.delete(unique_key) inventory = AnsibleInventory.objects.prefetch_related('ans_group_hosts') hosts = ServerAssets.objects.select_related('assets') return render(request, 'task/run_module.html', locals())
def __init__(self, *args, **kwargs): super(AnsPlaybookConsumer, self).__init__(*args, **kwargs) self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 4) self.ans_info = None
def __init__(self, *args, **kwargs): super(ModelResultsCollector, self).__init__(*args, **kwargs) self.redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 7) self.channel_key = self.unique_key self.module_results = []
def get_redis_instance(): redis_instance = RedisOps(settings.REDIS_HOST, settings.REDIS_PORT, 7) return redis_instance