Перейти к содержимому
Elemctl
Русский
Esc
↑↓navigate↵open⌘Jpreview
На этой странице

Настройка

Параметры подключения, переменные окружения и язык интерфейса.

Настройка

Реквизиты подключения elemctl берёт из переменных окружения либо из файла .env в текущем каталоге. Переменная окружения сильнее файла.

Переменная Назначение
ELEMENT_BASE_URL базовый URL платформы с http:// или https://, например https://1cmycloud.com
ELEMENT_CLIENT_ID Client-Id для получения токена
ELEMENT_CLIENT_SECRET Client-Secret
ELEMENT_APP_ID приложение по умолчанию (необязательно)
ELEMENT_PROJECT_ID проект по умолчанию (необязательно)
ELEMENT_SPACE_ID пространство по умолчанию (необязательно)
ELEMENT_CA_FILE дополнительный PEM-файл CA для частного облака (необязательно)
ELEMENT_TLS_STRICT строгая проверка сертификатов по RFC 5280; по умолчанию true
ELEMENT_TLS_VERIFY проверка сертификата и имени сервера; по умолчанию true

Client-Id и Client-Secret выпускают в панели управления 1cmycloud, в разделе интеграций Console API. Шаблон файла – .env.example.

Настройка через .env

Скопируйте шаблон в каталог, из которого будете запускать elemctl:

cp .env.example .env

Затем заполните как минимум адрес платформы, Client-Id и Client-Secret:

ELEMENT_BASE_URL=https://1cmycloud.com
ELEMENT_CLIENT_ID=client-id
ELEMENT_CLIENT_SECRET=client-secret

Без параметра --env-file инструмент ищет файл с точным именем .env в текущем каталоге запуска. Это не обязательно каталог проекта и не каталог, куда установлен elemctl. В репозитории elemctl файл .env исключён из Git. Если вы заводите такой файл в другом репозитории, добавьте .env в его .gitignore: файл хранит секрет, и ему нечего делать ни в коммитах, ни в журналах работы.

Если конфигурация лежит в другом месте, укажите её явно. Абсолютный путь надёжнее для MCP-сервера, фоновых запусков и CI:

elemctl --env-file /opt/elemctl/cloud.env apps list

Параметр можно ставить и после команды:

elemctl apps list --env-file /opt/elemctl/cloud.env

Относительный путь считается от текущего каталога. Несколько файлов дают работу с разными стендами, и переменные процесса при этом менять не нужно:

elemctl --env-file ./env/public-cloud.env apps list
elemctl --env-file ./env/local-cloud.env apps list

Пример конфигурации локального облака с доверенным, но устаревшим внутренним CA, который Python 3.13 отклоняет из-за строгой проверки RFC 5280:

ELEMENT_BASE_URL=https://cloud.internal.example
ELEMENT_CLIENT_ID=client-id
ELEMENT_CLIENT_SECRET=client-secret
ELEMENT_TLS_STRICT=false

Если внутренний CA уже доверен, но Python 3.13 отклоняет его с ошибкой Basic Constraints of CA cert not marked critical, задайте ELEMENT_TLS_STRICT=false. Проверка цепочки, срока действия, подписи и имени сервера остаётся на месте. Выключается только строгий профиль RFC 5280 в OpenSSL. Если есть возможность, лучше исправить или перевыпустить сам CA.

Если частного CA нет в системном хранилище, укажите ELEMENT_CA_FILE=/path/to/internal-ca.pem. Значение ELEMENT_TLS_VERIFY=false полностью отключает проверку сертификата и имени сервера. Это крайняя мера и только для изолированной тестовой сети. При отключённой проверке каждая команда печатает предупреждение в stderr, а в stdout остаётся один ответ, так что вывод JSON по конвейеру оно не портит. Логические значения принимаются такие: true/false, yes/no, on/off и 1/0.

ELEMCTL_NO_PROXY решает другую задачу: направляет запрос мимо прокси окружения. Он помогает, когда прокси не видит внутренний адрес или подменяет сертификат. TLS-проверку сервера он не отменяет. Если прямое соединение дошло до сервера и кончилось ошибкой CERTIFICATE_VERIFY_FAILED, настройте доверенный CA или параметры ELEMENT_TLS_*.

В отличие от остальных переменных поведения инструмента ниже, ELEMCTL_NO_PROXY можно задать и в .env самого стенда, рядом с реквизитами – переменная окружения по-прежнему сильнее, если она задана. Это нужно для MCP: один серверный процесс обслуживает несколько стендов через env_file, по одному вызову за раз, а задать переменную окружения только для одного из них нечем. Значение из файла действует лишь на запросы этого стенда – второй стенд, обслуживаемый тем же процессом, облачный он или локальный, оно не затрагивает. Уже запущенный сервер правку подхватит и без перезапуска, включая стенд по умолчанию: кеш клиента учитывает не только env_file (а без него – свой --env-file сервера, если он был задан при старте, а иначе .env рабочего каталога), но и время изменения и размер файла, так что правка – скажем, эта самая переменная – войдёт в силу на следующем же вызове к этому стенду. Изменение, не тронувшее байты, правкой тут не считается: снимите с файла право на чтение – кеш оставит уже собранного клиента, потому что ни время изменения, ни размер не сдвинулись. Это про собственный elemctl mcp; объект Config, переданный серверу напрямую приложением, которое встраивает elemctl, файла за собой не имеет и вместо этого остаётся закреплён на весь процесс.

Поведение инструмента

ELEMCTL_LANG, ELEMCTL_NO_PLUGINS, ELEMCTL_DATA_DIR и ELEMCTL_REGISTRY_LIMIT задаются только окружением – в .env подключения им не место. ELEMCTL_NO_PROXY – исключение, о котором сказано выше: он читает тот же файл, что и подключение.

Переменная Назначение
ELEMCTL_LANG язык сообщений и справки (ru, en); флаг --lang сильнее
ELEMCTL_NO_PROXY обходить прокси окружения во всех вызовах (петлевые и приватные адреса обходятся и так); также читается из .env стенда
ELEMCTL_NO_PLUGINS не искать плагины: работать только со штатными возможностями ядра
ELEMCTL_DATA_DIR каталог локального реестра загрузок; по умолчанию %LOCALAPPDATA%\elemctl в Windows и $XDG_STATE_HOME/elemctl (~/.local/state/elemctl) в остальных системах
ELEMCTL_REGISTRY_LIMIT сколько загрузок хранит локальный реестр загрузок; по умолчанию 1000, 0 – хранить все

Локальный реестр загрузок

Платформа хранит коммит сборки, загруженной в существующий проект, и больше ничего о том, откуда сборка пришла. Поэтому каждая загрузка elemctl – deploy, builds upload, probe – ещё и дописывает строку в uploads.jsonl в каталоге данных из таблицы: ид сборки, проект, версию, ветку, коммит, были ли в дереве незакоммиченные правки, каталог исходников, стенд, команду и время. builds list --brief и apps get берут оттуда ветку и коммит, которые карточка оставила пустыми, и называют источник каждого значения.

Реестр локальный. Сборки, загруженной с другой машины, из CI или версией elemctl без реестра, в нём нет, и тогда перечни показывают то, что знает платформа. Если реестр не удалось записать, это предупреждение, а не сорванная загрузка; файл можно удалить в любой момент, и уйдёт с ним только история этой машины.

Реестр хранит тысячу последних загрузок; ELEMCTL_REGISTRY_LIMIT задаёт другое число, а 0 – хранить все. Когда файл перерастёт предел на десятую часть, следующая загрузка обрежет его до последних строк: сборки, которые проект ещё держит и на которых работают приложения, – свежие, а необрезанный файл рос, пока машина выкатывала сборки.

Окружение CI

Своих переменных сборка не заводит, зато читает те, что CI выставляет сам. Поэтому в конвейере не нужны ни флаг версии, ни правка исходников:

Переменная Назначение
CI_PIPELINE_IID номер запуска; из него берётся суффикс версии сборки, когда нет ни --build-version, ни предыдущей сборки
GITHUB_RUN_NUMBER то же, второй по очереди
BUILD_NUMBER то же, третий по очереди; берётся первое числовое значение
CI_COMMIT_BRANCH имя ветки для манифеста, когда git в отцепленном HEAD
CI_COMMIT_REF_NAME то же, второй по очереди
GITHUB_REF_NAME то же, третий по очереди; значение HEAD отбрасывается, и поле остаётся пустым

Язык

Сообщения об ошибках, прогресс и текст --help выходят на русском и английском. JSON-результат от языка не зависит. Язык выбирается по очереди: --lang ru|en, затем переменная ELEMCTL_LANG, затем системная локаль (LC_ALL, потом LANG), затем русский. Флаг --lang читается до построения парсера, поэтому elemctl --lang en --help печатает справку по-английски.

Последнее обновление 25 сентября 2026 г.

Эта страница была полезной?