首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抑制ansible-playbook输出

抑制ansible-playbook输出
EN

Stack Overflow用户
提问于 2018-04-23 18:39:19
回答 2查看 1.1K关注 0票数 0

我正在尝试在python代码中使用Ansible 2.0API来运行一本剧本。当我运行代码时,它会打印playbook的执行。有没有办法抑制/隐藏这些指纹?

代码语言:javascript
复制
    def run_playbook(playbook, inventory, package, var_file_path, forks):
      callback = ResultsCollector()
      variable_manager = VariableManager()
      loader = DataLoader()

      inventory = Inventory(loader=loader, variable_manager=variable_manager,  host_list=inventory)
      playbook_path = playbook

      if not os.path.exists(playbook_path):
          print '[INFO] The playbook does not exist'
          sys.exit()

      Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax','connection', 'module_path', 'forks', 'remote_user', 'private_key_file', 'ssh_common_args', 'ssh_extra_args', 'sftp_ex
    tra_args', 'scp_extra_args', 'become', 'become_method', 'become_user', 'verbosity', 'check'])
      options = Options(listtags=False, listtasks=False, listhosts=False, syntax=False,  connection='ssh', module_path=None, forks=forks, remote_user=None, private_key_file=None, ssh_common_args=None, ssh
    _extra_args=None, sftp_extra_args=None, scp_extra_args=None, become=False, become_method=None, become_user=None, verbosity=5, check=False)
      variable_manager.extra_vars = {'hosts': package, 'var_file': var_file_path} # This can accomodate various other command line arguments.`
      passwords = {}

      pbex = PlaybookExecutor(playbooks=[playbook_path], inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=passwords)

      results = pbex.run()
      stats = pbex._tqm._stats
      return stats

  run_playbook(fetch_playbook, inventory_file, source_machine, fetch_var_yml,10)
EN

回答 2

Stack Overflow用户

发布于 2018-05-01 04:28:41

看起来您已经编写了一个自定义回调处理程序(ResultsCollector),但是没有看到代码和它如何处理结果,这个解决方案可能无法满足您的请求。

在运行剧本之前,尝试将回调对象设置为剧本执行器的stdout_callback,如下所示:

代码语言:javascript
复制
  callback = ResultsCollector()
  ...
  pbex._tqm._stdout_callback = callback
  results = pbex.run()
  stats = pbex._tqm._stats
  return stats
票数 0
EN

Stack Overflow用户

发布于 2020-04-16 19:46:51

这是一个老问题,但我也有同样的问题。在我的例子中,它有助于将stdout_callback插件设置为您想要的插件

  • your own or
  • default
  • json
  • none

代码语言:javascript
复制
    pbex = PlaybookExecutor(playbooks=[playbook_path], inventory=inventory,variable_manager=variable_manager, loader=loader, passwords=passwords)
    ...
    pbex._tqm._stdout_callback = 'null'
    results = pbex.run()

提示来自:https://kurisu.love/index.php/archives/137/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49979054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档