如何为 MFA 用户设置 Ansible API tqm.run() 超时?
How to set an Ansible API tqm.run() timeout for MFA Users?
当 'ansible_user' 被错误地设置为 MFA 用户时,tqm 无限期挂起。
我在这里 'task_queue_manager.py' 设置了一个断点:
play_return = strategy.run(iterator, play_context)
但我找不到任何可用于停止、结束或出错的程序。
下面是 sudo 代码,代表对它如何工作的猜测。
timeout = 300
result = tqm.run(play)
if not result and timeout and tqm is not None:
tqm.cleanup()
有没有人知道直接使用 tqm 的解决方案,或者甚至是像我上面没有提到的解决方法?
我通过使用 func_timeout 库找到了解决这个问题的方法。将 tqm.run 包装在一个 try 块中并将其发送到超时 fcn 对我有用。
try:
exitstatus = func_timeout(self.tqm_timeout, tqm.run, args=(play,))
except FunctionTimedOut:
msg = "tqm.run could not complete within {} seconds and was terminated.".format(self.tqm_timeout)
raise Exception(msg)
except Exception as e:
raise Exception('exception in tqm was {}'.format(e))
当 'ansible_user' 被错误地设置为 MFA 用户时,tqm 无限期挂起。
我在这里 'task_queue_manager.py' 设置了一个断点:
play_return = strategy.run(iterator, play_context)
但我找不到任何可用于停止、结束或出错的程序。
下面是 sudo 代码,代表对它如何工作的猜测。
timeout = 300
result = tqm.run(play)
if not result and timeout and tqm is not None:
tqm.cleanup()
有没有人知道直接使用 tqm 的解决方案,或者甚至是像我上面没有提到的解决方法?
我通过使用 func_timeout 库找到了解决这个问题的方法。将 tqm.run 包装在一个 try 块中并将其发送到超时 fcn 对我有用。
try:
exitstatus = func_timeout(self.tqm_timeout, tqm.run, args=(play,))
except FunctionTimedOut:
msg = "tqm.run could not complete within {} seconds and was terminated.".format(self.tqm_timeout)
raise Exception(msg)
except Exception as e:
raise Exception('exception in tqm was {}'.format(e))