【问题标题】:YAML syntax for grouping some arguments and some notYAML 语法用于分组一些参数和一些不
【发布时间】:2019-10-05 06:39:05
【问题描述】:

我经常需要在 ansible 中做这样的事情,我需要记录单个参数:

- name: foo                          # ...
  module_name:                       # ...
    arg1: 1                          # ...
    arg2: 2                          # ...
    bar: "bar"                       # explanation     <---- related
    baz: "baz"                       # explanation     <---- related
    qux: 42                          # ...

如果参数相关,最好将它们分组。

我尝试了以下所有方法,但语法不正确:

    arg1: 1                          # ...
    arg2: 2                          # ...
    bar: "bar" baz:"baz"             # explanation
    qux: 42                          # ...
    arg1: 1                          # ...
    arg2: 2                          # ...
    bar: "bar", baz: "baz"           # explanation
    qux: 42                          # ...
    arg1: 1                          # ...
    arg2: 2                          # ...
    bar="bar" baz="baz"              # explanation
    qux: 42                          # ...

我浏览了yaml 1.2 reference,但它出奇地复杂。

这可能吗?

【问题讨论】:

标签: syntax ansible yaml


【解决方案1】:

好吧,严格来说,你不能在 mapping syntax 中这样做,因为与 Python 一样,缩进和换行符在 YAML 中具有语法意义。

但也许您正在查看的内容可以使用缩写形式 (as pointed out here) 来实现。

- name: foo                          # ...
  module_name: {                     # ...
    arg1: 1,                         # ...
    arg2: 2,                         # ...
    bar: "bar", baz: "baz",          # explanation     <---- related
    qux: 42                          # ...
  }

这是因为YAML can be viewed as a natural superset of JSON.

演示:

---
- hosts: localhost
  vars:
    module_name:                       # ...
      arg1: 1                          # ...
      arg2: 2                          # ...
      bar: "bar"                       # explanation     <---- related
      baz: "baz"                       # explanation     <---- related
      qux: 42
    module_name_alt: {                 # ...
      arg1: 1,                         # ...
      arg2: 2,                         # ...
      bar: "bar", baz: "baz",          # explanation     <---- related
      qux: 42
    }    

  tasks:
    - debug:
        msg: "{{ module_name }}"

    - debug:
        msg: "{{ module_name_alt }}"

是否输出:

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": {
        "arg1": 1,
        "arg2": 2,
        "bar": "bar",
        "baz": "baz",
        "qux": 42
    }
}

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": {
        "arg1": 1,
        "arg2": 2,
        "bar": "bar",
        "baz": "baz",
        "qux": 42
    }
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

相关: https://stackoverflow.com/a/1729545/2123530

【讨论】:

    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多