Cob*_*ojo 3 logging ansible ansible-playbook
我希望在Ansible中运行的每个剧本都具有单独的日志文件,而不是log_path中定义的单个日志文件。
据我所知,没有内置的方法可以做到这一点。所以我正在寻找聪明的“ hacks”。
更具体地说,我想在运行一个剧本之后以[剧本名称]。[date] .log的格式生成一个日志文件。
我在SO中找到了该线程,但它不能满足我的需求。如果我能以某种方式动态传递剧本名称,而不仅仅是日期,那么别名将是一个解决方案。如果我只能从主日志文件中复制相关部分,而没有所有历史记录,直到复制的那一刻,查找解决方案就可以了。另外,如果您有许多并行运行的剧本,我不知道这种方法的效果如何。
有任何线索/想法吗?我想创建一个外壳脚本,该脚本将在剧本内部调用,以某种方式从主日志中“提取”相关条目并创建一个单独的脚本。但是我相信我使它变得太复杂了。
确保注释掉中的log_path选项ansible.cfg。
创建包装器外壳脚本:ansible-playbook-wrapper.sh
#!/bin/bash
export ANSIBLE_LOG_PATH=/var/log/ansible/playbook_$(echo $1 | cut -d . -f 1).log
ansible-playbook $@
Run Code Online (Sandbox Code Playgroud)
别名ansible-playbook改为运行包装器脚本:
alias ansible-playbook="/path/to/ansible-playbook-wrapper.sh"
Run Code Online (Sandbox Code Playgroud)
创建一个日志目录并打开权限,以便所有用户(或也许所有ansible用户)都可以写入该目录:
sudo mkdir /var/log/ansible
sudo chmod 777 /var/log/ansible
Run Code Online (Sandbox Code Playgroud)
现在,当您运行时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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |