Delen via


Quickstart: Eén virtueel IoT-apparaat beheren met behulp van Azure CLI

Belangrijk

Dit document wordt niet meer bijgewerkt en wordt verwijderd. Voor up-to-datum-instructies voor het uitproberen van OSConfig-scenario's:

  1. Volg eerst de stappen in Een OSConfig-testomgeving (met Azure IoT) binnen 5 minuten maken
  2. Probeer vervolgens een van de scenario's uit: Wat kan ik inrichten en beheren?

Het doel van deze quickstart is om u vertrouwd te maken met extern beheer van IoT/Edge-apparaten via OSConfig voor IoT. In deel 1 stelt u een testomgeving in, met inbegrip van het maken van een virtuele machine om te fungeren als een virtueel IoT-apparaat. In deel 2 voert u verschillende acties voor apparaatbeheer uit, bijvoorbeeld:

  • Het IP-adres van het apparaat op afstand ophalen
  • Eindpuntconnectiviteit extern testen vanuit het perspectief van het apparaat
  • Het apparaat extern opnieuw opstarten
  • en meer

In deze quickstart wordt één voorbeeldapparaat gebruikt. Als u OSConfig op schaal wilt gebruiken, gebruikt u Iot Hub Device Management services als besturingsvlak in plaats van afzonderlijke Azure CLI-opdrachten.

Voorwaarden

  1. U hebt een Azure-account met een actief abonnement nodig. Indien nodig kunt u gratis een account maken.
  2. U gebruikt de Azure Cloud Shellbash-omgeving
    • OPMERKING: Als dit de eerste keer is dat u Azure Cloud Shell gebruikt, wordt u door de portal begeleid bij het maken van opslagruimte voordat u doorgaat. Dit is normaal.
    • OPMERKING: Azure Cloud Shell heeft al de nieuwste Azure CLI-hulpprogramma's en wordt automatisch aangemeld bij uw Azure-account. Als u liever uw eigen bash omgeving gebruikt in plaats van de cloudshell, kunt u Azure CLI installeren en configureren in uw eigen bash-omgeving.
  3. U hebt de Azure IOT-extensie voor Azure CLI nodig. Deze kan worden toegevoegd met behulp van de volgende opdracht:
az extension add --name azure-iot

schermopname van az extension add --name azure-iot

Vereisten controleren

  • Controleer vanuit Azure Cloud Shell (of uw alternatieve bash-omgeving) of Azure CLI is aangemeld bij het Azure-account en de abonnementscontext die u wilt gebruiken.
az account show

schermopname van de opdracht: az account show

Als u zich wilt aanmelden met een ander account of abonnementen wilt wijzigen, kunt u de opdrachten az login en az account set gebruiken.

Overzicht van de quickstart-omgeving

diagram voor context, waarin Azure CLI wordt gebruikt om IoT Hub en VM te maken en wordt gebruikt voor het gebruik van OSConfig-

Deel 1: Uw omgeving instellen

1.1: Uw Azure IoT-resources maken

1.1.1: Definieer een unieke naam voor uw IoT Hub

U moet een unieke naam opgeven voor uw IoT Hub, zoals 'QuickStart12345' of 'HelloWorld98765'. Deze naam wordt herhaaldelijk gebruikt in latere opdrachten, dus we slaan deze op in een bash-variabele, zoals:

# In the following command replace <Your_Made_Up_Name_Here> 
# with your own preferred hub name, for example:
# MY_IOT_HUB_NAME="MyQuickStart54321"
MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"

schermopname van het bash-voorbeeld dat de gekozen unieke naam voor IOT Hub toewijst aan variabele MY_IOT_HUB_NAME

1.1.2: Een resourcegroep en een IoT Hub maken

az group create --resource-group QuickstartOSConfig --location westus
az iot hub create --resource-group QuickstartOSConfig --name "$MY_IOT_HUB_NAME" --query id

schermopname van az group create command

schermopname van de opdracht az iot hub create

Fooi

Als de opdracht az iot hub create... mislukt met een fout dat de naam niet beschikbaar was, betekent dit dat de naam die u hebt gekozen al ergens anders in Azure werd gebruikt. Als u dit wilt oplossen, herhaalt u de bovenstaande MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>" stap met een nieuwe en uniekere naam en voert u de opdracht az iot hub create ... opnieuw uit.

Fooi

Het is niet ongebruikelijk dat het enkele minuten duurt voordat de opdracht az iot hub create... is voltooid.

1.1.3: Maak de apparaat-id en haal de apparaatverbindingsreeks op

az iot hub device-identity create --hub-name "$MY_IOT_HUB_NAME" -d device01 --query deviceId
az iot hub device-identity connection-string show --hub-name "$MY_IOT_HUB_NAME" --device-id device01

schermopname van voorbeeld az iot commands

Fooi

Noteer de connectionString waarde die wordt geretourneerd door de laatste opdracht (deze begint met HostName=). U gebruikt deze verbindingsreeks in een latere stap.

1.2: Een Virtuele Azure-machine maken om te fungeren als het virtuele IoT-apparaat

Gebruik de volgende opdracht om een virtuele machine te maken.

az vm create --resource-group QuickstartOSConfig --name device01 --image Canonical:UbuntuServer:18.04-lts:latest --admin-username azureuser --generate-ssh-keys --query publicIpAddress

schermopname van az vm create command

Fooi

Noteer het IP-adres geretourneerd door de laatste opdracht. U gebruikt dit adres in de volgende stap.

1.3: Clientsoftware installeren op het virtuele IoT-apparaat

1.3.1: Maak terminaltoegang tot tot het virtuele apparaat

De volgende opdrachten moeten worden uitgevoerd op de VM die u zojuist hebt gemaakt. SSH gebruiken om verbinding te maken:

# In the following command, replace <public ip address from previous step> with
# the actual IP address. For example:
# ssh azureuser@1.2.3.4
ssh azureuser@<ip address from previous step>

schermopname van de SSH-opdracht

Fooi

Voor uw ssh-client moet u mogelijk yes typen om door te gaan. Dit is normaal.

Fooi

Controleer voordat u doorgaat of u nu bent verbonden met het virtuele IoT-apparaat. De opdrachtprompt moet zijn gewijzigd van <your name>@azure: in azureuser@device01:. Als de opdrachtprompt niet is gewijzigd in azureuser@device01:, voert u de bovenstaande ssh opdracht opnieuw uit.

1.3.2: Installeer op het virtuele apparaat aziot-identity-service

sudo apt-get update
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/multiarch/prod
sudo apt-get update
sudo apt install -y aziot-identity-service

schermopname van apt-opdrachten

schermopname 2 van apt-opdrachten

1.3.3: Op het virtuele apparaat de verbindingsreeks toepassen

Configureer het apparaat voor verificatie bij Azure IoT met behulp van de volgende opdracht. U gebruikt de verbindingsreekswaarde die u eerder hebt verkregen in Uw Azure IoT-resources maken.

sudo aziotctl config mp --connection-string "<your connection string>"
sudo aziotctl config apply

schermopname van aziotctl-opdrachten

1.3.4: Installeer op het virtuele apparaat het OSConfig-pakket en merk op dat het wordt uitgevoerd

sudo apt install -y osconfig
sudo systemctl status osconfig | grep --color=never Active

schermopname van sudo apt install -y osconfig

1.2.5: De SSH-sessie afsluiten

exit

schermopname van het afsluiten van een SSH-sessie en terugkeert naar de Cloud Shell-sessie

Deel 2: OSConfig gebruiken voor IoT

Je hebt het gemaakt! Nu de omgeving is voorbereid, kunnen we OSConfig gaan gebruiken om configuratie en status op hostniveau op te halen en in te stellen via de IoT Hub. Gebruik vanuit Azure Cloud Shell of uw computer de volgende Azure CLI-opdrachten om elk voorbeeld te voltooien.

2.1: Is dit ding aan?

We beginnen met het verkrijgen van de IoT Hub deviceIdvan het apparaat en laten zien dat OSConfig actief is.

az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,moduleId,connectionState from devices.modules where deviceID='device01' and moduleId='osconfig'"

schermopname van az iot hub query command

2.2: De netwerkstatus van het apparaat ophalen, zoals IP-adressen en DNS-servers, voor apparaten met osConfig in uw IoT Hub

Er zijn veel gebruiksvoorbeelden voor het rapporteren van de netwerkstatus van beheerde apparaten. U hebt bijvoorbeeld het lokale IP-adres nodig om verbinding te maken met een lokale IP-videostream. U kunt ook rapporteren over DNS-servers die worden gebruikt voor probleemoplossing of om ervoor te zorgen dat apparaten gebruikmaken van de verwachte netwerkinfrastructuur. In het volgende voorbeeld worden de IP-adressen en DNS-servers opgehaald die aan elke netwerkadapter zijn toegewezen.

az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.Networking.NetworkConfiguration.IpAddresses,properties.reported.Networking.NetworkConfiguration.DnsServers from devices.modules where moduleId='osconfig'"

schermopname van az iot query (extra)

Fooi

De geretourneerde IP-gegevens zijn vanuit het perspectief van het apparaat, die overeenkomen met wat u ifconfig of ip address lokaal op het apparaat zou uitvoeren. Het openbare IP-adres van Azure (eerder gebruikt voor SSH) wordt nat gerouteerd buiten de VIRTUELE machine, dus deze wordt hier niet weergegeven.

2.3: Telemetriebeleid voor Azure Device Health Service (ADHS) configureren en naleving controleren

ADHS is een diagnostische agent die is opgenomen in sommige apparaten. Op de VM die u zojuist hebt gemaakt, is ADHS niet geïnstalleerd, maar we kunnen het beleid nog steeds proactief instellen als voorbeeld.

Met de eerste opdracht stelt u de gewenste eigenschap van de dubbel voor ADHS in op 2 (wat betekent opt-in). Met de tweede opdracht worden de gewenste versies van de eigenschap vergeleken (ingesteld door u, de beheerder) en gerapporteerde (verzonden door het apparaat) om te controleren of het apparaat het beleid heeft ontvangen en toegepast.

az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"Settings":{"__t":"c","DeviceHealthTelemetryConfiguration":2}}' > /dev/null
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.desired.Settings.DeviceHealthTelemetryConfiguration AS ADHSLevel_Desired,properties.reported.Settings.DeviceHealthTelemetryConfiguration.value AS ADHSLevel_Reported from devices.modules where moduleId='osconfig'"

schermopname van az iot query (een ander extra voorbeeld)

2.4: Een aangepaste configuratie toepassen (tijdzonevoorbeeld)

Met de CommandRunner functie van OSConfig kunt u vrijwel alles op het apparaat ophalen en instellen. In dit voorbeeld wordt de tijdzone van het besturingssysteem van het apparaat ingesteld op UTC. Het afdwingen van een uniforme tijdzone op eindpunten (ongeacht hun fysieke locatie) is een veelvoorkomende gewoonte om de verwerking van tijdstempels in een gedistribueerde oplossing te verbeteren.

De volgende Azure CLI-opdracht vertelt OSConfig om de tijdzone in te stellen met behulp van timedatectlen om de resulterende tijdzone te rapporteren.

az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_timezone_config", "Action":3, "Arguments": "timedatectl set-timezone UTC; timedatectl | grep zone | tr -d '[:space:]'"}}}' --query "properties.desired.CommandRunner"

schermopname van az iot hub module-twin update command

In de uitvoer ziet u dat we de gewenste opdracht in de dubbel hebben ingesteld. Om te bevestigen dat het heeft gewerkt, nemen we een extra stap. Eerst wachten we ten minste 30 seconden het apparaat tijd geeft om de opdracht te ontvangen, te verwerken en de dubbel bij te werken met de resultaten.

Nadat u ten minste 30 seconden hebt gewacht sinds de vorige opdracht, gebruikt u het volgende om de uitvoer op te halen:

az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"

schermopname van az iot query (time zone example)

2.5: Apparaatconnectiviteit testen (pingvoorbeeld)

In dit voorbeeld wordt de functie CommandRunner samen met ping gebruikt om de netwerkverbinding vanuit het perspectief van het apparaat te testen.

az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"connectivity_test_1", "Action":3, "Arguments":"ping -c 2 example.com"}}}' --query "properties.desired.CommandRunner"

schermopname van az iot hub module-twin update command (ping example)

Net als in het vorige voorbeeld toont de uitvoer van az iot hub module-twin update dat we de gewenste opdrachteigenschap op de tweeling hebben ingesteld en we een tweede stap gebruiken om de resultaten op te halen.

Nadat u ten minste 30 seconden hebt gewacht sinds de vorige opdracht, gebruikt u het volgende om de resultaten op te halen:

az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"

schermopname van az iot query (ping example)

2.6: Opnieuw opstarten of afsluiten met vooraf gedefinieerde CommandRunner-acties

In het volgende voorbeeld wordt het apparaat opnieuw opgestart. Als u in plaats daarvan wilt afsluiten, wijzigt u Action: 1 in Action: 2 in de gewenste eigenschapswaarde.

az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_reboot_command", "Action":1}}}' --query "properties.desired.CommandRunner"

schermopname van az iot hub module-twin update (voorbeeld van opnieuw opstarten)

Resources opschonen

Als u geen van de resources wilt behouden, kunt u ze verwijderen door de resourcegroep te verwijderen die u eerder hebt gemaakt.

az group delete --resource-group QuickstartOSConfig

schermopname az group delete

Volgende stappen

  • In deze handleiding is slechts één apparaat gebruikt om snel aan de slag te gaan. Als u apparaten op schaal wilt configureren, kunt u OSConfig gebruiken samen met IoT Hub Device Management met OSConfig.
  • Zie voor meer informatie over OSConfig: OSConfig-documentatie.