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:
- Volg eerst de stappen in Een OSConfig-testomgeving (met Azure IoT) binnen 5 minuten maken
- 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
- U hebt een Azure-account met een actief abonnement nodig. Indien nodig kunt u gratis een account maken.
- U gebruikt de Azure Cloud Shell
bash
-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 eigenbash
-omgeving.
- 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
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
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
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>"
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
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
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
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>
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
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
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
1.2.5: De SSH-sessie afsluiten
exit
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 deviceId
van 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'"
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'"
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'"
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 timedatectl
en 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"
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'"
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"
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'"
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"
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
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.