def run_module(self, host_list, module_name, module_args): """ run module from ansible ad-hoc. """ self.callback = ModelResultsCollector() play_source = dict( name="Ansible Play", hosts=host_list, gather_facts='no', tasks=[dict(action=dict(module=module_name, args=module_args))] ) play = Play().load(play_source, variable_manager=self.variable_manager, loader=self.loader) # actually run it tqm = None try: tqm = TaskQueueManager( inventory=self.inventory, variable_manager=self.variable_manager, loader=self.loader, options=self.options, passwords=self.passwords, stdout_callback=self.callback, ) C.HOST_KEY_CHECKING = False # 关闭第一次使用ansible连接客户端是输入命令 tqm.run(play) except Exception as e: ansible_logger.error('执行{}失败,原因: {}'.format(module_name, e)) finally: if tqm is not None: tqm.cleanup()
def rpush(self, rediskey, *values): """ 在rediskey对应的list中添加元素每个新的元素都添加到列表的尾部 :param rediskey: :return: """ try: self.redis_conn.rpush(rediskey, *values) except Exception as e: ansible_logger.error("添加数据失败:{}".format(e))
def lrange(self, rediskey): """ 获取列表中所有数据 :param rediskey: :return: """ try: data = self.redis_conn.lrange(rediskey, 0, -1) return data except Exception as e: ansible_logger.error("获取数据(lrange)失败:{}".format(e))
def rpop(self, rediskey): """ 移除并返回列表的最后一个元素 :param rediskey: :return: """ try: data = self.redis_conn.rpop(rediskey) return data except Exception as e: ansible_logger.error("获取数据(rpop)失败:{}".format(e))
def playbook_record(playbook_user, playbook_remote_ip, playbook_name, playbook_result): try: AnsiblePlaybookLog.objects.create( playbook_user=playbook_user, playbook_remote_ip=playbook_remote_ip, playbook_name=playbook_name, playbook_result=playbook_result, ) except Exception as e: ansible_logger.error('添加执行playbook操作记录失败,原因:{}'.format(e))
def module_record(ans_user, ans_remote_ip, ans_module, ans_args, ans_server, ans_result): try: AnsibleModuleLog.objects.create( ans_user=ans_user, ans_remote_ip=ans_remote_ip, ans_module=ans_module, ans_args=ans_args, ans_server=ans_server, ans_result=ans_result, ) except Exception as e: ansible_logger.error('添加执行模块操作记录失败,原因:{}'.format(e))
def run_playbook(self, playbook_path, extra_vars=None): """ run ansible playbook """ try: self.callback = PlayBookResultsCollector() if extra_vars: self.variable_manager.extra_vars = extra_vars executor = PlaybookExecutor( playbooks=[playbook_path], inventory=self.inventory, variable_manager=self.variable_manager, loader=self.loader, options=self.options, passwords=self.passwords, ) executor._tqm._stdout_callback = self.callback C.HOST_KEY_CHECKING = False # 关闭第一次使用ansible连接客户端是输入命令 executor.run() except Exception as e: ansible_logger.error('执行{}失败,原因: {}'.format(playbook_path, e))
def mset(self, **kwargs): try: data = self.redis_conn.mset(**kwargs) return data except Exception as e: ansible_logger.error("设置数据失败:{}".format(e))
def set(self, rediskey, value): try: self.redis_conn.set(rediskey, value) except Exception as e: ansible_logger.error("设置数据失败:{}".format(e))
def delete(self, *args): try: self.redis_conn.delete(*args) except Exception as e: ansible_logger.error("删除数据失败:{}".format(e))
def smembers(self, rediskey): try: data = self.redis_conn.smembers(rediskey) return data except Exception as e: ansible_logger.error("获取数据集合失败:{}".format(e))
def sadd(self, rediskey, *values): try: self.redis_conn.sadd(rediskey, *values) except Exception as e: ansible_logger.error("设置数据集合失败:{}".format(e))
def mget(self, *args): try: data = self.redis_conn.mget(*args) return data except Exception as e: ansible_logger.error("获取多个数据(mget)失败:{}".format(e))
def get(self, rediskey): try: data = self.redis_conn.get(rediskey) return data except Exception as e: ansible_logger.error("获取数据(get)失败:{}".format(e))