Ansible 加载YAML时出现语法错误。\n找到无法启动任何令牌的字符

Ansible 加载YAML时出现语法错误。\n找到无法启动任何令牌的字符,ansible,yaml,Ansible,Yaml,我是YAML的新手,无法找到解决此错误的方法。mymain.yml正在设置ansible_主机和操作变量,并调用mail.yml Mail.yml - name: set variables set_fact: currentDateTime: "{{lookup('pipe','date \"+%Y-%m-%d %H:%M\"')}} - name: send email mail: host: smtp.domain.com port: 25 to:

我是YAML的新手,无法找到解决此错误的方法。mymain.yml正在设置ansible_主机和操作变量,并调用mail.yml

Mail.yml
- name: set variables
  set_fact:
    currentDateTime: "{{lookup('pipe','date \"+%Y-%m-%d %H:%M\"')}}

- name: send email
  mail:
    host: smtp.domain.com
    port: 25
    to: John Doe <john.doe@gmail.com>
    from: {{ ansible_host }}@domain.com
    subject: Please perform {{ actions }} on {{ currentDateTime }}
    body: Run {{ ansible_host }}
Mail.yml
-名称:设置变量
设定事实:
currentDateTime:“{{lookup('pipe','date\'”+%Y-%m-%d%H:%m\“')}”
-姓名:发送电子邮件
邮寄:
主机:smtp.domain.com
港口:25
致:约翰·多伊
发件人:{{ansible_host}}@domain.com
主题:请在{{currentDateTime}上执行{{actions}}
正文:运行{{ansible\u host}
没有选项卡(只有空格),我已尝试在mail下的值中添加引号“”,但仍然得到以下结果:

"Syntax error while loading YAML.\n found character that cannot start any token\n\nThe error appears to be in 
'mail.yml': line 11, column 33. The offending line appears to be:\n\n  to: John Doe <john.doe@gmail.com>."
加载YAML时出现语法错误。\n发现无法启动任何令牌的字符\n\n错误似乎在 'mail.yml':第11行第33列。有问题的行似乎是:\n\n to:John Doe。“ 如蒙协助,将不胜感激


谢谢。

您在

currentDateTime: "{{lookup('pipe','date \"+%Y-%m-%d %H:%M\"')}}
另一个问题可能是这一行:

from: {{ ansible_host }}@domain.com
如果
{{ansible\u host}
的计算结果为空字符串,这将是非法的,因为
@
是YAML中的保留字符,不能以标量开头。你应该引用它:

from: "{{ ansible_host }}@domain.com"

嗨,你查过了吗?我认为字符<和>是问题所在:-)文件的第一行无效(但我猜这是复制/粘贴错误)。错误集中在第11行,但返回的内容与文件不匹配。因此,没有人能够可靠地分析您当前的问题,以确定错误在哪里,并确保它不是由我们看不到的东西引起的。但提示:您在第一个set_事实任务中缺少双引号。请仔细检查所有这些,编辑您的问题,并粘贴准确的文件和相应的输出。嗨,马克cet,欢迎访问SO。除了所有其他好的评论之外,不要忘了你不能像你的
from:
行那样使用不带引号的大括号,因为YAML认为
{
是对象文字的一部分,但不幸的是,jinja2在其插值语法中使用了该字符。但我认为Zeitounator是正确的,缺少的
是您的主要问题。祝您好运!@mdaniel Jinja在YAML解析器看到文件之前处理该文件,Jinja语法(
{
/
}
})到时候就会消失。@flyx这显然是不真实的;
printf'\n-hosts:all\n tasks:\n-debug:\n msg:{{ansible\u version}\n'>pb.yml;ansible playbook pb.yml
对不起,是的,第一行是文件名,不是代码的一部分。