Ansible回调插件重定向输出至文件时打印元字符的问题
解决Ansible重定向日志出现ANSI控制字符的问题
以下是无需手动处理(如sed)的几种解决方案:
1. 执行命令时添加--no-color参数
直接在ansible-playbook命令中禁用颜色输出,从源头避免生成ANSI控制字符:
ansible-playbook -i inventory.yml playbook_dfh.yml --no-color > test.log
2. 修改Ansible配置文件(ansible.cfg)
在配置文件的[defaults]段添加以下配置,全局禁用颜色并选择无格式干扰的回调插件:
[defaults] # 选择无颜色输出的回调插件,比如yaml、json stdout_callback = yaml # 强制禁用颜色输出 nocolor = 1
如果找不到ansible.cfg,可以在当前执行目录创建,或者使用全局路径/etc/ansible/ansible.cfg。
3. 临时设置环境变量
通过环境变量临时禁用颜色输出,无需修改配置或命令参数:
ANSIBLE_NOCOLOR=1 ansible-playbook -i inventory.yml playbook_dfh.yml > test.log
问题原因说明
你遇到的^[[0;32m这类字符是ANSI颜色控制码,多数stdout_callback插件默认会输出这些代码用于终端着色。当重定向到文件时,终端不会解析这些代码,导致它们直接保留在日志中。上述方案都是通过让Ansible不生成这些控制码来解决问题。
内容的提问来源于stack exchange,提问作者axelle
相关产品推荐
相关产品推荐

