在此上下文中不允许使用 YAML 映射值

我正在尝试以这种格式配置 YAML 文件:

jobs:
- name: A
- schedule: "0 0/5 * 1/1 * ? *"
- type: mongodb.cluster
- config:
- host: mongodb://localhost:27017/admin?replicaSet=rs
- minSecondaries: 2
- minOplogHours: 100
- maxSecondaryDelay: 120
- name: B
- schedule: "0 0/5 * 1/1 * ? *"
- type: mongodb.cluster
- config:
- host: mongodb://localhost:27017/admin?replicaSet=rs
- minSecondaries: 2
- minOplogHours: 100
- maxSecondaryDelay: 120

其思想是,我可以读取 job 元素中的内容,并拥有一系列可以解析的不同作业配置。

然而,Yamllint.com告诉我,这是非法的 YAML,由于 mapping values are not allowed in this context at line 2其中 line 2jobs:行。

我做错了什么?

212437 次浏览

这是有效的 YAML:

jobs:
- name: A
schedule: "0 0/5 * 1/1 * ? *"
type: mongodb.cluster
config:
host: mongodb://localhost:27017/admin?replicaSet=rs
minSecondaries: 2
minOplogHours: 100
maxSecondaryDelay: 120
- name: B
schedule: "0 0/5 * 1/1 * ? *"
type: mongodb.cluster
config:
host: mongodb://localhost:27017/admin?replicaSet=rs
minSecondaries: 2
minOplogHours: 100
maxSecondaryDelay: 120

注意,每个’-’按顺序启动 新的元素。此外,映射中键的缩进应该是 一模一样

序列的元素需要在相同的级别缩进。假设您想要两个作业(A 和 B) ,每个作业都有一个键值对的 命令列表,您应该使用:

jobs:
- - name: A
- schedule: "0 0/5 * 1/1 * ? *"
- - type: mongodb.cluster
- config:
- host: mongodb://localhost:27017/admin?replicaSet=rs
- minSecondaries: 2
- minOplogHours: 100
- maxSecondaryDelay: 120
- - name: B
- schedule: "0 0/5 * 1/1 * ? *"
- - type: mongodb.cluster
- config:
- host: mongodb://localhost:27017/admin?replicaSet=rs
- minSecondaries: 2
- minOplogHours: 100
- maxSecondaryDelay: 120

像@Tsyvarrev 那样将(单个条目)映射的序列转换为映射也是可能的,但这会使您失去排序。