Синтаксис YAML для группировки некоторых аргументов, а некоторых нет - PullRequest
1 голос
/ 05 октября 2019

Мне часто приходится делать что-то подобное в 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 , но это удивительно сложно.

Это возможно?

1 Ответ

1 голос
/ 05 октября 2019

Что ж, строго говоря, вы не можете сделать это в синтаксисе отображения , потому что, аналогично, Python, отступы и разрывы строк имеют синтаксическое значение в YAML.

Но, возможно, то, что вы естьсмотреть на это можно, используя сокращенную форму (, как указано здесь ).

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

Это связано с тем, что YAML можно рассматривать как естественный надмножество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

...