Упаковка приложения
$ tt pack TYPE [OPTION ...] ..
Команда tt pack упаковывает приложение в дистрибутивный пакет указанного TYPE:
tgz: создание архива.tgz.deb: создание DEB-пакета.rpm: создание RPM-пакета.
Приведенная ниже команда создает DEB-пакет со всеми приложениями из текущего окружения tt:
$ tt pack deb
Эта команда создает файл .deb, имя которого зависит от имени каталога окружения и архитектуры операционной системы,
например, test-env_0.1.0.0-1_x86_64.deb. Пакет содержит следующие файлы:
- Содержимое каталогов приложений: исходные файлы, ресурсы, зависимости.
- Файлы окружения
tt: исполняемые файлыtarantoolиtt, файл конфигурацииtt.yaml, внешние модули, заголовочные файлы. - Файлы unit-файлов
.serviceдля запуска приложений в качестве службsystemd(отдельный файл для каждого приложения).
Команде tt pack можно передавать различные параметры для настройки свойств генерирования, например,
задать имя пакета, выбрать включаемые артефакты, указать необходимые зависимости приложения.
Unit-файл systemd, создаваемый командой tt pack, можно настроить. Чтобы добавить параметры в unit-файл,
определите их в YAML-файле с именем systemd-unit-params.yml в
каталоге приложения.
$ tt pack rpm # unit-файл с параметрами из systemd-unit-params.yml, если он существует
Также можно передать параметры unit-файла из произвольного файла, добавив параметр --unit-params-file к вызову tt pack:
$ tt pack rpm --unit-params-file my-params.yml # unit file with parameters from my-params.yml" > "# unit-файл с параметрами из my-params.yml
tt pack поддерживает следующие параметры unit-файла systemd:
FdLimit– количество открытых файловых дескрипторов (LimitNOFileв unit-файле).instance-env– список переменных окружения в формате<VAR_NAME>: <VALUE>. Каждый элемент списка добавляет строкуEnvironment=<VAR_NAME>=<VALUE>в unit-файл.
Пример файла systemd-unit-params.yml:
FdLimit: 200instance-env:INSTANCE: "inst:%i"TARANTOOL_WORKDIR: "/tmp"
Команда tt pack может генерировать контрольные суммы и подписи для проверки целостности при запуске приложения. Эти файлы:
hashes.jsonиhashes.json.sigв каждом каталоге приложения.hashes.jsonсодержит контрольные суммы SHA256 исполняемых файлов, используемых приложением, и его файла конфигурации.hashes.json.sigсодержит цифровую подпись дляhashes.json.env_hashes.jsonиenv_hashes.json.sigв корневом каталоге окружения – аналогичные файлы для окруженияtt. Они содержат контрольные суммы исполняемых файлов Tarantool иtt, а также файла конфигурацииtt.yaml.
Для формирования контрольных сумм и подписей для проверки целостности используйте параметр --with-integrity-check.
Его аргумент должен быть RSA-закрытым ключом.
Чтобы создать архив tar.gz с артефактами проверки целостности:
$ tt pack tgz --with-integrity-check private.pem
Подробнее о проверке целостности при запуске приложения и во время выполнения см. в описании команды tt start.
Включить в пакет все артефакты. В этом случае пакет может включать снимки, WAL-файлы и журналы.
Указать приложения, включаемые в пакет.
Пример
$ tt pack tgz --app-list app1,app3
Применимо к: tgz
Упаковать архив, совместимый с Cartridge CLI.
Применимо к: deb, rpm
Указать зависимости, включаемые в RPM- и DEB-пакеты.
Пример
$ tt pack deb --deps 'wget,make>0.1.0,unzip>1,unzip<=7'
Применимо к: deb, rpm
Указать путь к файлу, содержащему зависимости, включаемые в RPM- и DEB-пакеты. Например, файл package-deps.txt ниже
содержит несколько зависимостей и их версии:
unzip==6.0neofetch>=6,<7gcc>8
Если этот файл находится в текущем каталоге, команда tt pack может выглядеть так:
$ tt pack deb --deps-file package-deps.txt
Указать имя пакета.
Пример
$ tt pack tgz --filename sample-app.tar.gz
Указать имя пакета.
Пример
$ tt pack tgz --name sample-app --version 1.0.1
Применимо к: deb, rpm
Указать путь к скрипту предустановки для RPM- и DEB-пакетов.
Пример
$ tt pack deb --preinst pre.sh
Применимо к: deb, rpm
Указать путь к скрипту постустановки для RPM- и DEB-пакетов.
Пример
$ tt pack deb --postinst post.sh
Указать версию Tarantool для упаковки в Docker-контейнер. Используется только с --use-docker.
Путь к файлу с пользовательскими параметрами unit-файла systemd.
Собрать пакет в Docker-контейнере с Ubuntu 18.04. Чтобы указать версию Tarantool, используемую в контейнере,
добавьте параметр --tarantool-version.
Перед выполнением tt pack с этим параметром убедитесь, что Docker запущен.
Указать версию пакета.
Пример
$ tt pack tgz --name sample-app --version 1.0.1
Включить в пакет бинарные файлы Tarantool и tt.
Сгенерировать контрольные суммы и подписи для проверки целостности при запуске приложения.
См. также раздел Формирование файлов для проверки целостности.
Добавить Tarantool и tt в качестве зависимостей пакета.
Не включать в пакет бинарные файлы Tarantool и tt.
Не включать в пакет внешние модули.