gpt4 book ai didi

ansible - 一个正确的 YAML 文件是否足以用于正确的 ansible 剧本,除了语法错误吗?

转载 作者:行者123 更新时间:2023-12-04 13:46:40 25 4
gpt4 key购买 nike

我有一个引发错误的ansible剧本(像往常一样带有可怕的消息):

ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

The error appears to have been in '/root/myplaybook.yml': line 17, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

# configure rsyslog
- name: configure rsyslog to expose events on port 42000
^ here

有问题的行是我在本剧本和其他剧本中的其他行的典型:
# prepare environment
# configure rsyslog
- name: configure rsyslog to expose events on port 42000
lineinfile:
- create: yes
- dest: /etc/rsyslog.d/expose-42000.conf
- line: "*.* @127.0.0.1:42000"
notify:
- restart rsyslog

该文件由三个在线检查器验证,因此没有 YAML 错误。 这个事实是否足以使该文件成为正确的 ansible 剧本?

我想了解的是,一个正确的 YAML 文件是否只给我留下了 ansible 语法错误(例如一个不存在的模块),或者是 YAML 的扩展的剧本(从某种意义上说,像 - name: blah blah blah 这样的行是可以的从 YAML 的角度来看,但会被 ansible 拒绝,因为(我正在编一个例子)它有两个以上的词。

换句话说,我正在检查以下是否为真:YAML 语法正常,ansible 关键字正常,但由于存在一些限制,ansible 不完全符合 YAML 语法。

编辑 :康斯坦丁在他的回答中发现了一个错误。
我将把这个问题留在原地,因为它帮助我理解 ansible 不会对 YAML 文件本身施加约束,所以当出现错误并且验证通过时,我确实留下了特定的 ansible 语法错误(或逻辑错误,比如在我的情况下)。

最佳答案

不,有效的 YAML 不一定会给你一个有效的 Ansible 剧本。

错误消息是 unexpected parameter type in action .
所以 Ansible 无法解释你想要什么。具体来说:

  lineinfile:
- create: yes
- dest: /etc/rsyslog.d/expose-42000.conf
- line: "*.* @127.0.0.1:42000"
create , destlinelineinfile 的参数操作,但是您尝试将三个 dicts 的列表输入到 lineinfile 中,因为您在每个参数前面加上一个破折号。从 YAML 语法的角度来看,这是正确的,但 Ansible 无法解析它,因为您不应该将列表输入到操作中。

要更正错误,请删除这些参数之前的破折号。

关于ansible - 一个正确的 YAML 文件是否足以用于正确的 ansible 剧本,除了语法错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40845709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com