错误!加载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剧本的shell模块中使用带有“”的grep,并收到一条错误消息,如下所示:“错误!加载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
答案 0 :(得分:1)
用于ansible的配置文件采用YAML格式,而在YAML中,表示字符串的标量可以采用多种格式:
您使用的是双引号样式,因此您需要转义内部双引号("
)和反斜杠(\
)。很快就会变得丑陋且难以理解。在这种情况下,使用文字样式会更加有用:
- name: Ensure IP forwarding is disabled
shell: |-
sysctl net.ipv4.ip_forward ; grep "net\.ipv4\.ip_forward" /etc/sysctl.conf /etc/sysctl.d/*
即您放置|-
(负号是去除下一行的最后一个换行符),然后在下一行放置不带引号或结束引号 indented 的行。