首页 > 解决方案 > Ansible 日志记录 - 谁、什么、什么时候

问题描述

我有一个任务:将每次运行 ansible 或 ansible-playbook 的日志放在一个地方(我们通过 sudo 在单个主机上在不同的用户下进行)。我需要在日志中看到的内容:

  1. 整个命令行
  2. 使用 sudo 运行它的用户
  3. 约会时间
  4. 剧本(ansible-playbook <name of playbook>)或命令(例如ansible -m ping)的输出。

发现通过回调插件格式化剧本输出或启用调试的能力,ansible.cfg但这无助于获得“什么”和“谁”。如果您能为此分享任何想法,将不胜感激。

Ansible 版本 2.8.3。

标签: ansible

解决方案


这似乎就在Ansible Tower和/或AWX的街道上(取决于 Ansible 对您的组织的重要性)。

首先,让我添加一些背景信息,如果您还不知道,AWX 是 Ansible Tower 的上游项目。Ansible Tower 是 Red Hat 提供的商业付费产品。AWX 可以在许多可以运行 Docker 的系统上运行,Ansible Tower 需要 Red Hat Enterprise Linux。除了这些例外,AWX 和 Ansible Tower 在功能上是等效的,除了品牌,它显示您运行的是 AWX 版本还是 Tower 版本。

AWX 将向数据库记录执行每个 Ansible Playbook 的每个操作的结果(无论是 STDOUT/STDERR)以及每个主机的成功/失败/跳过/等状态的数量。这也可以通过管道输出到您的 SIEM 或 SYSLOG 收集器。

我可以看到,您唯一的其他选择是将您对ansible-命令的执行包装在一个外部包装器中,该包装器以某种方式将输出记录到 syslog,并且可能还添加一条语句以显示ansible-playbook(例如)由 user 执行bob

但是,我强烈建议您将 AWX 视为您的第一个停靠港。它提供的不仅仅是日志功能 - 包括您的用户将无法(必然)访问您的目标服务器,除非通过您的 AWX 环境。


推荐阅读