Como e onde instalar o agente OSConfig para Linux

Este artigo destina-se a pessoas que pretendem adicionar capacidades OSConfig aos respetivos dispositivos, para que a configuração possa ser aprovisionada, gerida e monitorizada através dos serviços IoT do Azure. Isto pode incluir construtores de dispositivos, integradores de sistemas, construtores de soluções, etc.

O agente OSConfig é um componente compacto do Linux que projeta a configuração local de cada dispositivo no Azure IoT para aprovisionamento e gestão em escala. Para obter contexto sobre as motivações e a utilização do OSConfig, veja: O que é o OSConfig para IoT.

Escala da frota ou dispositivo único?

  • Para começar a experimentar cenários, pode instalar o OSConfig num único dispositivo.

  • Em escala, cada dispositivo cuja configuração será aprovisionada e gerida tem de ter o agente OSConfig, tal como no diagrama seguinte.

    Diagrama a mostrar vários dispositivos que se ligam a Hub IoT, com um duplo OSConfig para cada um.

    Normalmente, o agente OSConfig seria incluído em imagens do SO do dispositivo de referência, que são depois aplicadas a muitos dispositivos.

Que tipos de dispositivos?

Classes de hardware

Veja a tabela abaixo para obter um resumo. As notas detalhadas seguem a tabela.

Instalar o OSConfig?
Classe MCU ¹ Agora, não
MPU/CPU menos potente c/ Linux ² Yes
Dispositivos mais potentes com Linux ³ Yes
Dispositivos com o Windows IoT Capacidades semelhantes
incorporada, referência CSP

¹ classe MCU: para contexto, estes incluem dispositivos Arduino, dispositivos baseados em RP2040, etc. Normalmente, estes dispositivos executam código bare-metal específico do cenário ou com um microSE, como AzureRTOS ou FreeRTOS.

² Classe MPU/CPU menos potente w/ Linux: o agente foi concebido para ser compacto e eficiente, permitindo a utilização para dispositivos mais pequenos capazes de executar o Linux.

³ Computação edge mais poderosa w/ Linux: como um componente eficiente do lado do dispositivo, o agente OSConfig está perfeitamente em casa em dispositivos de computação edge mais poderosos, como kits NVidia Jetson.

Linux "Dispositivos IoT" vs. Linux "Dispositivos Edge"

No ecossistema IoT do Azure para Linux, os termos dispositivo IoT vs. Dispositivo Edge são por vezes utilizados para diferenciar se o dispositivo IoT Edge instalado. Existe também uma correlação solta com a classe de dispositivo (os dispositivos maiores tendem a ter IoT Edge instalados).

O OSConfig funciona em qualquer um dos contextos. Pode ser executado lado a lado com IoT Edge, mas não requer IoT Edge.

E os segredos do dispositivo e várias aplicações/agentes/módulos?

Recomendamos a utilização do OSConfig juntamente com o Azure IoT Identity Service (AIS).

O AIS é o mediador no dispositivo da Microsoft para processar segredos e autenticação. O AIS torna totalmente integrado que várias aplicações, agentes e/ou módulos do Edge partilhem uma única identidade de dispositivo. Os passos abaixo demonstram a utilização do AIS e do OSConfig em conjunto.

O AIS está disponível autónomo e também está incluído no IoT Edge 1.2 e superior. Considere o seguinte ao instalar.

Instalar o AIS?
O dispositivo não tem IoT Edge (também conhecido como "Dispositivo IoT") Yes
O dispositivo tem IoT Edge 1.2 ou superior Sim¹
O dispositivo tem IoT Edge 1,1 ou inferior No²

¹ IoT Edge 1.2 e superior incluem os componentes do AIS. Para simplificar as instruções, os passos abaixo incluem sempre a instalação do AIS. Esta abordagem permite ao gestor de pacotes detetar se este passo não é uma operação, em vez de recriar essa lógica externamente.

² Não instale o AIS em dispositivos com IoT Edge 1.1 ou inferior. Considere mudar para uma versão posterior do IoT Edge. Se não estiver pronto para atualizar IoT Edge mas ainda quiser explorar cenários osConfig, considere experimentar os cenários noutro dispositivo ou VM por enquanto.

Tarefa 1. Instalar os componentes no dispositivo

Existem três opções que se adequam às suas necessidades:

  • A. Instalar pacotes
  • B. Criar a partir da origem
  • C. Utilizar dispositivos com as capacidades incorporadas

Selecione a sua experiência preferida abaixo para obter instruções:

Os pacotes de instalação prontos a preparar estão disponíveis para arm64 (também conhecido como aarch64), amd64 (também conhecido como x86_64) em:

  • Debian 10
  • Debian 11
  • Ubuntu Server 18.04
  • Ubuntu Server 20.04

Passo 1.1. Ligar um dispositivo ao packages.microsoft.com

Pode utilizar os seguintes comandos de exemplo para ligar o gestor de pacotes do SO ao canal estável no packages.microsoft.com.

#!/bin/bash

## For Ubuntu and on Debian 10+

## Register packages.microsoft.com key and prod channel
sudo wget https://packages.microsoft.com/keys/microsoft.asc -O /etc/apt/trusted.gpg.d/packages-microsoft-com_key.asc
os_name=$(grep ^ID= /etc/os-release | tr -d "ID=")
os_version=$(grep ^VERSION_ID /etc/os-release | tr -d "VERSION_ID=")
sudo wget https://packages.microsoft.com/config/"$os_name"/"$os_version"/prod.list -O /etc/apt/sources.list.d/packages-microsoft-com_prod.list
sudo apt update

Dica

O exemplo acima liga o prod gestor de pacotes ao canal no packages.microsoft.com, o que é adequado para a maioria dos dispositivos e situações. Para obter informações sobre compilações de pré-visualização, consulte: Acerca da pré-visualização do OSConfig ou das compilações "insiders"

Passo 1.2. Instalar o pacote do AIS

Atenção

Conforme indicado acima, não instale o AIS num dispositivo com IoT Edge 1.1 ou inferior. O AIS destina-se a dispositivos sem IoT Edge ou dispositivos com IoT Edge 1.2 ou superior.

sudo apt-get install -y aziot-identity-service

Passo 1.3. Instalar o pacote OSConfig

sudo apt-get install -y osconfig

Se estiver a instalar apenas os componentes neste momento (por exemplo, a preparar uma imagem de base) para não ligar ao Azure, pode parar aqui. Os passos seguintes seriam executados mais tarde, talvez pelo seu cliente.

Tarefa 2. Ligar ao Azure

Agora que o agente OSConfig e o AIS estão presentes no dispositivo, o passo seguinte é configurar o dispositivo com uma identidade para que possa ligar ao Azure.

Dica

Alguns dispositivos podem ter mecanismos para o fazer em seu nome. Por exemplo, os dispositivos do Azure Percept incluem uma experiência de configuração para ligar o dispositivo.

Passo 2.1. Definir a credencial do dispositivo no AIS no dispositivo

O AIS suporta vários cenários de implementação e métodos de autenticação.

O exemplo simplista seguinte utiliza uma cadeia de ligação com uma chave simétrica. Para cenários de produção, escolha uma das opções de autenticação mais fortes descritas em Configurar o Azure IoT Identity Service.

Exemplo Rápido: Ligar com chave simétrica

No portal do Azure:

  1. Navegar para a lista de dispositivos Hub IoT
  2. Criar uma identidade de dispositivo, se necessário
  3. Navegue para as propriedades do dispositivo e copie a cadeia de ligação

No dispositivo:

  1. Execute os seguintes comandos para definir a credencial no AIS, substituindo o marcador de posição da cadeia de ligação pelo seu.
sudo aziotctl config mp –-connection-string "<your connection string from IoT Hub>"
sudo aziotctl config apply

Passo 2.2. Verificar a ligação com êxito ao Azure

Pode verificar se o AIS e o OSConfig estão a ligar a Hub IoT com estes comandos no dispositivo:

sudo aziotctl check
sudo systemctl status osconfig | grep Active

O resultado do aziotctl check comando deve indicar a passagem de todos os testes.

O resultado do systemctl status osconfig deve incluir Active: active. Em alguns casos, poderá ver Active: activating (auto-restart) , o que significa que o systemd está à espera de um temporizador para reiniciar o serviço. Para ultrapassar isto imediatamente em vez de aguardar, execute sudo systemctl restart osconfige, em seguida, tente o comando de estado novamente.

Já está! O cliente OSConfig está agora em execução no seu dispositivo.

Definições opcionais do agente

Muitas pessoas podem ignorar esta secção e simplesmente utilizar os comportamentos predefinidos. Se tiver restrições de ambiente ou governação, como servidores proxy, restrições de firewall de saída ou redes em camadas, veja o seguinte:

Hub IoT seleção de protocolo

Dica

A seleção do protocolo foi adicionada ao canal prod/estável na versão v1.0.2.2022040405. Confirme que está a utilizar a versão mais recente do OSConfig.

Ao comunicar com o Hub IoT, o agente OSConfig pode utilizar o Transporte de Telemetria de Colocação de Mensagens em Fila (MQTT) simples ou pode utilizar mQTT através de WebSockets (MQTT_WS).

Muitas pessoas não precisam de especificar um protocolo e podem simplesmente utilizar comportamentos predefinidos. Se precisar de especificar um protocolo com base numa das seguintes considerações, definirá o Protocol valor em /etc/osconfig/osconfig.json.

MQTT MQTT_WS
Porta TCP ¹ 8883 443
Servidor proxy ² No Yes
gateway de IoT Edge
(principal/subordinado) ³
Yes No
Identificador de protocolo
para definir em osconfig.json
1 2

¹ Refere-se à porta TCP utilizada quando o agente OSConfig no dispositivo liga a saída ao Hub IoT

² Refere-se ao facto de o OSConfig poder utilizar explicitamente um servidor proxy HTTP (através de https_proxy variável de ambiente)

³ Refere-se ao cenário de Gateway Transparente IoT Edge, no qual o OSConfig em execução num dispositivo subordinado se liga a Hub IoT através de um dispositivo principal

Ligar através de um servidor proxy HTTP

Se o seu ambiente exigir que o OSConfig se ligue ao Hub IoT através de um servidor proxy HTTP, veja o seguinte:

Dica

O suporte do servidor proxy foi adicionado ao canal prod/estável na versão v1.0.2.2022040405. Ensure you are using the latest prod/stable version of OSConfig.

  1. Conforme indicado na Hub IoT seleção de protocolo, apenas MQTT_WS podem ser utilizadas com um servidor proxy HTTP. Para ativar MQTT_WS, certifique-se de que o Protocol valor em /etc/osconfig/osconfig.json está definido como 2.

  2. Confirme que a https_proxy variável de ambiente ou HTTPS_PROXY está definida no contexto em que OSConfig é executado.

    Normalmente, os sysadmins ou os construtores de imagens transmitem isto ao editar os ficheiros de unidades do sistema para quaisquer serviços (incluindo OSConfig) que devem utilizar o servidor proxy.

    Por exemplo, adicionaria uma linha como
    Environment="https_proxy=http://myproxy.example.com:3128"
    para a [Service] parte de /etc/systemd/system/osconfig.service.
    Certifique-se de que executa sudo systemctl daemon-reload e sudo systemctl restart osconfig depois de editar o ficheiro.

Passos Seguintes

Agora que tem um dispositivo a executar o OSConfig e ligado ao Azure IoT, pode experimentar cenários de gestão.

Para obter uma descrição geral dos cenários e capacidades do OSConfig, veja:

Para obter exemplos práticos específicos, veja: