Como migrar automaticamente um hub IoT com a CLI do Azure
Utilize a CLI do Azure para migrar um hub IoT para uma nova região, um novo escalão ou uma nova configuração.
Os passos neste artigo são úteis se quiser:
- Atualize do escalão gratuito para um hub IoT de escalão básico ou standard.
- Mover um hub IoT para uma nova região.
- Exporte as informações de estado do hub IoT para ter como cópia de segurança.
- Aumente o número de partições para um hub IoT.
- Configure um hub para um ambiente de desenvolvimento, em vez de produção.
Comparar os passos de migração automática e manual
O resultado deste artigo é semelhante a Como migrar um hub IoT do Azure com o Azure Resource Manager modelos, mas com um processo diferente. Antes de começar, decida qual é o processo mais adequado para o seu cenário.
O processo da CLI do Azure (este artigo):
- Migra o registo do dispositivo, as informações de encaminhamento e ponto final e outros detalhes de configuração, como implementações IoT Edge ou configurações automáticas de gestão de dispositivos.
- É mais fácil para migrar um pequeno número de dispositivos (por exemplo, até 10 000).
- Não requer uma conta de Armazenamento do Azure.
- Recolhe cadeias de ligação para encaminhamento e pontos finais de carregamento de ficheiros e inclui-as na saída do modelo arm.
O processo manual:
- Migra o registo do dispositivo e as informações de encaminhamento e ponto final. Tem de recriar manualmente outros detalhes de configuração no novo hub IoT.
- É mais rápido para migrar um grande número de dispositivos (por exemplo, mais de 100 000).
- Utiliza uma conta de Armazenamento do Azure para transferir o registo do dispositivo.
- Limpa as cadeias de ligação para os pontos finais de encaminhamento e carregamento de ficheiros a partir da saída do modelo do ARM e tem de voltar a adicioná-las manualmente.
Pré-requisitos
CLI do Azure
As funcionalidades descritas neste artigo requerem a versão 0.20.0 ou mais recente da extensão azure-iot . Para verificar a versão da extensão, execute
az --version
. Para atualizar a extensão, executeaz extension update --name azure-iot
.Se ainda tiver a extensão azure-cli-iot-ext legada instalada, remova essa extensão antes de adicionar a extensão azure-iot .
Estado do hub IoT
Quando falamos em migrar o estado de um hub IoT, referimo-nos a uma combinação de três aspetos:
Recursos do Azure Resource Manager (ARM). Este aspeto é tudo o que pode ser definido num modelo de recurso e é a mesma informação que obteria se exportasse o modelo de recurso do seu hub IoT no portal do Azure. As informações capturadas como parte do aspeto do Resource Manager do Azure incluem:
- Tempo de retenção do hub de eventos incorporado
- Certificados
- Propriedades da cloud para o dispositivo
- Desativar SAS do dispositivo
- Desativar autenticação local
- Ativar notificações de carregamento de ficheiros
- Ponto final de armazenamento de carregamento de ficheiros
- Identidades
- Identidades atribuídas pelo utilizador
- Identidades atribuídas pelo sistema (ativadas ou desativadas)
- Conjuntos de regras de rede
- Encaminhamento
- Pontos finais personalizados
- Rota de contingência
- Rotas
- Etiquetas
Configurações. Este aspeto destina-se a aspetos de um hub IoT que não estão representados num modelo do ARM. Especificamente, este aspeto abrange as configurações automáticas de gestão de dispositivos e implementações de IoT Edge.
Dispositivos. Este aspeto representa as informações no seu registo de dispositivos, que incluem:
- Identidades de dispositivos e duplos
- Identidades de módulos e duplos
Qualquer Hub IoT propriedade ou configuração não listada aqui pode não ser exportada ou importada corretamente.
Exportar o estado de um hub IoT
Utilize o comando az iot hub state export para exportar o estado de um hub IoT para um ficheiro JSON.
Se quiser executar os passos de exportação e importação num comando, consulte a secção mais adiante neste artigo para Migrar um hub IoT.
Ao exportar o estado de um hub IoT, pode escolher os aspetos a exportar.
Parâmetro | Detalhes |
---|---|
--aspects |
Os aspetos do estado a exportar. Especifique um ou mais dos valores aceites: arm, configurações ou dispositivos. Se este parâmetro for deixado de fora, os três aspetos serão exportados. |
--state-file -f |
O caminho para o ficheiro onde as informações de estado são escritas. |
--replace -r |
Se este parâmetro estiver incluído, o comando de exportação substitui o conteúdo do ficheiro de estado. |
--hub-name -n ou --login -l |
O nome do hub IoT de origem (-n ) ou a cadeia de ligação do hub IoT de origem (-l ). Se ambos forem fornecidos, a cadeia de ligação tem prioridade. |
--resource-group -g |
O nome do grupo de recursos do hub IoT de origem. |
O exemplo seguinte exporta todos os aspetos do estado de um hub IoT para um ficheiro com o nome myHub-state:
az iot hub state export --hub-name myHub --state-file ./myHub-state.json
O exemplo seguinte exporta apenas os dispositivos e o Azure Resource Manager aspetos do estado de um hub IoT e substitui o conteúdo do ficheiro existente:
az iot hub state export --hub-name myHub --state-file ./myHub-state.json --aspects arm devices --replace
Exportar pontos finais
Se optar por exportar o aspeto Resource Manager do Azure de um hub IoT, o comando de exportação obtém as cadeias de ligação para quaisquer pontos finais que tenham autenticação baseada em chaves e inclua-as no modelo arm de saída.
O comando de exportação também verifica todos os pontos finais para verificar se o recurso ao qual se liga ainda existe. Caso contrário, esse ponto final e quaisquer rotas que utilizem esse ponto final não serão exportadas.
Importar o estado de um hub IoT
Utilize o comando az iot hub state import para importar informações de estado de um ficheiro exportado para um hub IoT novo ou existente.
Se quiser executar os passos de exportação e importação num comando, consulte a secção mais adiante neste artigo para Migrar um hub IoT.
Parâmetro | Detalhes |
---|---|
--aspects |
Os aspetos do estado a importar. Especifique um ou mais dos valores aceites: arm, configurações ou dispositivos. Se este parâmetro for deixado de fora, os três aspetos serão importados. |
--state-file -f |
O caminho para o ficheiro de estado exportado. |
--replace -r |
Se este parâmetro estiver incluído, o comando de importação elimina o estado atual do hub de destino. |
--hub-name -n ou --login -l |
O nome do hub IoT de destino (-n ) ou a cadeia de ligação do hub IoT de destino (-l ). Se ambos forem fornecidos, a cadeia de ligação tem prioridade. |
--resource-group -g |
O nome do grupo de recursos do hub IoT de destino. |
O exemplo seguinte importa todos os aspetos para um novo hub IoT, que é criado se ainda não existir:
az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json
O exemplo seguinte importa apenas os aspetos de dispositivos e configurações para um novo hub IoT, que já tem de existir, e substitui quaisquer dispositivos e configurações existentes:
az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json --aspects devices configurations --replace
Criar um novo hub IoT com importação de estado
Pode utilizar o az iot hub state import
comando para criar um novo hub IoT ou para escrever num hub IoT existente.
Se quiser criar uma nova Hub IoT, tem de incluir o arm
aspeto no comando de importação. Se arm
não estiver incluído no comando e o hub de destino não existir, o comando de importação falhará.
Se o hub de destino não existir, o --resource-group
parâmetro também é necessário para o comando de importação.
Atualizar um hub IoT existente com a importação de estado
Se o hub IoT de destino já existir, o arm
aspeto não é necessário para o az iot hub state import
comando. Se incluir o arm
aspeto, todas as propriedades do recurso serão substituídas, exceto as seguintes propriedades que não podem ser alteradas após a criação do hub:
- Localização
- SKU
- Contagem de partições dos Hubs de Eventos incorporadas
- Residência dos dados
- Funcionalidades
Se o --resource-group
for especificado no comando de importação e for diferente do grupo de recursos atual do hub IoT, o comando falha porque tenta criar um novo hub com o mesmo nome que o que já existe.
Se incluir o --replace
sinalizador no comando de importação, os seguintes aspetos do hub IoT são removidos do hub de destino antes de o estado do hub ser carregado:
- ARM: todos os certificados carregados no hub de destino são eliminados. Se um certificado estiver presente, precisa de um etag para ser atualizado.
- Dispositivos: todos os dispositivos e módulos, edge e não edge, são eliminados.
- Configurações: todas as configurações do ADM e IoT Edge implementações são eliminadas.
Migrar um hub IoT
Utilize o comando az iot hub state migrate para migrar o estado de um hub IoT para um hub IoT novo ou existente.
Este comando molda os passos de exportação e importação num único comando, mas não tem ficheiros de saída. Todas as orientações e limitações descritas nas secções Exportar o estado de um hub IoT e Importar o estado de um hub IoT também se aplicam ao state migrate
comando.
Se estiver a migrar um registo de dispositivos com muitos dispositivos (por exemplo, algumas centenas ou alguns milhares), poderá considerar mais fácil e rápido executar os comandos de exportação e importação separadamente em vez de executar o comando migrar.
Parâmetro | Detalhes |
---|---|
--aspects |
Os aspetos do estado a migrar. Especifique um ou mais dos valores aceites: arm, configurações ou dispositivos. Se este parâmetro ficar de fora, os três aspetos serão migrados. |
--replace -r |
Se este parâmetro estiver incluído, o comando migrar elimina o estado atual do hub de destino. |
--destination-hub --dh ou --destination-hub-login --dl |
O nome do hub IoT de destino (--dh ) ou a cadeia de ligação do hub IoT de destino (--dl ). Se ambos forem fornecidos, a cadeia de ligação tem prioridade. |
--destination-resource-group --dg |
Nome do grupo de recursos do hub IoT de destino. O grupo de recursos de destino é necessário se o hub de destino não existir. |
--origin-hub --oh ou --origin-hub-login --ol |
O nome do hub IoT de origem (--oh ) ou a cadeia de ligação para o hub IoT de origem (--ol ). Se ambos forem fornecidos, a cadeia de ligação tem prioridade. Utilize a cadeia de ligação para evitar ter de iniciar sessão na sessão da CLI do Azure. |
--origin-resource-group --og |
O nome do grupo de recursos do hub IoT de origem. |
O exemplo seguinte migra todos os aspetos do hub de origem para o hub de destino, que é criado se não existir:
az iot hub state migrate --origin-hub myHub --origin-resource-group myGroup --destination-hub myNewHub --destination-resource-group myNewGroup
Resolver problemas de migração
Se não conseguir exportar ou importar dispositivos ou configurações, verifique se tem acesso a essas propriedades. Uma forma de verificar o seu acesso é ao executar os az iot hub device-identity list
comandos ou az iot hub configuration list
.
Se o az iot hub state migrate
comando falhar, experimente executar os comandos de exportação e importação separadamente. Os dois comandos resultam apenas na mesma funcionalidade que o comando de migração, mas ao executá-los separadamente, pode rever os ficheiros de estado criados a partir do comando exportar.
Passos seguintes
Para obter mais informações sobre como realizar operações em massa no registo de identidades num hub IoT, veja Importar e exportar identidades de dispositivos Hub IoT.