Переменные и секреты
Lizard хранит конфигурацию как секреты. У них есть два уровня видимости — сервис (по умолчанию) и проект (--global) — и они объединяются в окружение приложения в строго заданном порядке приоритета. Глобального уровня рабочего пространства нет.
Установка переменных
lizard secrets set принимает переменное число аргументов — можно задать один или несколько секретов сразу. По умолчанию он пишет в привязанный сервис:
lizard secrets set DATABASE_URL=postgres://… LOG_LEVEL=info
lizard secrets set API_KEY=sk_live_… --service apiДобавьте --global, чтобы записать в область проекта (увидит каждый сервис в проекте):
lizard secrets set NODE_ENV=production --globalПросмотр, удаление, импорт
lizard secrets list # current scope
lizard secrets list --show # reveal values
lizard secrets delete OLD_KEY ANOTHER_KEY # variadic
cat .env | lizard secrets import # import dotenv from stdinВсе флаги описаны в справке по команде lizard secrets.
Область видимости
| Уровень | Команда | Хранится как | Видимость для |
|---|---|---|---|
| Сервис (по умолчанию) | lizard secrets set K=v --service <svc> | secrets.services[<svc>] | только этот сервис |
| Проект (глобальный) | lizard secrets set K=v --global | secrets.shared | все сервисы в проекте |
По умолчанию — уровень сервиса. Скомпрометированный сервис может прочитать своё окружение — более широкая область видимости означает больше учётных данных без нужды. Используйте --global только для несекретных, заведомо публичных значений вроде LOG_LEVEL, NODE_ENV, флагов функций или публичного URL фронтенда SENTRY_DSN. Если не уверены, является ли значение секретом — считайте его секретом и ограничьте сервисом.
Для общих ресурсов вроде базы данных не кладите DSN в --global — привяжите его к каждому потребителю через ссылку:
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service workerРотация происходит один раз в аддоне; все ссылки обновятся автоматически.
Приоритет
Когда один ключ задан в нескольких местах, побеждает последний записавший:
addon-issued env < project secrets < project env < app env < app secrets < platform varsПоэтому секреты приложения перекрывают секреты проекта, а платформенные переменные (PORT, LIZARD_SERVICE_NAME, LIZARD_PROJECT_ID, LIZARD_PUBLIC_DOMAIN) применяются в самом конце и их нельзя переопределить.
Время сборки и время выполнения
Большинство изменений переменных вступают в силу без пересборки — сервис перезапускается и подхватывает их за несколько секунд. Исключения — значения времени сборки, зашиваемые в образ:
- Изменения
VITE_*иNEXT_PUBLIC_*требуют пересборку при следующем деплое.
См. Пайплайн сборки → триггеры пересборки.
Проверка
Убедитесь, что запущенный сервис видит именно то, что вы ждёте:
lizard ssh --service api -- envЕсли ожидаемого значения нет, см. Устранение неполадок → секрет или ссылка не отображается.
Локальная разработка
Запустите команду локально с внедрёнными секретами проекта и сервиса (удобно для скриптов и миграций):
lizard run --service api -- node scripts/seed.jsСм. lizard run vs. lizard ssh.
См. также
- Перекрёстные ссылки между сервисами — читайте значения одного сервиса из другого без копирования учётных данных.
lizard secrets— полная справка по командам.