TrueNAS CLI: Команды, настройка, автоматизация | Руководство 2024 | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

TrueNAS CLI: Полное руководство по командной строке для управления хранилищем

13 февраля 2026 7 мин. чтения #cli #devops #truenas #zfs #автоматизация #командная строка #хранение данных

Представь, что тебе нужно быстро настроить новый пул 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 CLI доступен в двух основных «флейворах»: TrueNAS Core (на базе FreeBSD) и TrueNAS Scale (на базе Linux). Большинство команд идентичны, но есть нюансы в путях и некоторых утилитах.

Первые шаги: доступ и базовые команды

Подключись к своему серверу TrueNAS по SSH. По умолчанию для администрирования используется пользователь root. После входа ты окажешься в стандартной оболочке. Сам CLI TrueNAS запускается командой:

bash
cli

Ты увидишь интерактивную оболочку с приглашением >. Для просмотра доступных команд и модулей используй:

bash
> show

Это выведет древовидную структуру всех доступных команд, сгруппированных по функциональности (Storage, Network, Account и т.д.).

Осторожно! Все команды в интерактивном режиме cli требуют подтверждения (y или n) для деструктивных действий (удаление пула, диска). Будь внимателен.

Работа в интерактивном и неинтерактивном режиме

TrueNAS CLI можно использовать двумя способами:

  1. Интерактивный режим: Запускаешь cli и работаешь внутри оболочки, переходя по «папкам» команд.
  2. Неинтерактивный (скриптовый) режим: Выполняешь команды напрямую, передавая полный путь.

Пример неинтерактивного выполнения:

bash
cli -c "system dataset query"
# Или так:
cli system dataset query

Основные модули и команды TrueNAS CLI

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

1. Работа с дисками и пулами ZFS (Storage)

Проверим, какие диски доступны в системе:

bash
> storage disk query
# Выведет таблицу со всеми дисками, их размерами, моделью и состоянием SMART.

Посмотрим список пулов ZFS:

bash
> storage pool query
# Или получи детальную информацию о конкретном пуле:
> storage pool query name="tank"

2. Управление общими ресурсами (Sharing)

Допустим, нужно добавить новую SMB-шару. Сначала создадим dataset:

bash
> storage dataset create name="tank/smb_share"

Теперь создадим саму шару:

bash
> sharing smb create path="/mnt/tank/smb_share" name="dev_share" comment="Share for developers"

3. Настройка сети (Network)

Просмотр сетевых интерфейсов и их конфигурации:

bash
> network interface query
> network configuration show

Мощь автоматизации: скрипты и API

Истинная сила TrueNAS CLI раскрывается при написании скриптов. Допустим, нам нужно создать бекап конфигурации системы каждую неделю. Вот пример bash-скрипта:

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:

bash
midclt call system.info | jq .
# Используй jq для красивого вывода и фильтрации.
# Получим только версию ОС:
midclt call system.info | jq -r '.version'

Создание задачи (cron job) для проверки состояния дисков:

bash
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 и начинай исследовать. Удачи!

Поделиться:
Сохранить гайд? В закладки браузера