Представь, что тебе нужно быстро настроить новый пул ZFS, добавить пользователя или проверить состояние дисков на сервере TrueNAS. Открывать веб-интерфейс каждый раз неудобно, особенно если ты работаешь через SSH или пишешь скрипты для автоматизации. Вот здесь на сцену выходит TrueNAS CLI — мощный инструмент командной строки, который даёт полный контроль над твоей системой хранения. Давай разберём, как им пользоваться эффективно.
Что такое TrueNAS CLI и зачем он нужен
TrueNAS CLI (Command Line Interface) — это утилита командной строки, которая предоставляет доступ ко всем функциям TrueNAS через текстовый интерфейс. В отличие от веб-интерфейса, CLI позволяет:
- Автоматизировать рутинные задачи с помощью скриптов (bash, Python).
- Быстро выполнять операции без загрузки графического интерфейса.
- Интегрировать TrueNAS в DevOps-пайплайны и инструменты типа Ansible, Terraform.
- Работать с системой через SSH-сессию, что критично для headless-серверов.
- Использовать API TrueNAS напрямую через команды
midclt.
Первые шаги: доступ и базовые команды
Подключись к своему серверу TrueNAS по SSH. По умолчанию для администрирования используется пользователь root. После входа ты окажешься в стандартной оболочке. Сам CLI TrueNAS запускается командой:
cli
Ты увидишь интерактивную оболочку с приглашением >. Для просмотра доступных команд и модулей используй:
> show
Это выведет древовидную структуру всех доступных команд, сгруппированных по функциональности (Storage, Network, Account и т.д.).
cli требуют подтверждения (y или n) для деструктивных действий (удаление пула, диска). Будь внимателен.
Работа в интерактивном и неинтерактивном режиме
TrueNAS CLI можно использовать двумя способами:
- Интерактивный режим: Запускаешь
cliи работаешь внутри оболочки, переходя по «папкам» команд. - Неинтерактивный (скриптовый) режим: Выполняешь команды напрямую, передавая полный путь.
Пример неинтерактивного выполнения:
cli -c "system dataset query"
# Или так:
cli system dataset query
Основные модули и команды TrueNAS CLI
Давай рассмотрим самые полезные модули на практике. Представь, что тебе нужно провести аудит системы.
1. Работа с дисками и пулами ZFS (Storage)
Проверим, какие диски доступны в системе:
> storage disk query
# Выведет таблицу со всеми дисками, их размерами, моделью и состоянием SMART.
Посмотрим список пулов ZFS:
> storage pool query
# Или получи детальную информацию о конкретном пуле:
> storage pool query name="tank"
2. Управление общими ресурсами (Sharing)
Допустим, нужно добавить новую SMB-шару. Сначала создадим dataset:
> storage dataset create name="tank/smb_share"
Теперь создадим саму шару:
> sharing smb create path="/mnt/tank/smb_share" name="dev_share" comment="Share for developers"
3. Настройка сети (Network)
Просмотр сетевых интерфейсов и их конфигурации:
> network interface query
> network configuration show
Мощь автоматизации: скрипты и API
Истинная сила TrueNAS CLI раскрывается при написании скриптов. Допустим, нам нужно создать бекап конфигурации системы каждую неделю. Вот пример bash-скрипта:
#!/bin/bash
# backup_truenas_config.sh
BACKUP_DIR="/mnt/tank/backups/config"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/truenas_config_${DATE}.db"
# Создаём бекап через CLI
cli -c "system config backup file=${BACKUP_FILE}"
# Проверяем успешность
if [ $? -eq 0 ]; then
echo "[SUCCESS] Backup created: ${BACKUP_FILE}"
# Чистим старые бекапы, оставляем последние 5
ls -t ${BACKUP_DIR}/*.db | tail -n +6 | xargs rm -f
else
echo "[ERROR] Backup failed!"
exit 1
fi
Прямой доступ к API через midclt
Под капотом cli использует API-вызовы через утилиту midclt. Ты можешь вызывать её напрямую для более тонкого контроля. Например, получим информацию о системе в формате JSON:
midclt call system.info | jq .
# Используй jq для красивого вывода и фильтрации.
# Получим только версию ОС:
midclt call system.info | jq -r '.version'
Создание задачи (cron job) для проверки состояния дисков:
midclt call cronjob.create '{
"enabled": true,
"command": "smartctl -a /dev/ada0 | mail -s \"SMART Report ada0\" admin@example.com",
"description": "Daily SMART check for ada0",
"schedule": {
"minute": "0",
"hour": "2",
"dom": "*",
"month": "*",
"dow": "*"
}
}'
Сравнение: Web UI vs CLI vs API
| Критерий | Веб-интерфейс (Web UI) | Командная строка (CLI) | Прямой API (midclt) |
|---|---|---|---|
| Скорость выполнения | Медленнее (загрузка GUI) | Быстро | Очень быстро |
| Автоматизация | Ограничена | Отличная (скрипты) | Идеальная (интеграции) |
| Кривые обучения | Низкая (интуитивно) | Средняя | Высокая (нужно знать API) |
| Идеальный сценарий | Разовая настройка, мониторинг | Администрирование, скрипты | DevOps-пайплайны, свои утилиты |
Лучшие практики и советы от ментора
- Используй автодополнение: В интерактивном режиме нажимай Tab для подсказок по командам и аргументам.
- Всегда проверяй вывод
queryпередdelete: Выполни команду с фильтром, убедись, что затронешь правильный объект. - Пиши идемпотентные скрипты: Твой скрипт должен корректно обрабатывать ситуацию, если ресурс уже создан. Проверяй через
query. - Логируй действия: В скриптах добавляй вывод в syslog или файл для аудита:
logger -t truenas_cli "Создан пул $POOL". - Изучи
jq: Для парсинга JSON-выводаmidcltэто незаменимый инструмент.
sudo для запуска скриптов из CI/CD, вместо использования root.
Частые вопросы (FAQ) по TrueNAS CLI
Как сбросить пароль root через CLI, если я потерял доступ к веб-интерфейсу?
Подключись к консоли сервера (через IPMI или физически) или по SSH, если доступ ещё есть. Выполни команду: cli -c "user update root password=new_strong_password". После этого войди в веб-интерфейс с новым паролем.
Можно ли управлять Docker контейнерами в TrueNAS Scale через CLI?
Да, TrueNAS Scale использует Kubernetes (k3s) и Helm. Для управления приложениями используй команды модуля app: > app chart_release query. Для прямого управления pod'ами можно использовать k3s kubectl, но это выходит за рамки стандартного CLI.
Как экспортировать весь список команд CLI для изучения?
В интерактивном режиме выполни: > show --all > /tmp/truenas_commands.txt. Или из обычной оболочки: echo "show --all" | cli > commands.txt. Это даст полную карту всех доступных команд.
Чем отличается cli от midclt?
cli — это высокоуровневая, удобная оболочка с валидацией и подтверждениями. midclt — это низкоуровневая утилита для прямых вызовов API Middleware (RPC). cli внутри себя использует midclt. Для скриптов, где нужен точный контроль над выводом (JSON), используй midclt.
Заключение
TrueNAS CLI — это не просто альтернатива веб-интерфейсу, а мощный инструмент для системного администратора и DevOps-инженера. Начни с простых команд мониторинга (storage disk query, system alert query), затем автоматизируй рутинные задачи создания datasets и шаринга, и наконец, интегрируй TrueNAS в свою инфраструктуру как код с помощью midclt и Ansible-модулей. Помни: чем больше операций ты перенесёшь в скрипты, тем надёжнее, воспроизводимее и масштабируемее станет твоя система хранения.
Теперь у тебя есть карта. Войди в CLI, выполни show и начинай исследовать. Удачи!