Файлы YAML доминируют в конфигурации в облачной родной экосистеме. Они используются Kumerentes, Helm, Tekton и многие другие проекты для определения пользовательских конфигураций и рабочих процессов. Но у yaml есть свои странности, поэтому в качестве основного проекта Buildpacks Cloud SugetPacks выбрали TOML в качестве основного формата конфигурации.
TOML — это минимальный формат файла конфигурации, который легко читать из-за его простой семантики. Вы можете узнать больше о TOML от Официальная документация , но простой файл TOML Buildpack выглядит следующим образом:
api = "0.2" [buildpack] id = "heroku/maven" version = "1.0" name = "Maven"
В отличие от YAML, Toml не полагается на значительный пробел с трудным для чтения отступа. TOML предназначен для читаемого человеком, поэтому он поддерживает простые структуры. Машины также легко читать и писать; Вы можете даже добавить в файл TOML, не прочитав его первым, что делает его отличным форматом обмена данными. Но обмен данными и машиностроения не являются основным драйвером для использования TOML в проекте BuildPacks; Это люди.
Поставить свой шлем На
Первый раз, когда вы используете BuildPacks, вам, вероятно, не нужно будет написать файл TOML. Buildpacks предназначены для того, чтобы выйти из своего пути и исчезнуть в деталях. Вот почему нет необходимости в больших файлах конфигурации, таких как Helm Values.yaml или Cubernetes POD Конфигурация Отказ
Suginpacks Hood Conventer по конфигурации и, следовательно, не требуют сложных настроек, чтобы настроить внутреннюю работу его оснастки. Вместо этого Buildpacks обнаруживают, что связано на основе содержимого приложения, что означает, что конфигурация обычно ограничивается простыми свойствами, которые определяются человеком.
Buildpacks также способствуют инфраструктуре как Императив код (а не декларативный ). Сами SugetPacks являются функциями, которые работают против приложения и лучше всего реализуются на языках более высокого уровня, которые могут использовать библиотеки и тестирование.
Все эти свойства обеспечивают простой формат конфигурации и схема, который не определяет сложные структуры. Но это не означает, что решение использовать TOML было просто.
Вы слышите меня, главным TOML?
Существует множество других форматов проекта Buildpacks, помимо YAML или TOML, а основная команда Buildpacks рассматривала все эти в первые дни проекта.
JSON имеет простой синтаксис и семантику, отличные для обмена данными, но он не делает отличный читаемый человеком формат; частично, потому что это не допускает комментариев. Buildpacks Используйте JSON для машиночитаемого конфигурации, например, метаданные изображения OCI. Но это не должно быть использовано для чего-либо человек пишет.
XML имеет невероятно мощные свойства, включая проверку схем, инструменты преобразования и богатую семантику. Это отлично подходит для разметки (как HTML) Но это намного сложно из формата для того, что требуют стройных парней.
В конце концов, проект Buildpacks был удобным выбором TOML, потому что было твердое предшествующее искусство (даже если формат несколько неясен). В облачной родной экосистемы Контейнер Проект использует TOML. Кроме того, многие языковые экосистемные инструменты, такие как Груз (для ржавчины) и Поэзия (для Python) Используйте TOML для настройки приложений.
Начиная с обратного отсчета, двигатели На
Основным недостатком TOML является его повседневность. Инструменты, которые анализируют и запросы TOML-файлы (что-то сопоставимое с JQ
), не доступно легко, и формат все еще может быть прозвучен новым пользователям, даже если это довольно просто.
Каждая тенденция должна начинать где-то начать, а в облачных местных проектах Buildpacks рада быть одним из проектов, находящихся через дверь.
Оригинал: «https://dev.to/heroku/ground-control-to-major-toml-why-buildpacks-use-a-most-peculiar-format-5f99»