Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ke správě životního cyklu zařízení IoT použijte nástroje pro automatizaci, jako je GitHub Actions. Tento kurz ukazuje pracovní postup GitHub Actions, který připojí zařízení k centru IoT pomocí služby Azure Device Provisioning Service (DPS).
V tomto návodu se naučíte, jak:
- Uložte přihlašovací údaje pro ověřování jako tajné kódy úložiště.
- Vytvořte pracovní postup pro zřízení prostředků služby IoT Hub a Device Provisioning Service.
- Spusťte pracovní postup a monitorujte simulované zařízení při připojení ke službě IoT Hub.
Požadavky
Předplatné Azure
Pokud nemáte předplatné Azure, vytvořte si bezplatný účet před zahájením.
Nástroj Azure CLI
Použijte prostředí Bash v Azure Cloud Shellu.
Nebo pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Účet GitHubu s úložištěm, které vlastníte, nebo úložištěm, ke kterému máte přístup správce. Další informace najdete v tématu Začínáme s GitHubem.
1. Vytvoření tajných kódů úložiště
Pracovní postup, který definujete v další části, vyžaduje přístup k vašemu předplatnému Azure k vytváření a správě prostředků. Tyto informace nechcete umístit do nechráněného souboru, kde by se daly zjistit, takže místo toho k uložení těchto informací používáme tajné kódy úložiště, ale přesto je zpřístupníme jako proměnnou prostředí v pracovním postupu. Další informace najdete v tématu Použití tajných kódů v GitHub Actions.
Tajné kódy úložiště můžou spravovat jenom vlastníci úložiště a správci.
Vytvořte služebního principála
Místo poskytnutí přihlašovacích údajů pro osobní přístup vytvoříme instanční objekt a pak tyto přihlašovací údaje přidáme jako tajné kódy úložiště. Pomocí Azure CLI vytvořte novou službu principal. Další informace najdete v tématu Vytvoření instančního objektu Azure pomocí Azure CLI.
Pomocí příkazu az ad sp create-for-rbac vytvořte servisního principála s přístupem přispěvatele ke konkrétní skupině prostředků. Nahraďte
<SUBSCRIPTION_ID>a<RESOURCE_GROUP_NAME>nahraďte vlastními informacemi.Tento příkaz vyžaduje role správce přístupu vlastníka nebo uživatele v předplatném.
az ad sp create-for-rbac --name github-actions-sp --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>Zkopírujte následující položky z výstupu příkazu pro vytvoření aplikační identity a použijte je v další části:
- ClientId.
- klientské tajemství. Tato hodnota je vygenerované heslo pro instanční objekt, ke kterému nemůžete znovu získat přístup.
- ID tenantId.
Pomocí příkazu az role assignment create přiřaďte instančnímu objektu dvě další role přístupu: Přispěvatel dat služby Device Provisioning a Přispěvatel dat služby IoT Hub. Nahraďte
<SP_CLIENT_ID>hodnotou clientId , kterou jste zkopírovali z výstupu předchozího příkazu.az role assignment create --assignee "<SP_CLIENT_ID>" --role "Device Provisioning Service Data Contributor" --resource-group "<RESOURCE_GROUP_NAME>"az role assignment create --assignee "<SP_CLIENT_ID>" --role "IoT Hub Data Contributor" --resource-group "<RESOURCE_GROUP_NAME>"
Uložení přihlašovacích údajů služby jako tajemství
Na GitHub.com přejděte do nastavení úložiště.
V navigační nabídce vyberte Tajné kódy a pak vyberte Akce.
Vyberte Nový tajný klíč úložiště.
Vytvořte tajemství pro ID service principal.
-
Název:
APP_ID - Tajný klíč: Vložte identifikátor klienta, který jste zkopírovali z výstupu příkazu pro vytvoření služebního principála.
-
Název:
Vyberte Přidat tajný klíč a pak vyberte Nový tajný klíč úložiště a přidejte druhý tajný klíč.
Vytvořte tajemství pro heslo objektu služby.
-
Název:
SECRET - Tajný kód: Vložte tajný klíč klienta, který jste zkopírovali z výstupu příkazu pro vytvoření služebního principála.
-
Název:
Vyberte Přidat tajný klíč a pak vyberte Nový tajný klíč úložiště a přidejte konečný tajný klíč.
Vytvořte tajný kód pro vašeho tenanta Azure.
-
Název:
TENANT - Tajemství: Vložte ID tenanta, které jste zkopírovali z výstupu příkazu pro vytvoření služebního principála.
-
Název:
Vyberte Add secret (Přidat tajný kód).
2. Vytvoření pracovního postupu
Pracovní postup GitHub Actions definuje úlohy, které se spouštějí, když událost spustí pracovní postup. Pracovní postup obsahuje jednu nebo více úloh , které se můžou spouštět paralelně nebo postupně. Další informace najdete v tématu Principy GitHub Actions.
Pro účely tohoto kurzu vytvoříme jeden pracovní postup, který obsahuje úlohy pro každou z následujících úloh:
- Zřízení instance služby IoT Hub a instance DPS
- Propojte mezi sebou instance IoT Hubu a DPS.
- Vytvořte individuální registraci v instanci DPS a zaregistrujte zařízení do centra IoT pomocí ověřování symetrického klíče prostřednictvím registrace DPS.
- Simulujte zařízení po dobu pěti minut a monitorujte události centra IoT.
Pracovní postupy jsou soubory YAML umístěné v .github/workflows/ adresáři úložiště.
V úložišti GitHub přejděte na kartu Akce .
V podokně Akce vyberte Nový pracovní postup.
Na stránce Zvolit pracovní postup můžete zvolit předem připravené šablony, které chcete použít. Pro účely tohoto kurzu vytvoříme vlastní pracovní postup, takže vyberte Nastavit pracovní postup sami.
GitHub pro vás vytvoří nový soubor pracovního postupu. Všimněte si, že je v adresáři
.github/workflows/. Dejte novému souboru smysluplný název, napříkladdps-tutorial.yml.Přidejte parametr name , který vašemu pracovnímu postupu pojmenuje.
name: DPS TutorialPřidejte parametr on.workflow_dispatch . Parametr
ondefinuje, kdy se pracovní postup spustí. Parametrworkflow_dispatchoznačuje, že chceme pracovní postup aktivovat ručně. Pomocí tohoto parametru bychom mohli definovatinputs, který by se předal pracovnímu postupu při každém spuštění, aleinputspro účely tohoto kurzu nepoužíváme.on: workflow_dispatchDefinujte proměnné prostředí pro prostředky, které vytváříte v pracovním postupu. Tyto proměnné jsou k dispozici pro všechny úlohy v pracovním postupu. Můžete také definovat proměnné prostředí pro jednotlivé úlohy nebo pro jednotlivé kroky v rámci úloh.
Zástupné hodnoty nahraďte vlastními hodnotami. Ujistěte se, že zadáte stejnou skupinu prostředků, ke které má hlavní účet služby přístup.
env: HUB_NAME: <Globally unique IoT hub name> DPS_NAME: <Desired Device Provisioning Service name> DEVICE_NAME: <Desired device name> RESOURCE_GROUP: <Solution resource group where resources will be created>Definujte proměnné prostředí pro tajné kódy, které jste vytvořili v předchozí části.
SP_USER: ${{ secrets.APP_ID }} SP_SECRET: ${{ secrets.SECRET }} SP_TENANT: ${{ secrets.TENANT }}Přidejte parametr úlohy do souboru pracovního postupu.
jobs:Definujte první úlohu pro náš pracovní postup, který nazýváme
provisionúlohu. Tato úloha zřizuje instance IoT Hub a DPS:provision: runs-on: ubuntu-latest steps: - name: Provision Infra run: | az --version az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot hub create -n "$HUB_NAME" -g "$RESOURCE_GROUP" az iot dps create -n "$DPS_NAME" -g "$RESOURCE_GROUP"Další informace o příkazech spuštěných v této úloze najdete tady:
- Použijte příkaz az iot hub create
- az iot dps create
Definujte úlohu pro
configureinstance DPS a IoT Hubu. Všimněte si, že tato úloha používá parametr needs , což znamená, žeconfigureúloha se nespustí, dokud uvedená úloha nedokončí vlastní spuštění úspěšně.configure: runs-on: ubuntu-latest needs: provision steps: - name: Configure Infra run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot dps linked-hub create --dps-name "$DPS_NAME" --hub-name "$HUB_NAME"Další informace o příkazech spuštěných v této úloze najdete tady:
Definujte úlohu,
registerkterá vytvoří jednotlivou registraci, a pak ji použijte k registraci zařízení do IoT Hubu.register: runs-on: ubuntu-latest needs: configure steps: - name: Create enrollment run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot dps enrollment create -n "$DPS_NAME" --eid "$DEVICE_NAME" --attestation-type symmetrickey --auth-type login - name: Register device run: | az iot device registration create -n "$DPS_NAME" --rid "$DEVICE_NAME" --auth-type loginPoznámka:
Tato úloha a další úkoly používají parametr
--auth-type loginv některých příkazech k označení, že operace by měla používat objekt "service principal" z aktuální relace Microsoft Entra. Alternativní možnost--auth-type keynevyžaduje konfiguraci služebního principálu, ale je méně zabezpečená.Další informace o příkazech spuštěných v této úloze najdete tady:
- az iot dps přihlášení vytvořit
- az iot device registration create (vytvoření registrace zařízení IoT)
Definujte úlohu na
simulatezařízení IoT, které se připojuje k centru IoT a odesílá ukázkové zprávy telemetrie.simulate: runs-on: ubuntu-latest needs: register steps: - name: Simulate device run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot device simulate -n "$HUB_NAME" -d "$DEVICE_NAME"Další informace o příkazech spuštěných v této úloze najdete tady:
Definujte úlohu do
monitorkoncového bodu centra IoT pro události a sledujte zprávy přicházející ze simulovaného zařízení. Všimněte si, že úlohy simulování a monitorování definují úlohu registru v parametruneeds. Tato konfigurace znamená, že po úspěšném dokončení úlohy registrace se obě tyto úlohy spustí paralelně.monitor: runs-on: ubuntu-latest needs: register steps: - name: Monitor d2c telemetry run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot hub monitor-events -n "$HUB_NAME" -yDalší informace o příkazech spuštěných v této úloze najdete tady:
- az iot hub monitor-events - sledujte události v IoT centru
Úplný soubor pracovního postupu by měl vypadat jako v tomto příkladu s informacemi, které nahradí zástupné hodnoty v proměnných prostředí:
name: DPS Tutorial on: workflow_dispatch env: HUB_NAME: <Globally unique IoT hub name> DPS_NAME: <Desired Device Provisioning Service name> DEVICE_NAME: <Desired device name> RESOURCE_GROUP: <Solution resource group where resources will be created> SP_USER: ${{ secrets.APP_ID }} SP_SECRET: ${{ secrets.SECRET }} SP_TENANT: ${{ secrets.TENANT }} jobs: provision: runs-on: ubuntu-latest steps: - name: Provision Infra run: | az --version az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot hub create -n "$HUB_NAME" -g "$RESOURCE_GROUP" az iot dps create -n "$DPS_NAME" -g "$RESOURCE_GROUP" configure: runs-on: ubuntu-latest needs: provision steps: - name: Configure Infra run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot dps linked-hub create --dps-name "$DPS_NAME" --hub-name "$HUB_NAME" register: runs-on: ubuntu-latest needs: configure steps: - name: Create enrollment run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot dps enrollment create -n "$DPS_NAME" --eid "$DEVICE_NAME" --attestation-type symmetrickey --auth-type login - name: Register device run: | az iot device registration create -n "$DPS_NAME" --rid "$DEVICE_NAME" --auth-type login simulate: runs-on: ubuntu-latest needs: register steps: - name: Simulate device run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot device simulate -n "$HUB_NAME" -d "$DEVICE_NAME" monitor: runs-on: ubuntu-latest needs: register steps: - name: Monitor d2c telemetry run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot hub monitor-events -n "$HUB_NAME" -yUložte, potvrďte a nasdílejte tento nový soubor do úložiště GitHub.
3. Spuštění pracovního postupu
Přejděte na kartu Akce úložiště GitHub.
V podokně Akce vyberte kurz DPS, což je název, který jsme definovali v souboru pracovního postupu, a pak vyberte rozevírací seznam Spustit pracovní postup .
Pokud jste pracovní postup vytvořili v jiné větvi než hlavní, změňte větev a pak vyberte Spustit pracovní postup.
Probíhá nové spuštění pracovního postupu. Vyberte název pro zobrazení detailů spuštění.
V souhrnu pracovního postupu můžete sledovat, jak jednotlivé úlohy začínají a dokončí. Výběrem libovolného názvu úlohy zobrazíte jeho podrobnosti. Úloha simulovaného zařízení běží pět minut a odesílá telemetrii do IoT Hubu. Během této doby vyberte simulované úlohy, která sleduje zprávy odesílané ze zařízení, a úlohu monitorování , která sleduje příjem těchto zpráv službou IoT Hub.
Po úspěšném dokončení všech úloh by se měly u každé z nich zobrazit zelené značky zaškrtnutí.
Vyčistěte zdroje
Pokud nebudete tyto prostředky vytvořené v tomto kurzu dál používat, odstraňte je pomocí následujícího postupu.
Použijte Azure CLI:
Uveďte prostředky ve vaší skupině prostředků.
az resource list --resource-group <RESOURCE_GROUP_NAME>Pokud chcete odstranit jednotlivé prostředky, použijte ID prostředku.
az resource delete --resource-group <RESOURCE_GROUP_NAME> --ids <RESOURCE_ID>Pokud chcete odstranit celou skupinu prostředků a všechny prostředky v ní, spusťte následující příkaz:
az group delete --resource-group <RESOURCE_GROUP_NAME>
Použití webu Azure Portal:
- Na webu Azure Portal přejděte do skupiny prostředků, ve které jste vytvořili nové prostředky.
- Můžete buď odstranit celou skupinu prostředků, nebo vybrat jednotlivé prostředky, které chcete odebrat, a pak vybrat Odstranit.
Další kroky
Naučte se zřizovat instance DPS pomocí dalších nástrojů pro automatizaci.