Ansible log_plays插件日志文件名的主机名来源及修改方法
Ansible log_plays插件日志文件名相关问题解答
一、日志文件名的主机名来源
log_plays插件生成的日志文件名直接取自Ansible inventory中定义的目标主机名(或playbook里指定的主机/组名),Ansible不会自动对主机名做大小写转换,inventory里写的主机名是什么大小写,日志文件名就是什么大小写。
二、自定义日志文件名的方法
原生log_plays插件没有提供类似log_folder的配置项直接修改日志文件名,但可以通过自定义callback插件实现:
- 复制Ansible原生
log_plays插件的代码(通常路径为/usr/lib/pythonX.X/site-packages/ansible/plugins/callback/log_plays.py) - 修改代码中生成日志文件名的逻辑,比如:
- 统一主机名大小写:将
host.name改为host.name.lower()或host.name.upper() - 添加额外信息(如时间戳、play名称):
from datetime import datetime # 生成带时间戳和play名称的文件名 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") logfile = os.path.join(self.log_folder, f"{host.name.lower()}_{timestamp}_{play.name}")
- 统一主机名大小写:将
- 将修改后的插件文件放在Ansible的
callback_plugins目录下(可在ansible.cfg中通过callback_plugins配置项指定路径) - 在ansible.cfg中启用自定义的callback插件,替换原log_plays:
[defaults] callback_whitelist = custom_log_plays
这样就能完全自定义日志文件名的格式,满足后续按固定规则查找日志并发送邮件的需求。
内容的提问来源于stack exchange,提问作者Blaise Sequeira
相关产品推荐
相关产品推荐

