Создание приложения из шаблона
$ tt create TEMPLATE_NAME [OPTION ...]
Команда tt create создает новое приложение Tarantool из шаблона.
Шаблоны приложений ускоряют разработку приложений Tarantool, определяя их начальную структуру и содержимое. Шаблон может включать код приложения, конфигурацию, скрипты сборки и другие ресурсы.
Утилита tt поставляется со встроенными шаблонами для популярных сценариев использования. Также
можно создавать пользовательские шаблоны для специфических задач.
Доступны следующие встроенные шаблоны:
vshard_cluster: приложение шардированного кластера для Tarantool 3.0 или новее.single_instance: приложение с одним экземпляром для Tarantool 3.0 или новее.cartridge: приложение кластера Cartridge для Tarantool 2.x.
Чтобы создать приложение app1 в текущем окружении tt из встроенного шаблона vshard_cluster:
$ tt create vshard_cluster --name app1 -dst /opt/tt/apps/
Команда запрашивает параметры топологии кластера, такие как количество шардов или роутеров, в интерактивном режиме во время выполнения.
Чтобы создать приложение в каталоге /opt/tt/apps с топологией кластера по умолчанию и принудительно
перезаписать каталог приложения, если он уже существует:
$ tt create vshard_cluster --name app1 -f --non-interactive -dst /opt/tt/apps/
Утилита tt ищет пользовательские шаблоны в каталогах, указанных в разделе
templates в файле конфигурации.
Чтобы создать приложение app1 из пользовательского шаблона simple_app в текущем каталоге:
$ tt create simple_app --name app1
Шаблоны приложений - это каталоги с файлами.
Главный файл шаблона - его манифест. Он определяет, как приложения создаются из этого шаблона.
Манифест шаблона - это YAML-файл с именем MANIFEST.yaml. Он может содержать следующие разделы:
description– описание шаблона.vars– переменные шаблона.pre-hookиpost-hook– пути к исполняемым файлам, запускаемым до и после создания приложения из шаблона.include– список файлов, которые остаются в каталоге приложения после создания. Если этот раздел опущен, приложение будет содержать все файлы и каталоги шаблона.
Все разделы необязательны.
Пример:
description: Template descriptionvars:- prompt: User namename: user_namedefault: adminre: ^\w+$- prompt: Retry countdefault: "3"name: retry_countre: ^\d+$pre-hook: ./hooks/pre-gen.shpost-hook: ./hooks/post-gen.shinclude:- init.lua- instances.yaml
Файлы и каталоги шаблона копируются в каталог приложения в соответствии с разделом include манифеста (или при его отсутствии).
Существует специальный тип файлов *.tt.template. Содержимое таких файлов корректируется для каждого
приложения с помощью переменных шаблона. При создании
приложения переменные в этих файлах заменяются заданными значениями, а расширение *.tt.template удаляется.
Переменные шаблона заменяются значениями, заданными при создании приложения.
Все шаблоны имеют переменную name. Ее значение берется из параметра --name.
Чтобы добавить другие переменные, определите их в разделе vars манифеста шаблона. Переменная
может иметь следующие атрибуты:
prompt: текст, предлагающий ввести значение переменной в интерактивном режиме. Обязательный.name: имя переменной. Обязательный.default: значение по умолчанию. Необязательный.re: регулярное выражение, которому должно соответствовать значение. Необязательный.
Пример:
vars:- prompt: Cluster cookiename: cluster_cookiedefault: cookiere: ^\w+$
Переменные можно использовать во всех именах файлов и в содержимом файлов *.tt.template.
Чтобы использовать переменную, заключите ее имя с точкой в начале в двойные фигурные
скобки: {{.var_name}} (как в синтаксисе текстовых шаблонов Golang).
Примеры:
-
Файл
init.lua.tt.template:local app_name = {{.name}}local login = {{.user_name}} -
Имя файла
{{.user_name}}.txt.
Переменные получают значения во время создания приложения из шаблона. По умолчанию tt create запрашивает значения
в интерактивном режиме. Для отключения интерактивного ввода можно использовать параметр -s (или --non-interactive).
В этом случае значения ищутся в следующем порядке:
-
В параметре
--var. Передайте строку в форматеvar=valueпосле параметра--var. Можно передать несколько переменных, каждая после отдельного параметра--var:$ tt create template app --var user_name=admin -
В файле. Укажите пары
var=valueв обычном текстовом файле, по одной в строке, и передайте его как значение параметра--vars-file:$ tt create template app --vars-file variables.txt
variables.txt может выглядеть так:
user_name=adminpassword=p4$$w0rdversion=2
Если переменная не инициализирована ни одним из этих способов, используется значение по умолчанию из манифеста.
Можно комбинировать разные способы передачи переменных в одном вызове команды tt create.
По умолчанию приложение создается в каталоге, названном в соответствии с указанным именем приложения (значением --name).
Чтобы изменить расположение приложения, используйте параметр -dst.
Путь к каталогу, в котором будет создано приложение.
Принудительно перезаписать каталог приложения, если он уже существует.
Имя приложения.
Неинтерактивный режим.
Определение переменной. Использование: --var var_name=value.
Путь к файлу с определениями переменных.