Ansible查找文件变量

时间:2018-05-07 18:45:38

标签: ansible jinja2

我尝试通过电子邮件发送包含html变量的模板文件,例如{{user_name}},html在我的邮件客户端中正确呈现,但{{user_name}}无法解析并显示作为字符串{{user_name}}

- name: Send e-mail to a bunch of users, attaching files
  mail:
    host: mail.server.com
    subtype: html
    subject: email template
    body: '{{ lookup("file", "roles/binding/templates/email.j2") }}'
    to: "{{ user_email }}"

示例输出

Hi {{ user_name }} ....

期望的输出

Hi John Doe

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:1)

您可以在发送邮件的任务之前添加template任务来处理文件。例如:

- name: prepare mail body from template
  template:
    src: email.j2
    dest: /tmp/email.out

变量替换将在此任务中进行。

然后,您将使用您已准备好的任务发送邮件,但body必须指向/tmp/mail.out文件。

template module documentation

答案 1 :(得分:1)

只需使用file参数中的template lookup plugin替换body查找插件:

body: '{{ lookup("template", "roles/binding/templates/email.j2") }}'