此上下文中不允许使用 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 2jobs: 行。

我做错了什么?

【问题讨论】:

【参考方案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 映射值的主要内容,如果未能解决你的问题,请参考以下文章

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

在此上下文中不允许 Gitlab CI YML 映射值

kubectl apply -f service.yml抛出错误

在此上下文中不允许使用自动填充字段名称“邮政编码”

检查是不是存在 PLS-00405:在此上下文中不允许子查询

错误: 此上下文中不允许函数定义。