如何在Ansible中使用log_plays生成用于执行剧本的日志文件

时间:2019-04-19 00:15:59

标签: ansible ansible-2.x

我正在运行Playbook在Windows目标计算机上安装内部软件。我将在此过程中打印“ msg”日志,以便将其转发给质量检查/合规团队。 但是,我不知道如何使用debug>“ msg”的输出生成日志文件并将其放在Windows主机上。 我知道log_plays可能有用,但是我找不到任何有关如何实际使用该模块的示例。

任何示例代码将不胜感激。

2 个答案:

答案 0 :(得分:1)

很遗憾,/var/log/ansible/hosts is hardcoded还是可以的,否则它的行为应与您期望的一样。您可以通过ansible.cfg or the $ANSIBLE_STDOUT_CALLBACK environment variable启用回调:

env ANSIBLE_STDOUT_CALLBACK=log_plays ansible-playbook -i host1,host2 the_file.yml

请注意ad-hoc mode does not load callback plugins,因此您需要明确要求:

env ANSIBLE_LOAD_CALLBACK_PLUGINS=yes ANSIBLE_STDOUT_CALLBACK=log_plays \
    ansible -i host1,host2 -m ping '*'

如果/var/log/ansible/hosts部分困扰您,那么还有$ANSIBLE_LOG_PATH会导致无法将日志输出复写到文件中,并且在临时模式下可以正常工作:

env ANSIBLE_LOG_PATH=$PWD/my-log ansible -i host1,host2 -m ping '*'

答案 1 :(得分:1)

可能有点晚了,但是您可以在log_path=mylogfile部分的ansible.cfg文件中添加defaults

请参阅上面答案中提供的链接。