此上下文中不允许使用 YAML 映射值
Posted
技术标签:
【中文标题】此上下文中不允许使用 YAML 映射值【英文标题】:YAML mapping values are not allowed in this context 【发布时间】:2015-09-27 14:10:13 【问题描述】:我正在尝试以这种格式配置 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
我的想法是我可以读取作业元素内的内容,并拥有一系列可以解析的不同作业配置。
但是,yamllint.com 告诉我这是非法的 YAML,因为 mapping values are not allowed in this context at line 2
其中line 2
是jobs:
行。
我做错了什么?
【问题讨论】:
【参考方案1】:这是有效的 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
注意,每个 '-' 开始序列中的新 元素。此外,地图中键的缩进应该完全相同。
【讨论】:
【参考方案2】:序列的元素需要在同一级别缩进。假设您想要两个作业(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 那样将(单条目)映射的序列转换为映射,但会使您失去排序。
【讨论】:
以上是关于此上下文中不允许使用 YAML 映射值的主要内容,如果未能解决你的问题,请参考以下文章
kubectl apply -f service.yml抛出错误