Как автоматически перенести Центр Интернета вещей с помощью Azure CLI

Используйте Azure CLI для переноса Центра Интернета вещей в новый регион, на новый уровень или в новую конфигурацию.

Действия, описанные в этой статье, полезны, если вы хотите:

  • Перейдите с бесплатного уровня на Центр Интернета вещей уровня "Базовый" или "Стандартный".
  • Перемещение Центра Интернета вещей в новый регион.
  • Экспорт сведений о состоянии Центра Интернета вещей для резервной копии.
  • Увеличьте количество секций для Центра Интернета вещей.
  • Настройте центр для среды разработки, а не для рабочей среды.

Сравнение шагов автоматической и ручной миграции

Результат этой статьи аналогичен переносу Центра Интернета вещей Azure с помощью шаблонов Azure Resource Manager, но с другим процессом. Прежде чем начать, определите, какой процесс подходит для вашего сценария.

  • Процесс Azure CLI (эта статья):

    • Переносит реестр устройств, сведения о маршрутизации и конечной точке, а также другие сведения о конфигурации, такие как IoT Edge развертывания или конфигурации автоматического управления устройствами.
    • Проще переносить небольшое количество устройств (например, до 10 000).
    • Не требуется учетная запись хранения Azure.
    • Собирает строки подключения для конечных точек маршрутизации и отправки файлов и включает их в выходные данные шаблона ARM.
  • Процесс вручную:

    • Переносит реестр устройств, сведения о маршрутизации и конечной точке. Необходимо вручную повторно создать другие сведения о конфигурации в новом Центре Интернета вещей.
    • Быстрее переносит большое количество устройств (например, более 100 000).
    • Использует учетную запись хранения Azure для передачи реестра устройств.
    • Выполняет очистку строк подключения для конечных точек маршрутизации и отправки файлов из выходных данных шаблона ARM, и их необходимо добавить вручную.

Предварительные требования

  • Azure CLI

    Для функций, описанных в этой статье, требуется расширение azure-iot версии 0.20.0 или более поздней. Чтобы проверка версию расширения, выполните команду az --version. Чтобы обновить расширение, выполните команду az extension update --name azure-iot.

    Если у вас по-прежнему установлено устаревшее расширение azure-cli-iot-ext , удалите это расширение перед добавлением расширения azure-iot .

Состояние Центра Интернета вещей

Когда мы говорим о переносе состояния Центра Интернета вещей, мы имеем в виду сочетание трех аспектов:

  • Ресурсы Azure Resource Manager (ARM). Этот аспект — это все, что можно определить в шаблоне ресурсов, и те же сведения, которые вы получите, если вы экспортировали шаблон ресурсов из Центра Интернета вещей в портал Azure. Сведения, собираемые в рамках Resource Manager аспекте Azure, включают:

    • Время хранения встроенного концентратора событий
    • Сертификаты
    • Свойства из облака на устройство
    • Отключение SAS устройства
    • Отключение локальной проверки подлинности
    • Включение уведомлений об отправке файлов
    • Конечная точка хранилища отправки файлов
    • Identities
      • Удостоверения, назначаемые пользователем
      • Назначаемые системой удостоверения (включенные или отключенные)
    • Наборы правил сети
    • Маршрутизация
      • Пользовательские конечные точки
      • Резервный маршрут
      • Маршруты
    • Теги
  • Конфигурации. Этот аспект предназначен для аспектов Центра Интернета вещей, которые не представлены в шаблоне ARM. В частности, этот аспект охватывает конфигурации автоматического управления устройствами и IoT Edge развертывания.

  • Devices (Устройства). Этот аспект представляет сведения в реестре устройств, в том числе:

    • Удостоверения устройств и двойники
    • Удостоверения и двойники модулей

Все Центр Интернета вещей свойства или конфигурации, не перечисленные здесь, могут быть экспортированы или импортированы неправильно.

Экспорт состояния Центра Интернета вещей

Используйте команду az iot hub state export , чтобы экспортировать состояние Центра Интернета вещей в JSON-файл.

Если вы хотите выполнить шаги экспорта и импорта в одной команде, ознакомьтесь с разделом ниже в этой статье о миграции Центра Интернета вещей.

При экспорте состояния Центра Интернета вещей можно выбрать, какие аспекты следует экспортировать.

Параметр Сведения
--aspects Аспекты состояния для экспорта. Укажите одно или несколько допустимых значений: arm, configurations или devices. Если этот параметр не задан, экспортируются все три аспекта.
--state-file -f Путь к файлу, в который записываются сведения о состоянии.
--replace -r Если этот параметр включен, команда экспорта перезаписывает содержимое файла состояния.
--hub-name -n
или диспетчер конфигурации служб
--login -l
Имя исходного Центра Интернета вещей (-n) или строка подключения для исходного Центра Интернета вещей (-l). Если указаны оба параметра, строка подключения имеет приоритет.
--resource-group -g Имя группы ресурсов для исходного Центра Интернета вещей.

В следующем примере экспортируются все аспекты состояния Центра Интернета вещей в файл с именем myHub-state:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json

В следующем примере экспортируются только устройства и Resource Manager Azure аспекты состояния Центра Интернета вещей и перезаписывается содержимое существующего файла:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json --aspects arm devices --replace

Экспорт конечных точек

Если вы решили экспортировать аспект Azure Resource Manager Центра Интернета вещей, команда export извлекает строки подключения для всех конечных точек с проверкой подлинности на основе ключей и включает их в выходной шаблон ARM.

Команда экспорта также проверяет все конечные точки, чтобы убедиться, что ресурс, к которому она подключается, по-прежнему существует. В противном случае эта конечная точка и все маршруты, использующие ее, не экспортируются.

Импорт состояния Центра Интернета вещей

Используйте команду az iot hub state import , чтобы импортировать сведения о состоянии из экспортированного файла в новый или существующий Центр Интернета вещей.

Если вы хотите выполнить шаги экспорта и импорта в одной команде, ознакомьтесь с разделом ниже в этой статье о миграции Центра Интернета вещей.

Параметр Сведения
--aspects Аспекты состояния для импорта. Укажите одно или несколько допустимых значений: arm, configurations или devices. Если этот параметр не указан, импортируются все три аспекта.
--state-file -f Путь к экспортируемму файлу состояния.
--replace -r Если этот параметр включен, команда импорта удаляет текущее состояние целевого концентратора.
--hub-name -n
или диспетчер конфигурации служб
--login -l
Имя целевого центра Интернета вещей (-n) или строка подключения для конечного центра Интернета вещей (-l). Если указаны оба параметра, строка подключения имеет приоритет.
--resource-group -g Имя группы ресурсов для целевого Центра Интернета вещей.

В следующем примере импортируются все аспекты в новый Центр Интернета вещей, который создается, если он еще не существует:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json

В следующем примере импортируются только устройства и аспекты конфигураций в новый Центр Интернета вещей, который уже должен существовать, и перезаписываются все существующие устройства и конфигурации:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json --aspects devices configurations --replace

Создание центра Интернета вещей с импортом состояния

С помощью az iot hub state import команды можно создать новый Центр Интернета вещей или выполнить запись в существующий центр Интернета вещей.

Если вы хотите создать новую Центр Интернета вещей, необходимо включить arm аспект в команду импорта. Если arm не включен в команду и целевой центр не существует, команда импорта завершится ошибкой.

Если целевой концентратор не существует, для команды импорта --resource-group также требуется параметр .

Обновление существующего Центра Интернета вещей с помощью импорта состояния

Если целевой центр Интернета вещей уже существует, для arm команды не требуется az iot hub state import аспект. Если включить arm этот аспект, все свойства ресурсов будут перезаписаны, за исключением следующих свойств, которые нельзя изменить после создания концентратора:

  • Расположение
  • номер SKU
  • Встроенное число секций Центров событий
  • Местонахождение данных
  • Компоненты

--resource-group Если указан в команде импорта и отличается от текущей группы ресурсов Центра Интернета вещей, команда завершается ошибкой, так как пытается создать новый концентратор с тем же именем, что и тот, который уже существует.

Если вы включите --replace флаг в команду импорта, следующие аспекты Центра Интернета вещей удаляются из целевого центра перед отправкой состояния концентратора:

  • ARM: все отправленные сертификаты в целевом концентраторе удаляются. Если сертификат присутствует, необходимо обновить тег etag.
  • Устройства. Удаляются все устройства и модули, пограничные и неграничные.
  • Конфигурации. Все конфигурации ADM и IoT Edge развертывания удаляются.

Миграция Центра Интернета вещей

Используйте команду az iot hub state migrate , чтобы перенести состояние одного центра Интернета вещей в новый или существующий центр Интернета вещей.

Эта команда заключает шаги экспорта и импорта в одну команду, но не содержит выходных файлов. Все рекомендации и ограничения, описанные в разделах Экспорт состояния Центра Интернета вещей и Импорт состояния Центра Интернета вещей, применяются и к команде state migrate .

Если вы переносите реестр устройств с несколькими устройствами (например, с несколькими сотнями или несколькими тысячами), вам может быть проще и быстрее выполнять команды экспорта и импорта отдельно, чем выполнять команду миграции.

Параметр Сведения
--aspects Аспекты состояния для миграции. Укажите одно или несколько допустимых значений: arm, configurations или devices. Если этот параметр не задан, переносятся все три аспекта.
--replace -r Если этот параметр включен, команда миграции удаляет текущее состояние центра назначения.
--destination-hub --dh
или диспетчер конфигурации служб
--destination-hub-login --dl
Имя целевого центра Интернета вещей (--dh) или строка подключения для конечного центра Интернета вещей (--dl). Если указаны оба параметра, строка подключения имеет приоритет.
--destination-resource-group --dg Имя группы ресурсов для целевого Центра Интернета вещей. Целевая группа ресурсов является обязательной, если целевой центр не существует.
--origin-hub --oh
или диспетчер конфигурации служб
--origin-hub-login --ol
Имя исходного Центра Интернета вещей (--oh) или строка подключения для исходного Центра Интернета вещей (--ol). Если указаны оба параметра, строка подключения имеет приоритет. Используйте строку подключения, чтобы избежать необходимости входа в сеанс Azure CLI.
--origin-resource-group --og Имя группы ресурсов для исходного Центра Интернета вещей.

В следующем примере выполняется миграция всех аспектов исходного концентратора в конечный концентратор, который создается, если он не существует:

az iot hub state migrate --origin-hub myHub --origin-resource-group myGroup  --destination-hub myNewHub --destination-resource-group myNewGroup

Устранение неполадок при миграции

Если вы не можете экспортировать или импортировать устройства или конфигурации, проверка, что у вас есть доступ к этим свойствам. Одним из способов проверки доступа является выполнение az iot hub device-identity list команд или az iot hub configuration list .

Если команда завершается ошибкой az iot hub state migrate , попробуйте выполнить команды экспорта и импорта отдельно. Две команды предоставляют те же функции, что и команда миграции, но, выполняя их отдельно, можно просмотреть файлы состояния, созданные из команды экспорта.

Дальнейшие действия

Дополнительные сведения о выполнении массовых операций с реестром удостоверений в Центре Интернета вещей см. в статье Импорт и экспорт Центр Интернета вещей удостоверений устройств.