我希望在 Ansible 中运行的每个 playbook 有单独的日志文件,而不是 log_path 中定义的单个日志文件。
据我所知,没有内置的方法可以做到这一点。所以我正在寻找聪明的“黑客”。
更具体地说,我希望在运行剧本后以 [剧本名称].[日期].log 格式生成日志文件
I found this线程在SO中,但它不能满足我的需求。如果我可以以某种方式动态传递剧本名称,而不仅仅是日期,那么别名将是一个解决方案。如果我只能从主日志文件中复制相关部分,而无需复制之前的所有历史记录,那么查找解决方案就可以了。此外,如果您有许多并行运行的剧本,我不知道这种方法的效果如何。
有什么线索/想法吗?我的想法是创建一个 shell 脚本,该脚本将在剧本中调用,以某种方式从主日志中“提取”相关条目并创建一个单独的条目。但我相信我把它弄得太复杂了。
请务必注释掉log_path
选项中ansible.cfg
.
创建包装器 shell 脚本:ansible-playbook-wrapper.sh
#!/bin/bash
export ANSIBLE_LOG_PATH=/var/log/ansible/playbook_$(echo $1 | cut -d . -f 1).log
ansible-playbook $@
别名 ansible-playbook 来运行包装器脚本:
alias ansible-playbook="/path/to/ansible-playbook-wrapper.sh"
创建一个日志目录并开放权限,以便所有用户(或者可能所有 ansible 用户)都可以写入它:
sudo mkdir /var/log/ansible
sudo chmod 777 /var/log/ansible
现在当你跑步时ansible-playbook dns_server.yml -u cobra -k
您将看到以下内容:
[cobra@ansible ~]$ ls /var/log/ansible
playbook-dns_server.log
playbook-some_other_playbook.log
playbook-even_more_plays.log
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)