带有换行符的 ansible 输出邮件



我有一个awk输出

- name: read files
shell: awk -F "|" 'FNR==NR {lines[$1]=$2; next} $9 in lines {print lines[$9], "on", $2}' file1 file2
register: resultawk
- debug:
msg: "{{ resultawk.stdout.split('n') }}"

这使用换行符很好地打印输出

任务 [调试] ****** 确定: [本地主机] => { "味精":[ "字段 2文件1 在字段 2文件2 上", "字段 2文件1 on 字段 2文件2" ] }

现在,当我尝试通过邮件发送相同的消息时

- name: send mail
mail:
subject: Report for {{ ansible_hostname }}
body:
msg: "{{ resultawk.stdout.split('n') }}"
to:
- John Doe <xyz@xyz.com>

我收到以下消息

任务 [发送邮件] ****** [警告]:值 {'msg': ['field2file1 on field2file2', 'field2file1 on field2file2']}" (类型字符串(。 如果这看起来与您期望的不符,请引用整个值以确保它不会更改。 好的:[本地主机]

无论如何都可以使用正确的换行符通过邮件发送结果吗?

警告实际上说明了需要做什么

"引用整个值以确保它不会改变">

试试这个


- name: send mail
mail:
subject: "Report for {{ ansible_hostname }}"
body: |
'{% for line in resultawk.stdout_lines %}
{{ line }}
{% endfor %}'
to: John Doe <xyz@xyz.com>

查看了 jinja2 文档(感谢 Vladimir(并发现了这个

body: "{{ resultawk.stdout.split('n'',')| to_yaml }}"

以可接受的 YAML 格式定义邮件

['field2file1 on field2file2 
field2file1 on field2file2']

最新更新