如何在Ansible中为生成的日志文件结果添加颜色标记?
实现日志文件的颜色标记功能
我来帮你搞定给生成的.log文件添加颜色标记的需求,咱们结合Ansible和Jinja2来一步步实现:
原代码回顾
原Ansible脚本
--- #可用内存 - hosts: all sudo: yes user: ansible connection: ssh vars: RAM: ansible_memory_mb.real.total tasks: - fail: msg="Not enough RAM" when: ansible_memory_mb.real.total < 100 ignore_errors: yes tags: available_ram - name: 基础检查 template: src=../templates/template.conf.j2 dest=/home/ansible/monit{{ansible_hostname}}.log owner=ansible mode=750
原Jinja2模板(template.conf.j2)
{{ansible_hostname}} RAM...
修改方案:添加颜色标记
要在日志里显示终端颜色,咱们需要用到ANSI转义码,在Jinja2模板里根据内存值的范围,输出对应颜色的状态标记:
修改后的Jinja2模板
{{ ansible_hostname }} RAM: {{ ansible_memory_mb.real.total }}MB {% if ansible_memory_mb.real.total < 100 %} [\033[31mLOW\033[0m] {% elif ansible_memory_mb.real.total < 500 %} [\033[33mWARNING\033[0m] {% else %} [\033[32mOK\033[0m] {% endif %}
- 颜色规则说明:
\033[31m:红色,标记内存严重不足(<100MB)\033[33m:黄色,标记内存告警(100-499MB)\033[32m:绿色,标记内存正常(≥500MB)\033[0m:重置颜色,避免后续文本被持续染色
优化后的Ansible脚本(可选调整)
原脚本里的RAM变量没有被实际调用,你可以选择删除它;另外把模板参数拆分行写,可读性会更好:
--- #可用内存检查及带颜色的日志生成 - hosts: all sudo: yes user: ansible connection: ssh tasks: - fail: msg="Not enough RAM" when: ansible_memory_mb.real.total < 100 ignore_errors: yes tags: available_ram - name: 生成带颜色标记的内存检查日志 template: src: ../templates/template.conf.j2 dest: "/home/ansible/monit{{ansible_hostname}}.log" owner: ansible mode: '0750'
验证效果
运行Ansible playbook后,在目标主机上用cat命令查看日志文件,就能看到不同颜色的内存状态标记了。
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

