Найти в Дзене

Правила wb-rules и Мирта: деплой на контроллер умного дома

Вы создали отличный код, но как передать его на контроллер? Автоматизация этого процесса является одной из задач фреймворка. В актуальной версии Мирты применяется специальная утилита командной строки mirta deploy, входящая в состав пакета @mirta/cli. В отличие от прежнего способа с настроенной в package.json командой rsync, этот вариант реализации работает одинаково на всех платформах — будь то
Оглавление

Вы создали отличный код, но как передать его на контроллер? Автоматизация этого процесса является одной из задач фреймворка.

Утилита деплоя

В актуальной версии Мирты применяется специальная утилита командной строки mirta deploy, входящая в состав пакета @mirta/cli. В отличие от прежнего способа с настроенной в package.json командой rsync, этот вариант реализации работает одинаково на всех платформах — будь то Windows (через WSL2), Linux или macOS.

Особое внимание уделено безопасности. Параметры подключения, такие как адрес контроллера, имя пользователя и способ аутентификации больше не нужно хранить в публичных файлах. Теперь они по умолчанию вынесены в .env.local — файл локальных переменных, который добавлен в .gitignore. Это предотвращает случайное раскрытие инфраструктурной информации при работе с публичными репозиториями.

Первичная настройка утилиты выполняется при создании проекта. Вам нужно лишь ответить на несколько сопутствующих вопросов мастера и он сформирует необходимые файлы:

Сейчас для подключения и передачи данных на контроллер mirta deploy использует протокол SSH.

Перечень доступных методов доставки кода может быть расширен на основе ваших предложений.

Полноценно поддерживаются SSH-ключи и токены PKCS#11. Аутентификация по паролю или FIDO2 (ключи id_ecdsa_sk, id_ed25519_sk) возможна, но будет требовать подтверждения на каждом шаге деплоя — ssh-agent кэширует только PIN-код токена PKCS#11 и парольную фразу закрытого ключа.

О том, как настроить подключение к контроллеру по SSH-ключу, рассказано в официальном руководстве Wiren Board:

Как подключиться к консоли контроллера Wiren Board по SSH — Wiren Board

Если вы хотите переносить закрытый ключ с одного компьютера на другой и минимизировать риск его утечки, можно рассмотреть вариант использования токена с поддержкой PKCS#11, например Рутокен ЭЦП:

Подготовка к работе

В зависимости от операционной системы, начальные шаги будут различаться.

Настройка в Windows

Понадобится настроить подсистему WSL2, установив в неё пакеты openssh-client и rsync.

На Windows 10 по умолчанию установлена первая версия WSL, которую нужно обновить до WSL2.

Откроем терминал PowerShell и выполним в нём команду

wsl --install Debian

Контроллер Wiren Board работает под управлением операционной системы Debian, поэтому для упрощения можно работать с ней и на компьютере.

После установки дистрибутива, проверим его версию WSL:

wsl --list --verbose

Отобразится таблица установленных образов. Напротив Debian в колонке Version должна стоять цифра 2.

Далее введём команду wsl и нажмём Enter, после чего перейдём в командную строку Linux. Здесь выполним обновление списка пакетов и установим те, что нужны для работы утилиты деплоя:

yes Y | (sudo apt update && sudo apt upgrade && sudo apt install opensc openssh-client rsync)

В процессе система несколько раз попросит подтвердить операцию. Используя «yes Y», мы заранее отвечаем утвердительно на все дальнейшие вопросы.

Настройка в Linux Debian 13

Обычно дистрибутив уже содержит актуальные версии openssh-client и rsync. На всякий случай, можно выполнить в консоли

sudo apt install opensc openssh-client rsync

Настройка в macOS

Понадобится установить актуальную версию rsync, например через Brew.

Конфигурация деплоя

Для настройки поведения деплоя применяется специальный файл mirta.config.json, который автоматически создаётся вместе с проектом при выборе опций SSH (минимальная версия) и примеров использования (версия с подробными комментариями).

Конфигурация деплоя по умолчанию
Конфигурация деплоя по умолчанию

Секция connections позволяет задать именованные строки подключения к контроллеру. Для безопасности рекомендуется использовать переменные окружения:

"connections": {
"default": "ssh://root@192.168.42.1",
"work": "${WB_CONN_SECRET}"
}

Секция deploy.mappings задаёт правила копирования: откуда брать файлы в проекте и куда помещать на контроллере. Каждое правило — отдельный вызов rsync.

⚠️ Важно! Поведение деплоя по умолчанию включает очистку целевых директорий для скриптов и модулей wb-rules:

  • Очистка обеспечивает «чистый лист» — то, что запущено на контроллере, полностью соответствует текущему состоянию проекта.
  • Это критично для воспроизводимости и отладки.

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

Отключить очистку можно установкой опции маппинга cleanup: false.

Свойство маппинга pro­tect позволяет задать перечень файлов, которые не будут удалены с контроллера при очистке. Поддерживаются wildcard-шаблоны.

Секция deploy.profiles содержит именованные профили деплоя. Профиль — это готовое сочетание подключения и перечня применяемых маппингов.

Свойство connection в профиле может быть указано тремя способами: напрямую как строка подключения, по имени — ссылаясь на запись из секции connections, или через переменные окружения, чтобы гибко управлять параметрами в разных средах.

При запуске команды деплоя можно указать профиль с помощью параметра "profile". Он определяет, какие настройки использовать:

pnpm mirta deploy --profile=home

Если нужно применить этот профиль к другому подключению, поможет параметр "to". Он позволяет временно переопределить целевое соединение — как строкой подключения, так и именем из секции connections:

pnpm mirta deploy --profile=work --to=ssh://root@192.168.42.1
pnpm mirta deploy --profile=home --to=connection_name

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

Передача файлов на контроллер

Утилита заменяет стандартный npm-скрипт проектов Мирты wb:deploy, поэтому для запуска можно выполнить в терминале VSCode

pnpm wb:deploy

Система выполнит необходимые проверки и запустит передачу файлов.

Выполнение деплоя в Linux Debian
Выполнение деплоя в Linux Debian

Предыдущий вариант запуска равнозначен прямому вызову:

pnpm mirta deploy

При выполнении команды можно добавить ключ --dry-run, так программа отобразит запланированные изменения, но не станет применять их:

pnpm mirta deploy --dry-run

Симуляция позволяет оценить последствия деплоя, отображая в консоль все изменения в виде списка.

Выполнение симуляции деплоя
Выполнение симуляции деплоя

Если язык интерфейса не определился автоматически, то для переключения на русский поможет параметр смены локали --locale=ru

pnpm mirta deploy --locale=ru

Подробное описание mirta deploy доступно по ссылке:

core/packages/mirta-cli/README.ru.md at latest · wb-mirta/core

Послесловие

Mirta создаётся и развивается как open-source проект — без рекламы и скрытых целей.

Я делюсь всеми решениями открыто: код, документация, примеры — доступны каждому.

Если вам нравится направление, в котором движется фреймворк, и вы хотите, чтобы он становился лучше, стабильнее и удобнее — вы можете стать спонсором на Boosty.

Ваш вклад поможет мне:

  • уделять больше времени на разработку и документацию,
  • закупать оборудование и тестировать систему в реальных условиях,
  • оперативно реагировать на запросы сообщества.

А среди преимуществ для спонсоров — доступ к закрытому каналу общения, приоритет в обсуждении идей и возможность влиять на roadmap.

Также всегда рад видеть обратную связь и помощь в любом виде:

  • Баги и предложения — через Issues,
  • Обсуждения и обмен опытом — в Discussions.

Спасибо, что читаете, используете и верите в Mirta.