Многострочная строка YAML с сохранением отступов и переносов - PullRequest
1 голос
/ 29 марта 2019

Фон:

Это сборник пьес Ansible, использующий шаблоны для создания файла yaml из шаблона. Так что в основном у меня есть файл шаблона jinja2 со следующей строкой:

private_key: {{ myvar }}

Ansible использует yaml для определения переменных. Поэтому я заполню значение myvar примерно так. Здесь я использую специальный символ | для определения многострочной строки:

myvar: |

        - "-----BEGIN PRIVATE KEY-----"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
        - "zzzzzzzzzzzzzzzzzz="
        - "-----END PRIVATE KEY-----"

Однако выход отключает отступ:

  private_key:
- "-----BEGIN PRIVATE KEY-----"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
- "zzzzzzzzzzzzzzzzzz="
- "-----END PRIVATE KEY-----"

Поскольку выходной файл сам по себе является yaml, мне нужно сохранить отступ. Кажется, неважно, что я потеряю отступ.

Мне нужен конечный результат , чтобы выглядел ТОЧНО примерно так:

  private_key:
    - "-----BEGIN PRIVATE KEY-----"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "zzzzzzzzzzzzzzzzzz="
    - "-----END PRIVATE KEY-----"

1 Ответ

1 голос
/ 29 марта 2019

Я нашел ответ в поиске Google сразу после публикации вопроса.

По сути, строка yaml будет удалять отступы, поэтому в этом случае мы должны использовать Jinja для вставки пробелов, где они были удалены.К счастью, это очень легко сделать:

В файле шаблона я заменил это:

private_key: {{ myvar }}

на это:

private_key: {{ myvar | indent( width=4, indentfirst=True) }}

Поле width можетбыть откорректировано для того, сколько пробелов требуется.

Фактическое объявление переменной сделано точно так, как я написал в вопросе.Однако теперь с добавленным отступом в шаблон, теперь у меня есть желаемый вывод с отступом:

  private_key:
    - "-----BEGIN PRIVATE KEY-----"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "asdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdfasdfssadf"
    - "zzzzzzzzzzzzzzzzzz="
    - "-----END PRIVATE KEY-----"
...