Implantar o IoT Edge em uma VM do Ubuntu no Azure Stack Edge
APLICA-SE A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Este artigo descreve como implantar um tempo de execução do IoT Edge em uma VM do Ubuntu em execução em seu dispositivo Azure Stack Edge. Para novos trabalhos de desenvolvimento, use o método de implantação de autoatendimento descrito neste artigo, pois ele usa a versão de software mais recente.
Fluxo de alto nível
O fluxo de alto nível é o seguinte:
- Crie ou identifique a instância do Hub IoT ou do Serviço de Provisionamento de Dispositivo (DPS) do Hub IoT do Azure.
- Use a CLI do Azure para adquirir a imagem da VM do Ubuntu 20.04 LTS.
- Carregue a imagem do Ubuntu na biblioteca de imagens da VM do Azure Stack Edge.
- Implante a imagem do Ubuntu como uma VM usando as seguintes etapas:
- Forneça o nome da VM, o nome de usuário e a senha. A criação de outro disco é opcional.
- Configure a configuração de rede.
- Forneça um script cloud-init preparado na guia Avançado.
Pré-requisitos
Antes de começar, certifique-se de que tem:
Um dispositivo Azure Stack Edge que você ativou. Para obter etapas detalhadas, consulte Ativar a GPU do Azure Stack Edge Pro.
Acesso à imagem mais recente da VM do Ubuntu 20.04, a imagem do Azure Marketplace ou uma imagem personalizada que você está trazendo:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Use as etapas em Pesquisar imagens do Azure Marketplace para adquirir a imagem da VM.
Preparar o script cloud-init
Para implantar o tempo de execução do IoT Edge na VM do Ubuntu, use um script cloud-init durante a implantação da VM.
Use as etapas em uma das seguintes seções:
- Prepare o script cloud-init com provisionamento de chave simétrica.
- Prepare o script cloud-init com o IoT Hub DPS.
Usar provisionamento de chave simétrica
Para conectar seu dispositivo ao Hub IoT sem DPS, use as etapas nesta seção para preparar um script cloud-init para a página Avançado de criação de VM para implantar o tempo de execução do IoT Edge e o tempo de execução do contêiner da Nvidia.
Use um Hub IoT existente ou crie um novo Hub. Use estas etapas para criar um Hub IoT.
Use estas etapas para registrar seu dispositivo Azure Stack Edge no Hub IoT.
Recupere a Cadeia de Conexão Primária do Hub IoT para seu dispositivo e cole-a no local abaixo para DeviceConnectionString.
Script de inicialização na nuvem para provisionamento de chaves simétricas
#cloud-config
runcmd:
- dcs="<DeviceConnectionString>"
- |
set -x
(
# Wait for docker daemon to start
while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do
sleep 3
done
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
#install Nvidia drivers
apt install -y ubuntu-drivers-common
ubuntu-drivers devices
ubuntu-drivers autoinstall
# Install NVIDIA Container Runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt update
apt install -y nvidia-container-runtime
fi
# Restart Docker
systemctl daemon-reload
systemctl restart docker
# Install IoT Edge
apt install -y aziot-edge
if [ ! -z $dcs ]; then
iotedge config mp --connection-string $dcs
iotedge config apply
fi
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
reboot
fi ) &
apt:
preserve_sources_list: true
sources:
msft.list:
source: "deb https://packages.microsoft.com/ubuntu/20.04/prod focal main"
key: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)
mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
NdCFTW7wY0Fb1fWJ+/KTsC4=
=J6gs
-----END PGP PUBLIC KEY BLOCK-----
packages:
- moby-cli
- moby-engine
write_files:
- path: /etc/systemd/system/docker.service.d/override.conf
permissions: "0644"
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local
Usar DPS
Use as etapas nesta seção para conectar seu dispositivo ao DPS e ao IoT Central. Você preparará um arquivo de script.sh para implantar o tempo de execução do IoT Edge à medida que cria a VM.
Use o Hub IoT e o DPS existentes ou crie um novo Hub IoT.
- Use estas etapas para criar um Hub IoT.
- Use estas etapas para criar o DPS e, em seguida, vincule o Hub IoT ao escopo do DPS.
Vá para o recurso DPS e crie um registro individual.
- Vá para Serviço de Provisionamento de>Dispositivos Gerenciar inscrições>Adicione inscrições individuais.
- Verifique se a seleção de Chave Simétrica para tipo de atestado e dispositivo IoT Edge é True. A seleção padrão é False.
- Recupere as seguintes informações da página de recursos do DPS:
- ID de registo. Recomendamos que você use a mesma ID que a ID do dispositivo para seu Hub IoT.
- ID Scope que está disponível no menu Visão geral.
- Chave SAS primária no menu Inscrição individual.
Copie e cole valores do Hub IoT (IDScope) e do DPS (RegistrationID, Symmetric Key) nos argumentos de script.
Script de inicialização na nuvem para DPS do Hub IoT
#cloud-config
runcmd:
- dps_idscope="<DPS IDScope>"
- registration_device_id="<RegistrationID>"
- key="<Symmetric Key>"
- |
set -x
(
wget https://github.com/Azure/iot-edge-config/releases/latest/download/azure-iot-edge-installer.sh -O azure-iot-edge-installer.sh \
&& chmod +x azure-iot-edge-installer.sh \
&& sudo -H ./azure-iot-edge-installer.sh -s $dps_idscope -r $registration_device_id -k $key \
&& rm -rf azure-iot-edge-installer.sh
# Wait for docker daemon to start
while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do
sleep 3
done
systemctl stop aziot-edge
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
#install Nvidia drivers
apt install -y ubuntu-drivers-common
ubuntu-drivers devices
ubuntu-drivers autoinstall
# Install NVIDIA Container Runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt update
apt install -y nvidia-container-runtime
fi
# Restart Docker
systemctl daemon-reload
systemctl restart docker
systemctl start aziot-edge
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
reboot
fi
) &
write_files:
- path: /etc/systemd/system/docker.service.d/override.conf
permissions: "0644"
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local
Implantar o tempo de execução do IoT Edge
A implantação do tempo de execução do IoT Edge faz parte da criação da VM, usando o script cloud-init mencionado acima.
Aqui estão as etapas de alto nível para implantar o tempo de execução da VM e do IoT Edge:
Adquira a imagem da VM do Ubuntu no Azure Marketplace. Para obter etapas detalhadas, siga as instruções em Usar imagem do Azure Marketplace para criar uma imagem de VM para seu Azure Stack Edge.
- No portal do Azure, vá para o Azure Marketplace.
- Conecte-se ao Azure Cloud Shell ou a um cliente com a CLI do Azure instalada. Para obter etapas detalhadas, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Nota
Fechar a sessão do shell excluirá todas as variáveis criadas durante a sessão do shell. Reabrir a sessão exigirá recriar as variáveis.
c. Execute o seguinte comando para definir a assinatura.
az account set –subscription <subscription id>
Use as etapas em Pesquisar imagens do Azure Marketplace para pesquisar uma imagem do Ubuntu 20.04 LTS no Azure Marketplace.
Exemplo de uma imagem do Ubuntu 20.04 LTS:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Crie um novo disco gerenciado a partir da imagem do Marketplace. Para obter etapas detalhadas, consulte Usar a imagem do Azure Marketplace para criar uma imagem de VM para seu Azure Stack Edge.
Exporte um VHD do disco gerenciado para uma conta de Armazenamento do Azure. Para obter etapas detalhadas, consulte Exportar um VHD do disco gerenciado para o Armazenamento do Azure.
Siga estas etapas para criar uma VM do Ubuntu usando a imagem da VM.
Especifique o script cloud-init na guia Avançado . Para criar uma VM, consulte Implantar VM de GPU via portal do Azure ou Implantar VM via portal do Azure.
Especifique as cadeias de conexão de dispositivo apropriadas no cloud-init para se conectar ao Hub IoT ou dispositivo DPS. Para obter etapas detalhadas, consulte Provisionar com chaves simétricas ou Provisionar com DPS do Hub IoT.
Se você não especificou o cloud-init durante a criação da VM, terá que implantar manualmente o tempo de execução do IoT Edge depois que a VM for criada:
- Conecte-se à VM via SSH.
- Instale o mecanismo de contêiner na VM. Para obter etapas detalhadas, consulte Criar e provisionar um dispositivo IoT Edge no Linux usando chaves simétricas ou Guia de início rápido - Configurar o DPS do Hub IoT com o portal do Azure.
Verificar o tempo de execução do IoT Edge
Use estas etapas para verificar se o tempo de execução do IoT Edge está em execução.
Vá para o recurso do Hub IoT no portal do Azure.
Selecione o dispositivo IoT Edge.
Verifique se o tempo de execução do IoT Edge está em execução.
Para solucionar problemas de configuração do dispositivo IoT Edge, consulte Solucionar problemas do dispositivo IoT Edge.
Atualizar o tempo de execução do IoT Edge
Para atualizar a VM, siga as instruções em Atualizar o IoT Edge. Para encontrar a versão mais recente do Azure IoT Edge, consulte Versões do Azure IoT Edge.
Próximos passos
Para implantar e executar um módulo IoT Edge em sua VM do Ubuntu, consulte as etapas em Implantar módulos do IoT Edge.
Para implantar o módulo DeepStream da Nvidia, consulte Implantar o módulo Nvidia DeepStream na VM do Ubuntu no Azure Stack Edge Pro com GPU.
Para implantar o NVIDIA DIGITS, consulte Habilitar uma GPU em um módulo NVIDIA pré-fabricado.