YAML语法,用于对某些参数进行分组,对某些参数则不进行分组

问题描述 投票:1回答:1

我经常不得不做类似的事情,我需要记录各个参数:

- 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个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.