【发布时间】:2019-01-20 07:21:57
【问题描述】:
错误!加载 YAML 时出现语法错误。 没有找到预期的密钥
错误似乎出现在“/etc/ansible/main.yml”中:第 73 行,第 50 列,但可能 根据确切的语法问题,位于文件中的其他位置。
违规行似乎是:
- name: Ensure IP forwarding is disabled
shell: "sysctl net.ipv4.ip_forward ; grep "net\.ipv4\.ip_forward" /etc/sysctl.conf /etc/sysctl.d/*"
^ here
我们可能错了,但这个看起来可能是一个问题 不平衡的报价。如果以引号开始一个值,请确保 行以同一组引号结束。例如这个任意 示例:
我在 ansible playbook 中使用带有“”的 grep 进入 shell 模块,并收到如下错误消息“错误!加载 YAML 时出现语法错误。”
- name: Ensure IP forwarding is disabled
shell: "sysctl net.ipv4.ip_forward ; grep "net\.ipv4\.ip_forward" /etc/sysctl.conf /etc/sysctl.d/*"
register: CIS_3.1.1
ignore_errors: True
【问题讨论】:
-
嗨 Rick_y,欢迎来到 SO。我希望你能理解,就像任何编程语言一样,你需要对出现在双引号字符串中的双引号进行转义。如果您不想转义它们,则可以切换到在 shell 命令周围使用单引号:
- shell: 'sysctl net ...grep "net\...'。另外,有一个 ansible module 用于手动完成您正在做的事情 -
这不是重复的。在标量中转义双引号是不够的,
标签: ansible