Цель этой статьи — представить TOSCA (спецификацию топологии и оркестровки для облачных приложений) в самых простых терминах, чтобы пользователи поняли, что это такое, почему важно Cloudify , и некоторые из его основных концепций.
Что такое TOSCA в двух словах?
Во-первых, TOSCA — это спецификация, целью которой является стандартизация описания программных приложений и всего, что требуется для их работы в «облаке».
Это означает, что TOSCA предоставляет способ описания не только приложения, но также его зависимостей и вспомогательной (облачной) инфраструктуры.
Каковы основные понятия TOSCA?
В TOSCA есть два основных строительных блока: узлы и отношения.
Узел может быть компонентом инфраструктуры, таким как подсеть, сеть, сервер (он может даже представлять кластер серверов), или он может быть программным компонентом, таким как служба или среда выполнения.
Между тем, отношения описывают, как узлы связаны друг с другом.
TOSCA имеет понятие типов.
Например, «вычислительный» узел, который представляет ресурс с процессором. Эти типы могут использоваться в «шаблонах служб» или, как их называют в Cloudify, «чертежах».
В чертеже тип узла используется в «шаблоне узла». Таким образом, в Cloudify сервер может выглядеть так:
some_virtual_host:
type: cloudify.nodes.Compute
Это шаблон узла с именем «some_virtual_host», и он имеет тип узла «cloudify.nodes.Compute».
Как узлы, так и отношения могут иметь программируемые реализации, так что оркестратор, такой как Cloudify, может прочитать их определение в проекте и вызвать определенные действия.
Так, например, в Cloudify это можно представить так:
some_virtual_host:
type: cloudify.nodes.Compute
interfaces:
cloudify.interfaces.lifecycle:
create: scripts/create.sh
Базовые типы, будь то типы узлов или типы отношений, могут быть получены пользователем для создания новых типов. Здесь мы демонстрируем гипотетическое преобразование типа Compute в тип «BladeServer».
node_types:
cloudify.nodes.BladeServer:
derived_from: cloudify.nodes.Compute
interfaces:
cloudify.interfaces.lifecycle:
create: scripts/automation/create.sh
Как Cloudify связан с TOSCA?
На рынке молодых инструментов и продуктов облачной оркестровки Cloudify стремится быть лучшим, кто внедряет этот стандарт.
DSL Cloudify основан на простом профиле YAML от TOSCA, который позволяет писать чертежи TOSCA на YAML. (Изначально TOSCA написан на XML, но поскольку в XML много ненужных знаков препинания, профиль YAML проще в использовании.)
Частью ядра Cloudify является анализатор Cloudify DSL, который стремится считывать и проверять чертежи TOSCA (YAML) и обеспечивает механизм для сопоставления операций с плагинами Cloudify .
Все чертежи TOSCA указывают версию определений TOSCA, указанную в чертеже. В Cloudify мы в настоящее время используем определенную версию Cloudify DSL, которая ищет пространство имен, специфичное для Cloudify.
В следующих нескольких версиях Cloudify DSL будет расширен, чтобы включить больше возможностей TOSCA, которые здесь не обсуждались.
Даже сегодня они довольно близки. В этой статье я предоставил фрагменты кода Cloudify вместо TOSCA.
Этот фрагмент:
some_virtual_host:
type: cloudify.nodes.Compute
interfaces:
cloudify.interfaces.lifecycle:
create: scripts/create.sh
С таким же успехом может быть:
some_virtual_host:
type: tosca.nodes.Compute
interfaces:
standard:
create: scripts/create.sh
Полное обсуждение того, где TOSCA и Cloudify DSL выровняются, выходит за рамки этой статьи, как и полные возможности Cloudify.
Вместо этого я сосредоточился на изложении основ TOSCA. TOSCA легко принять, и я надеюсь, что эта статья помогла представить элементарные концепции.
Для дальнейшего чтения я предлагаю документ TOSCA Simple Profile .
Я также рекомендую документацию по Cloudify DSL для Cloudify версии 3.2: Cloudify DSL
В моих будущих публикациях в блоге я буду просить расширить TOSCA и Cloudify с более продвинутыми примерами.