Beispiel #1
0
    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()
Beispiel #2
0
 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))
Beispiel #3
0
 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))
Beispiel #4
0
 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))
Beispiel #5
0
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))
Beispiel #6
0
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))
Beispiel #7
0
 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))
Beispiel #8
0
 def mset(self, **kwargs):
     try:
         data = self.redis_conn.mset(**kwargs)
         return data
     except Exception as e:
         ansible_logger.error("设置数据失败:{}".format(e))
Beispiel #9
0
 def set(self, rediskey, value):
     try:
         self.redis_conn.set(rediskey, value)
     except Exception as e:
         ansible_logger.error("设置数据失败:{}".format(e))
Beispiel #10
0
 def delete(self, *args):
     try:
         self.redis_conn.delete(*args)
     except Exception as e:
         ansible_logger.error("删除数据失败:{}".format(e))
Beispiel #11
0
 def smembers(self, rediskey):
     try:
         data = self.redis_conn.smembers(rediskey)
         return data
     except Exception as e:
         ansible_logger.error("获取数据集合失败:{}".format(e))
Beispiel #12
0
 def sadd(self, rediskey, *values):
     try:
         self.redis_conn.sadd(rediskey, *values)
     except Exception as e:
         ansible_logger.error("设置数据集合失败:{}".format(e))
Beispiel #13
0
 def mget(self, *args):
     try:
         data = self.redis_conn.mget(*args)
         return data
     except Exception as e:
         ansible_logger.error("获取多个数据(mget)失败:{}".format(e))
Beispiel #14
0
 def get(self, rediskey):
     try:
         data = self.redis_conn.get(rediskey)
         return data
     except Exception as e:
         ansible_logger.error("获取数据(get)失败:{}".format(e))