Yml-файл, как создать

Обновлено: 21.11.2024

Файл config.yml управляет созданием кластера. Он использует синтаксис YAML, который хранится в виде читаемого текста. Поскольку config.yml — это файл Linux, строки должны заканчиваться символом перевода строки (/n). Если для создания или редактирования файла используется редактор Windows, обязательно используйте такой редактор, как Open Office, который поддерживает сохранение текстовых файлов с символами новой строки, или используйте dos2unix для преобразования текстового файла Windows в формат Linux.

Файлы YAML поддерживают такие структуры данных, как списки, словари и скаляры. Полное определение файла config.yml вместе с подробной документацией по используемым элементам приведено в приложении B.

Файл config.yml состоит из 4 основных разделов. Это;

  1. Определение кластера
  2. Сетевые шаблоны
  3. Шаблоны узлов
  4. Действия после Genesis
  • Обычно проще начать с существующего файла config.yml, чем создавать его с нуля.
  • Файлы YAML используют пробелы как часть синтаксиса. Это означает, например, что элементы одного и того же списка должны иметь одинаковое количество пробелов перед ними. При редактировании файла .yml обратите внимание на пробелы в начале строк. Неправильный интервал может привести к невозможности загрузки сообщений во время генезиса.

5.1. Определение кластера¶

Верхняя часть файла config.yml содержит группу пар ключ-значение, определяющих общий макет кластера. Предполагается, что каждая стойка в кластере имеет коммутатор управления и один или два коммутатора данных. Обратите внимание, что ключевые слова с подчеркиванием в начале могут быть изменены конечным пользователем в соответствии с вашим приложением. (например, «_rack1» можно заменить на «base-rack»). Вложенные словари ipaddr-mgmt-switch и ipaddr-data-switch определяют количество стоек и названия стоек. Например, кластер с 3 стойками может быть определен как:

Обратите внимание, что названия стоек могут быть любыми допустимыми именами YAML. Хотя имена крейтов в словаре ipaddr-mgmt-switch не обязательно должны совпадать с именами в словаре ipaddr-data-switch, рекомендуется, чтобы они совпадали.

Следующие ключи должны быть включены в раздел определения кластера:

  • OpenPOWER Cluster Genesis создает две VLAN на коммутаторах управления в вашем кластере. Они используются для изоляции доступа к интерфейсам управления на коммутаторах кластера от портов BMC и PXE узлов кластера. VLAN, в которой находятся интерфейсы управления коммутатором, определяется ключевым словом vlan-mgmt-network:. VLAN, в которой находятся кластер BMC и порты PXE, определяется ключевым словом vlan-mgmt-client-network:.
  • Ключевое слово ipaddr-mgmt-network: определяет подсеть, в которой будут находиться порты PXE и ​​BMC для узлов вашего кластера. Адреса a.b.c.1 и a.b.c.2 зарезервированы для использования контейнером linux на узле развертывания. Назначение адресов узлов кластера начинается с a.b.c.100.
  • Ключевое слово ipaddr-mgmt-client-network: определяет подсеть, в которой находятся порты BMC и PXE узлов кластера.
  • IP-адреса управления для коммутатора управления и коммутатора данных не должны находиться в той же подсети, что и сеть управления узлами.
  • Разрешается включать дополнительные пары ключ-значение для конкретного приложения в конце раздела определения кластера. Дополнительные ключи будут скопированы в файл inventory.yml, который может быть прочитан сценариями установки программного стека.
  • a.b.c.d используется выше для обозначения любого адреса ipv4. Пользователь должен предоставить действительный адрес ipv4. a.b.c.d/n используется для представления любого действительного адреса ipv4 в формате CIDR.

Полное описание пар "ключ-значение" см. в приложении A.

5.2. Сетевые шаблоны¶

Раздел сетевого шаблона файла config.yml определяет сети кластера. Программное обеспечение для настройки кластера OpenPower может настроить несколько сетевых интерфейсов, мостов и vlan на узлах кластера. Настройка vlans на узлах кластера также будет настроена на коммутаторах данных. Сетевые шаблоны вызываются в шаблонах вычислений для создания нужных сетей в вашем кластере.

Раздел сетевого шаблона файла конфигурации начинается со следующего ключа:

За этим ключом следует имя отдельного интерфейса или определения моста. Пользователи могут свободно использовать любое имя для сетевого шаблона. Определения моста могут дополнительно включать вланы, и в этом случае виртуальный порт влана будет добавлен к указанному интерфейсу и подключен к мосту. Определений сети может быть сколько угодно.

5.2.1. Простое назначение статического IP-адреса¶

Следующее определение показывает, как указать простое назначение статического IP-адреса порту Ethernet 2:

Примечание. Адреса, назначаемые узлам кластера, можно ввести в файл конфигурации как отдельные адреса или несколько диапазонов адресов.

5.2.2. Создание моста¶

В следующем определении показано, как создать мост с VLAN, подключенной к физическому порту eth2, указанному выше:

Приведенное выше определение приведет к созданию моста с именем br-mybridge с подключением к виртуальному порту виртуальной локальной сети eth2.n, который подключен к физическому порту eth2.

5.3. Шаблоны узлов¶

5.3.1. Переименование интерфейсов¶

Ключ name-interfaces: позволяет переименовывать интерфейсы Ethernet. Это позволяет использовать разнородные узлы с программными стеками, которым требуются согласованные имена интерфейсов на всех узлах. Имя существующего интерфейса знать не обязательно. Код конфигурации кластера найдет MAC-адрес интерфейса, подключенного кабелем к указанному порту коммутатора, и изменит его, как указано. В приведенном ниже примере первый узел имеет порт pxe, подключенный кабелем к порту 1 коммутатора управления. Генезисный код считывает MAC-адрес, подключенный к этому порту, с коммутатора управления, а затем изменяет имя физического порта, принадлежащего этому MAC-адресу, на указано имя. (в данном случае «eth15»). Также обратите внимание, что пары ключей в разделе name-interfaces: должны соответствовать именам интерфейсов, перечисленным в разделе «ports:», т. е. «mac-pxe» соответствует «pxe» и т. д.

В приведенном ниже примере шаблона вычислительного узла порты Ethernet узла, подключенные к портам 1 и 3 коммутатора управления (порты pxe), будут переименованы в eth15, порты Ethernet узла, подключенные к портам 5 и 7 коммутатора управления (порты eth10 ) будет переименован в eth10:

5.3.2. Определение шаблона узла¶

Раздел шаблонов узлов файла конфигурации начинается со следующего ключа:

Определения шаблона начинаются с имени, выбранного пользователем, за которым следуют ключевые значения, определяющие узел:

YAML – это удобный язык сериализации данных, который часто используется для создания файлов конфигурации на любом языке программирования.

Разработанный для взаимодействия с человеком, YAML – это строгая надстройка JSON – еще одного языка сериализации данных. Но поскольку это строгий надмножество, он может делать все, что может JSON, и даже больше. Одно из основных отличий заключается в том, что символы новой строки и отступы на самом деле что-то означают в YAML, в отличие от JSON, в котором используются квадратные и фигурные скобки.

Формат подходит для указания конфигурации, как мы используем его в CircleCI.

Как написать YAML

Основной структурой файла YAML является карта. Вы можете назвать это словарем, хэшем или объектом, в зависимости от вашего языка программирования или настроения.

В общем случае это ключи и значения до самого низа:

Пример YAML: скалярные типы

В качестве значений можно использовать все виды скалярных типов: числа, логические значения и строки (в кавычках или без). Например, первая строка файла config.yml обычно выглядит так:

Слова в ключах могут быть разделены символами подчеркивания, тире или пробелами. В CircleCI мы используем символы подчеркивания.

Если значением ключа является многострочная строка, вы можете использовать стиль «литерального блока» с символом «|». Это особенно полезно при определении команд оболочки:

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

Пример YAML: типы коллекций

Все, что вам нужно сделать для создания коллекций, это использовать отступ:

Если у вас есть список вещей (например, изображений), вы можете обозначить эту последовательность с помощью тире:

Обратите внимание, что у второго элемента последовательности есть два ключа: изображение и команда . Ключ команды использует последовательность в стиле JSON, потому что (помните!) YAML является надмножеством JSON.

Наконец, YAML не поддерживает символы табуляции, поэтому, если вы используете их для создания отступов, попросите текстовый редактор преобразовать их в пробелы. Синтаксические ошибки в вашем YAML иногда могут приводить к зависанию сборки CircleCI, но их также легко предотвратить, запустив файл circle.yml/config.yml через онлайн-валидатор.

Дополнительная литература

Содержимое этого руководства должно быть всем, что вам нужно для удобного написания файла конфигурации для CircleCI. YAML поддерживает дополнительные функции, о которых вы можете прочитать на официальном сайте или в менее пугающей (но менее исчерпывающей) статье «Узнай X за Y минут».

В DevCS вы можете использовать файл YAML (файл с расширением .yml) для хранения задания или конфигурации конвейера в любом из репозиториев Git проекта. Система сборки постоянно отслеживает репозитории Git и при обнаружении файла YAML создает или обновляет задание или конвейер с указанной конфигурацией.

Вот пример конфигурации YAML для задания:

Подробнее об использовании файлов YAML в DevCS

Все файлы YAML должны находиться в папке .ci-build в корневом каталоге главной ветки любого размещенного репозитория Git. Файлы YAML в других ветках игнорируются. В каталоге .ci-build ветки master DevCS предполагает, что любой текстовый файл, оканчивающийся на расширение .yml, является файлом конфигурации YAML. Каждый файл YAML может содержать данные конфигурации ровно для одного задания или одного конвейера. Вы можете иметь файлы YAML в нескольких репозиториях Git или использовать отдельный репозиторий Git для размещения всех файлов конфигурации YAML. Вы не можете использовать внешний репозиторий Git для размещения файлов YAML. Поскольку файлы конфигурации хранятся в Git, вы можете отслеживать изменения, внесенные в конфигурацию задания или конвейера, и, если задание или конвейер удалены, вы можете использовать файл конфигурации для их повторного создания.

Система сборки постоянно отслеживает Git-репозитории проекта. Когда он обнаруживает обновление файла с расширением .yml в каталоге .ci-build главной ветки репозитория Git, он сканирует файл, чтобы определить, является ли он заданием или конвейером, и создает или обновляет соответствующее задание или трубопровод. Во-первых, он проверяет, существует ли задание или конвейер с тем же именем (как в файле конфигурации) на странице «Сборки». Если задание или конвейер существуют, они обновляются. Если имя задания или конвейера изменилось в файле конфигурации, оно переименовывается. Если задание или конвейер не существуют, они создаются.

Обратите внимание, что задания и конвейеры, созданные с помощью YAML, нельзя редактировать на странице "Сборки". Их необходимо редактировать с помощью YAML. Точно так же задания и конвейеры, созданные на странице "Сборки", нельзя редактировать с помощью YAML.

YAML сохраняет данные в виде пары "ключ-значение" в поле: формат значения. Дефис (-) перед полем идентифицирует его как массив или список. Оно должно иметь отступ на том же уровне, что и родительское поле. Для отступа всегда используйте пробелы, а не табуляцию. Убедитесь, что количество отступов перед именем поля соответствует количеству отступов в шаблоне. YAML чувствителен к количеству пробелов, используемых для отступов полей. Кроме того, имена полей в файле YAML аналогичны именам полей в пользовательском интерфейсе конфигурации задания.

Если вы редактируете файл YAML на своем компьютере, всегда используйте текстовый редактор с кодировкой UTF-8. Не используйте текстовый процессор.

Вот дополнительная информация о файлах YAML, которую следует учитывать перед их созданием или редактированием.

    Поле имени в файле конфигурации определяет имя задания или конвейера. Если имя не указано, система сборки создает задание или конвейер с именем _ , где repo-name — это имя репозитория Git, в котором размещен файл YAML, а .yml — имя файла YAML.

    Например, если файл YAML называется MyYAMLJob и он размещен в Git-репозитории YAMLJobs, тогда имя задания или конвейера будет YAMLJobs_MyYAMLJob .

    Если вы добавите поле имени позже, задание или конвейер будут переименованы. URL-адрес доступа также меняется.

    Вы можете использовать одинарные ( ' ' ) или двойные кавычки (" " ). Чтобы включить одинарную кавычку в строку с одинарными кавычками, измените одинарную кавычку, поставив перед ней другую одинарную кавычку. Например, чтобы установить работу Дона в поле имени, используйте имя = работа Дона в файле YAML. Чтобы использовать двойную кавычку в строке с двойными кавычками, экранируйте двойную кавычку с помощью символа обратной косой черты ( \ ). Например, чтобы установить работу Дона в поле имени, используйте имя = работа Дона в файле YAML. Не нужно экранировать обратную косую черту в одной строке в кавычках.

    Пример именованного пароля:

    Пример параметра пароля:

    Например, если вы не хотите определять цели Maven и использовать чистую установку по умолчанию, удалите поле целей. Следующий код YAML может вызвать ошибку, поскольку цели не определены.

    Для текущего репозитория Git использование auto эквивалентно установке для build-on-commit значения true . Поэтому не используйте вместе auto и build-on-commit: true.

    Если вы используете auto , не указывайте URL-адрес репозитория Git. Задание автоматически отслеживает репозиторий Git, в котором зафиксирован файл YAML.

    Коммит, отправленный в ветку patchset_1, запускает сборку задания MyFirstYAMLJob.

    REST API для доступа к файлам YAML

    Для запуска методов REST API можно использовать инструмент тестирования API, например Postman, или команды curl. Чтобы запускать команды curl, загрузите curl на свой компьютер. Вы также можете использовать Git CLI для запуска команд curl.

    Чтобы создать URL-адрес REST API, вам потребуется ваше имя пользователя и пароль DevCS, базовый URL-адрес вашего экземпляра, уникальный идентификатор организации и идентификатор проекта, который вы можете получить по любому из URL-адресов Git-репозитория проекта.< /p>

    Проверка конфигурации задания или конвейера

    Чтобы проверить конфигурацию задания или конвейера, используйте URL-адрес в следующем синтаксисе вместе с локальным файлом YAML на вашем компьютере в качестве параметра:

    Вот пример команды curl для проверки конфигурации задания на компьютере с Windows:

    Вот пример команды curl для проверки конфигурации конвейера на компьютере с Windows:

    Создание задания или конвейера без фиксации файла YAML

    Чтобы создать задание или конвейер без фиксации файла YAML в репозитории проекта Git, используйте URL-адрес в следующем синтаксисе вместе с локальным файлом YAML на вашем компьютере в качестве параметра:

    DevCS считывает конфигурацию задания или конвейера YAML и, если ошибок не обнаружено, создает новое задание или конвейер. Задание или конвейер должны быть явно названы в конфигурации YAML. После того, как задание создано, вы можете отредактировать его конфигурацию на странице Сборки. При обнаружении ошибок отображаются сообщения об ошибках, а задание или конвейер не создаются.

    Вот пример команды curl для создания задания с файлом YAML на компьютере с Windows:

    Создание или настройка задания с помощью YAML

    1. На своем компьютере клонируйте репозиторий Git с файлом YAML или там, где вы хотите его разместить.
    2. Создайте файл с конфигурацией YAML задания.

    При возникновении проблем с проверкой файла YAML отображается уведомление со ссылкой «Просмотреть ошибку». Щелкните ссылку View Error, чтобы просмотреть сообщения об ошибках. Затем обновите файл YAML и снова зафиксируйте его.


    Описание иллюстрации devcs_yaml_git.jpg

    Если вы создаете файл YAML онлайн, вы не можете проверить его без фиксации. Чтобы проверить наличие ошибок, зафиксируйте файл и проверьте уведомление в ленте последних действий на главной странице проекта.

    Формат конфигурации YAML задания

    Вот формат конфигурации YAML задания со значениями по умолчанию. Обратите внимание, что поля со значением "" указывают, что оно принимает строковое значение, которое по умолчанию пусто. "" не является допустимым значением для некоторых полей, таких как name , vm-template и url . Если вы хотите, чтобы поле использовало значение по умолчанию, не добавляйте это поле в файл YAML.

    При настройке задания такие поля, как name , description , vm-template и auto, должны предшествовать таким группам, как git , params и steps .

    Примеры настройки задания YAML

    В этой таблице показано несколько примеров конфигураций заданий YAML.

    Эта конфигурация создает задание для запуска целей Maven и архивирования артефактов.

    • Название задания: MyFirstYAMLJob
    • Шаблон сборки задания: базовый шаблон сборки виртуальной машины
    • Репозиторий проекта Git: employee.git
    • Шаг Maven
      • Цели: чистая установка
      • Файл POM: employee-app/pom.xml
      • Архивные артефакты: employee-app/target/*

      Эта конфигурация создает задание для выполнения шагов Docker, которые входят в систему, создают и передают образ в реестр OCI.

      Эта конфигурация создает задание для запуска команд и скрипта SQL с использованием SQLcl.

      Эта конфигурация создает задание для запуска целей Maven и архивирования артефактов.

      Создать или настроить конвейер с помощью YAML

      1. На своем компьютере клонируйте репозиторий Git с файлом YAML или там, где вы хотите его разместить.
      2. Создайте файл с конфигурацией YAML конвейера.
      3. Сохраните файл с расширением .yml в каталоге .ci-build в корне клонированного репозитория Git. Пример: .ci-build/my_yaml_pipeline.yml
      4. Проверьте локальный файл YAML. См. раздел Проверка конфигурации задания или конвейера.

      При возникновении проблем с файлом YAML отображается уведомление со ссылкой «Просмотреть ошибку». Щелкните ссылку «Просмотреть ошибку», чтобы загрузить файл JSON с сообщениями об ошибках. Просмотрите их, обновите файл YAML и снова зафиксируйте его.

      Чтобы запустить сборку заданий конвейера, нажмите "Создать" . Чтобы просмотреть его экземпляры, щелкните имя конвейера. Чтобы изменить конфигурацию YAML, нажмите «Настроить» .

      Примеры конфигурации конвейера YAML

      В этой таблице показано несколько примеров конфигураций конвейера YAML.

      В этой конфигурации конвейера задание 2 зависит от задания 1 и запускается после успешного завершения задания 1. Задание 3 зависит от Задания 2 и запускается после успешного завершения Задания 2.

      • Название конвейера: Мой конвейер
      • Описание: конфигурация конвейера YAML.
      • Запускать конвейер, если выполняется какое-либо задание в конвейере: Да
      • Разрешить независимое выполнение заданий в конвейере во время работы конвейера: Да

      В этой конфигурации конвейера задания 2, 3 и 4 зависят от задания 1 и выполняются параллельно после успешного завершения задания 1. Задание 5 зависит от Задания 2, Задания 3 и Задания 4 и запускается после успешного завершения всех трех.

      • Название конвейера: Мой конвейер
      • Запускать конвейер, если выполняется какое-либо задание конвейера: Да

      В этой конфигурации конвейера задание 2 запускается после успешного завершения задания 1.Задание 3, Задание 4 и Задание 5 выполняются параллельно после успешного завершения Задания 2. Задание 6 запускается после успешного завершения задания 5. Задание 7 выполняется после успешного завершения Задания 6, Задания 3 и Задания 4.

      Название конвейера: Мой конвейер

      В этой конфигурации конвейера задание 2 запускается после успешного завершения задания 1. Задание 3 выполняется, если задание 1 завершается с ошибкой.

      Название конвейера: Мой конвейер

      Если Задание 1 выполнено успешно:

      В этой конфигурации конвейера задание 2 запускается после успешного завершения задания 1. Задание 3 запускается, если задание 1 завершается успешно, но не проходит тесты или какие-либо действия после сборки, или если задание 1 завершается со сбоем. Задание 3 не будет запущено, если Задание 1 завершится успешно.

      YAML – это не язык разметки (YAML) – это язык сериализации, популярность которого в последние несколько лет неуклонно растет. Он часто используется в качестве формата для файлов конфигурации, но его возможности сериализации объектов делают его жизнеспособной заменой для таких языков, как JSON. Это руководство по YAML продемонстрирует синтаксис языка с помощью руководства и нескольких простых примеров кодирования на Python. YAML имеет широкую языковую поддержку и легко сопоставляется с собственными структурами данных. Его также легко читать людям, поэтому это хороший выбор для настройки. Аббревиатура YAML была сокращением от «Еще один язык разметки». Но сопровождающие переименовали его в YAML — это не язык разметки, чтобы уделить больше внимания его функциям, ориентированным на данные.

      Краткое руководство по YAML: простой файл

      Давайте кратко рассмотрим файл YAML.

      Файл начинается с трех дефисов. Эти тире обозначают начало нового документа YAML. YAML поддерживает несколько документов, и совместимые синтаксические анализаторы распознают каждый набор дефисов как начало нового. Далее мы видим конструкцию, которая составляет большую часть типичного документа YAML: пару ключ-значение. Doe — это ключ, указывающий на строковое значение: олень, олень. YAML поддерживает не только строковые значения. Файл начинается с шести пар ключ-значение. Они имеют четыре разных типа данных. Доу и Рэй — струны. Пи — число с плавающей запятой. Рождество — это логическое значение. Французские куры — целое число. Вы можете заключать строки в одинарные или двойные кавычки или вообще без кавычек. YAML распознает числа без кавычек как целые числа или числа с плавающей запятой. Седьмой элемент — это массив. Calling-birds состоит из четырех элементов, каждый из которых обозначается открывающим тире. Я выделил элементы в call-birds двумя пробелами. Отступ — это то, как YAML обозначает вложенность. Количество пробелов может варьироваться от файла к файлу, но вкладки не допускаются. Ниже мы рассмотрим, как работает отступ. Наконец, мы видим xmas-fifth-day, внутри которого есть еще пять элементов, каждый из которых имеет отступ. Мы можем рассматривать xmas-fifth-day как словарь, содержащий две строки, два целых числа и еще один словарь. YAML поддерживает вложение ключей и значений и смешивание типов. Прежде чем углубляться, давайте посмотрим, как этот документ выглядит в формате JSON. Я добавлю его в этот удобный конвертер JSON в YAML.

      JSON и YAML имеют схожие возможности, и вы можете конвертировать большинство документов между этими форматами.

      Контур отступов и пробелов

      Пробел – это часть форматирования YAML. Если не указано иное, символы новой строки указывают на конец поля. Вы структурируете документ YAML с отступом. Уровень отступа может быть одним или несколькими пробелами. Спецификация запрещает вкладки, потому что инструменты обрабатывают их по-разному. Рассмотрим этот документ. Элементы внутри материала имеют отступ в два пробела.

      Давайте посмотрим, как этот документ отображается в простом скрипте Python. Мы сохраним его как файл с именем foo.yaml. Пакет PyYAML сопоставит файловый поток YAML со словарем. Мы пройдемся по самому внешнему набору ключей и значений и напечатаем ключ и строковое представление каждого значения. Вы можете найти процессор для своей любимой платформы здесь.

      Когда мы сообщаем python, что нужно напечатать словарь в виде строки, он использует встроенный синтаксис, который мы увидим ниже. Из вывода видно, что наш документ представляет собой словарь Python с двумя строками и еще одним словарем, вложенным в него. Простая вложенность YAML дает нам возможность создавать сложные объекты. Но это только начало.

      Комментарии

      Комментарии начинаются со знака решетки. Они могут стоять после значения документа или занимать всю строку.

      Комментарии предназначены для людей. Процессоры YAML отбрасывают их.

      Типы данных YAML

      Значения в парах "ключ-значение" YAML являются скалярными. Они действуют как скалярные типы в таких языках, как Perl, Javascript и Python. Обычно достаточно заключать строки в кавычки, оставлять числа без кавычек и позволить синтаксическому анализатору разобраться с этим. Но это только верхушка айсберга. YAML способен на гораздо большее.

      Пары "ключ-значение" и словари

      Пара "ключ-значение" — это основной строительный блок YAML. Каждый элемент в документе YAML является членом хотя бы одного словаря. Ключ всегда является строкой. Значение является скаляром, поэтому может быть любым типом данных.Итак, как мы уже видели, значение может быть строкой, числом или другим словарем.

      Числовые типы

      YAML распознает числовые типы. Выше мы видели числа с плавающей запятой и целые числа. YAML поддерживает несколько других числовых типов. Целое число может быть десятичным, шестнадцатеричным или восьмеричным.

      Давайте запустим наш скрипт Python для этого документа.

      Как и следовало ожидать, Ox указывает, что значение является шестнадцатеричным, а начальный ноль обозначает восьмеричное значение. YAML поддерживает как фиксированные, так и экспоненциальные числа с плавающей запятой.

      Когда мы оцениваем эти записи, мы видим:

      Наконец, мы можем представить не-число (NAN) или бесконечность.

      Фу — это бесконечность. Bar — это отрицательная бесконечность, а plop — NAN.

      Строки

      Строки YAML имеют кодировку Unicode. В большинстве случаев вам не нужно указывать их в кавычках.

      Наша тестовая программа обрабатывает это как:

      Но если мы хотим, чтобы управляющие последовательности обрабатывались, нам нужно использовать двойные кавычки.

      YAML обрабатывает первое значение как заканчивающееся символами возврата каретки и перевода строки. Поскольку второе значение не заключено в кавычки, YAML рассматривает \n как два символа.

      YAML не экранирует строки в одинарных кавычках, но одинарные кавычки позволяют избежать интерпретации содержимого строки как форматирования документа. Строковые значения могут занимать более одной строки. С помощью символа сгиба (больше чем) вы можете указать строку в блоке.

      Но это интерпретируется без новых строк.

      Символ блока (вертикальной черты) имеет аналогичную функцию, но YAML интерпретирует поле точно так, как оно есть.

      Итак, мы видим символы новой строки там, где они находятся в документе.

      Нулевые значения

      Вы вводите пустые значения с помощью тильды или строкового литерала null без кавычек.

      Наша программа печатает:

      Представление Python для null равно None.

      Булевы значения

      YAML указывает логические значения с ключевыми словами True, On и Yes для true. False обозначается False, Off или No.

      Массивы

      Можно указывать массивы или списки в одной строке.

      Или вы можете поместить их в несколько строк.

      Многострочный формат удобен для списков, содержащих сложные объекты вместо скаляров.

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

      Словари

      Выше мы рассмотрели словари, но это еще не все. Как и массивы, вы можете поместить словари в строку. Мы видели этот формат выше. Так Python печатает словари.

      Мы уже видели, как они соединяют строки раньше.

      И, конечно же, они могут быть вложенными и содержать любое значение.

      Дополнительные параметры

      Модификаторы Chomp

      Многострочные значения могут заканчиваться пробелом, и в зависимости от того, как вы хотите обработать документ, вы можете не захотеть его сохранять. В YAML есть операторы strip chomp и save chomp. Чтобы сохранить последний символ, добавьте плюс к операторам сгиба или блока.

      Таким образом, если значение заканчивается пробелом, например новой строкой, YAML сохранит его. Чтобы убрать символ, используйте оператор полосы.

      Несколько документов

      Документ начинается с трех дефисов и заканчивается тремя точками. Некоторым процессорам YAML требуется оператор запуска документа. Конечный оператор обычно необязателен. Например, Jackson в Java не будет обрабатывать документ YAML без начала, а PyYAML в Python — сможет. Обычно вы будете использовать оператор конца документа, когда файл содержит несколько документов. Давайте изменим наш код Python.

      Функция load_all PyYAML будет обрабатывать все документы в потоке. Теперь давайте обработаем с его помощью составной документ.

      Сценарий находит два документа YAML.

      Заключение

      YAML — это мощный язык, который можно использовать для файлов конфигурации, сообщений между приложениями и сохранения состояния приложения. Мы рассмотрели его наиболее часто используемые функции, в том числе то, как использовать встроенные типы данных и структурировать сложные документы. Некоторые платформы поддерживают расширенные функции YAML, включая пользовательские типы данных.

      Читайте также: