Az IoT Central integrálása az Azure Pipelinessal a folyamatos integráció és a folyamatos teljesítés érdekében
A folyamatos integráció és a folyamatos teljesítés (CI/CD) azt jelenti, hogy a szoftvereket rövid, gyakori ciklusokban, automatizálási folyamatokkal fejlesztik és kézbesítik. Ez a cikk bemutatja, hogyan automatizálhatja egy IoT Central-alkalmazáskonfiguráció összeállítását, tesztelését és üzembe helyezését. Ez az automatizálás lehetővé teszi, hogy a fejlesztői csapatok gyakrabban nyújtsanak megbízható kiadásokat.
A folyamatos integráció a kód forráskódtárban lévő ágra történő véglegesítésével kezdődik. A rendszer minden véglegesítést egyesít más fejlesztők véglegesítéseivel, így biztosítva, hogy ne legyenek ütközések. A módosításokat a rendszer tovább érvényesíti egy build létrehozásával és automatizált tesztek futtatásával az adott builden. Ez a folyamat végső soron egy összetevőt vagy üzembe helyezési csomagot eredményez egy célkörnyezetben való üzembe helyezéshez. Ebben az esetben a cél egy Azure IoT Central-alkalmazás.
Ahogy az IoT Central is része a nagyobb IoT-megoldásnak, az IoT Central a CI/CD-folyamat része. A CI/CD-folyamatnak üzembe kell helyeznie a teljes IoT-megoldást és az összes konfigurációt az egyes környezetekben a fejlesztéstől az éles környezetig:
Az IoT Central egy olyan alkalmazásplatform, amely szolgáltatásösszetevőként eltérő üzembe helyezési követelményekkel rendelkezik. Az IoT Central esetében konfigurációkat és eszközsablonokat kell üzembe helyeznie. Ezeket a konfigurációkat és eszközsablonokat API-k használatával felügyeljük és integráljuk a kiadási folyamatba.
Bár automatizálható az IoT Central-alkalmazások létrehozása, minden környezetben létre kell hoznia egy alkalmazást a CI/CD-folyamat fejlesztése előtt.
Az Azure IoT Central REST API használatával integrálhatja az IoT Central-alkalmazáskonfigurációkat a kiadási folyamatba.
Ez az útmutató végigvezeti egy új folyamat létrehozásán, amely frissíti az IoT Central-alkalmazásokat a GitHubon kezelt konfigurációs fájlok alapján. Ez az útmutató konkrét utasításokat tartalmaz az Azure Pipelinesba való integrációhoz, de az IoT Central bármilyen olyan kiadási folyamatba beépíthető, amely olyan eszközökkel készült, mint a Tekton, a Jenkins, a GitLab vagy a GitHub Actions.
Ebben az útmutatóban létrehoz egy folyamatot, amely csak egy IoT Central-konfigurációt alkalmaz egy IoT Central-alkalmazás egyetlen példányára. A lépéseket egy nagyobb folyamatba kell integrálnia, amely üzembe helyezi a teljes megoldást, és előlépteti azt a fejlesztéstőla minőségbiztosítási folyamaton át az előkészítésig az éles környezetig, és az összes szükséges tesztelést elvégzi.
A szkriptek jelenleg nem adják át a következő beállításokat az IoT Central-példányok között: irányítópultok, nézetek, eszközsablonok egyéni beállításai, díjszabási csomag, UX-testreszabások, alkalmazásképek, szabályok, ütemezett feladatok, mentett feladatok és regisztrációs csoportok.
A szkriptek jelenleg nem távolítják el a konfigurációs fájlban nem szereplő beállításokat a cél IoT Central-alkalmazásból.
Előfeltételek
Az útmutató lépéseinek elvégzéséhez a következő előfeltételek szükségesek:
- Két IoT Central-alkalmazás – egy a fejlesztési környezethez és egy az éles környezethez. További információ: IoT Central-alkalmazás létrehozása.
- Két Azure Key Vault – egy a fejlesztési környezethez és egy az éles környezethez. Ajánlott minden környezethez dedikált Key Vaultot létrehozni. További információ: Azure Key Vault létrehozása az Azure Portallal.
- GitHub-fiók GitHub.
- Egy Azure DevOps-szervezet. További információ: Azure DevOps-szervezet létrehozása.
- PowerShell 7 Windowshoz, Machez vagy Linuxhoz. Szerezze be a PowerShellt.
- A PowerShell 7-környezetben telepített Azure Az PowerShell-modul. További információ: Az Azure Az PowerShell-modul telepítése.
- Visual Studio Code vagy más eszköz PowerShell- és JSON-fájlok szerkesztéséhez.Szerezze be a Visual Studio Code-ot.
- Git-ügyfél. Töltse le a legújabb verziót a Git – Letöltések (git-scm.com) webhelyről.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
A mintakód letöltése
Első lépésként forgja el az IoT Central CI/CD GitHub-adattárat, majd klónozza az elágaztatást a helyi gépre:
A GitHub-adattár elágaztatásához nyissa meg az IoT Central CI/CD GitHub-adattárat , és válassza az Elágaztatás lehetőséget.
Klónozza az adattár elágazását a helyi gépre egy konzol vagy bash ablak megnyitásával és az alábbi parancs futtatásával.
git clone https://github.com/{your GitHub username}/iot-central-CICD-sample
Egyszerű szolgáltatás létrehozása
Bár az Azure Pipelines közvetlenül integrálható egy kulcstartóval, egy folyamatnak szüksége van egy szolgáltatásnévre néhány dinamikus kulcstartó-interakcióhoz, például titkos kulcsok lekéréséhez az adatexportálási célhelyekhez.
Az előfizetésre hatókörrel rendelkező szolgáltatásnév létrehozása:
Futtassa a következő parancsot egy új szolgáltatásnév létrehozásához:
az ad sp create-for-rbac -n DevOpsAccess --scopes /subscriptions/{your Azure subscription Id} --role Contributor
Jegyezze fel a jelszót, az appId-et és a bérlőt, amint később szüksége lesz ezekre az értékekre.
Adja hozzá a szolgáltatásnév jelszavát titkos kódként
SP-Password
az éles kulcstartóhoz:az keyvault secret set --name SP-Password --vault-name {your production key vault name} --value {your service principal password}
Adjon engedélyt a szolgáltatásnévnek a kulcstartó titkos kulcsainak olvasására:
az keyvault set-policy --name {your production key vault name} --secret-permissions get list --spn {the appId of the service principal}
IoT Central API-jogkivonatok létrehozása
Ebben az útmutatóban a folyamat API-jogkivonatokkal kommunikál az IoT Central-alkalmazásokkal. Szolgáltatásnév is használható.
Feljegyzés
Az IoT Central API-jogkivonatok egy év elteltével lejárnak.
Végezze el a következő lépéseket mind a fejlesztési, mind az éles IoT Central-alkalmazások esetében.
Az IoT Central-alkalmazásban válassza az Engedélyek , majd az API-jogkivonatok lehetőséget.
Válassza az Új lehetőséget.
Adjon nevet a jogkivonatnak, adja meg az alkalmazás legfelső szintű szervezetét, és állítsa be a szerepkört app Rendszergazda istratorra.
Jegyezze fel az API-jogkivonatot a fejlesztési IoT Central-alkalmazásból. Később, az IoTC-Config.ps1 szkript futtatásakor fogja használni.
Mentse a létrehozott jogkivonatot az éles IoT Central-alkalmazásból az éles kulcstartóba hívott
API-Token
titkos kódként:az keyvault secret set --name API-Token --vault-name {your production key vault name} --value '{your production app API token}'
Konfigurációs fájl létrehozása
Ezek a lépések létrehoznak egy JSON-konfigurációs fájlt a fejlesztési környezethez egy meglévő IoT Central-alkalmazás alapján. Az összes meglévő eszközsablont is letölti az alkalmazásból.
Futtassa a következő PowerShell 7-szkriptet az IoT Central CI/CD-adattár helyi példányában:
cd .\iot-central-CICD-sample\PowerShell\ .\IoTC-Config.ps1
Kövesse az utasításokat az Azure-fiókba való bejelentkezéshez.
A bejelentkezés után a szkript megjeleníti az IoTC Config beállítások menüjét. A szkript létrehozhat egy konfigurációs fájlt egy meglévő IoT Central-alkalmazásból, és konfigurációt alkalmazhat egy másik IoT Central-alkalmazásra.
Konfigurációs fájl létrehozásához válassza az 1. lehetőséget.
Adja meg a szükséges paramétereket, és nyomja le az Enter billentyűt:
- A fejlesztési IoT Central-alkalmazáshoz létrehozott API-jogkivonat.
- A fejlesztési IoT Central-alkalmazás altartománya.
- Írja be a .. \Config\Dev , mint a konfigurációs fájl és eszközsablonok tárolására használt mappa.
- A fejlesztőikulcs-tároló neve.
A szkript létrehoz egy IoTC Configuration nevű mappát a Config\Dev mappában az adattár helyi példányában. Ez a mappa egy konfigurációs fájlt és egy Eszközmodellek nevű mappát tartalmaz az alkalmazás összes eszközsablonjához.
A konfigurációs fájl módosítása
Most, hogy rendelkezik egy konfigurációs fájllal, amely a fejlesztési IoT Central-alkalmazáspéldány beállításait jelöli, végezze el a szükséges módosításokat, mielőtt ezt a konfigurációt az éles IoT Central-alkalmazáspéldányra alkalmazza.
Hozzon létre egy másolatot a korábban létrehozott Dev mappáról, és hívja éles környezetnek.
Nyissa meg a IoTC-Config.json az Éles mappában egy szövegszerkesztővel.
A fájl több szakaszból áll. Ha azonban az alkalmazás nem használ egy adott beállítást, akkor a szakasz nem szerepel a fájlban:
{ "APITokens": { "value": [ { "id": "dev-admin", "roles": [ { "role": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4" } ], "expiry": "2023-05-31T10:47:08.53Z" } ] }, "data exports": { "value": [ { "id": "5ad278d6-e22b-4749-803d-db1a8a2b8529", "displayName": "All telemetry to blob storage", "enabled": false, "source": "telemetry", "destinations": [ { "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63" } ], "status": "notStarted" } ] }, "device groups": { "value": [ { "id": "66f41d29-832d-4a12-9e9d-18932bee3141", "displayName": "MXCHIP Getting Started Guide - All devices" }, { "id": "494dc749-0963-4ec1-89ff-e1de2228e750", "displayName": "RS40 Occupancy Sensor - All devices" }, { "id": "dd87877d-9465-410b-947e-64167a7a1c39", "displayName": "Cascade 500 - All devices" }, { "id": "91ceac5b-f98d-4df0-9ed6-5465854e7d9e", "displayName": "Simulated devices" } ] }, "organizations": { "value": [] }, "roles": { "value": [ { "id": "344138e9-8de4-4497-8c54-5237e96d6aaf", "displayName": "Builder" }, { "id": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4", "displayName": "Administrator" }, { "id": "ae2c9854-393b-4f97-8c42-479d70ce626e", "displayName": "Operator" } ] }, "destinations": { "value": [ { "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63", "displayName": "Blob destination", "type": "blobstorage@v1", "authorization": { "type": "connectionString", "connectionString": "DefaultEndpointsProtocol=https;AccountName=yourexportaccount;AccountKey=*****;EndpointSuffix=core.windows.net", "containerName": "dataexport" }, "status": "waiting" } ] }, "file uploads": { "connectionString": "FileUpload", "container": "fileupload", "sasTtl": "PT1H" }, "jobs": { "value": [] } }
Ha az alkalmazás fájlfeltöltéseket használ, a szkript létrehoz egy titkos kulcsot a fejlesztői kulcstartóban a
connectionString
tulajdonságban látható értékkel. Hozzon létre egy azonos nevű titkos kulcsot az éles kulcstartóban, amely tartalmazza az éles tárfiók kapcsolati sztring. Példa:az keyvault secret set --name FileUpload --vault-name {your production key vault name} --value '{your production storage account connection string}'
Ha az alkalmazás adatexportálást használ, adja hozzá a célhelyek titkos kulcsait az éles kulcstartóhoz. A konfigurációs fájl nem tartalmaz tényleges titkos kulcsokat a célhelyhez, a titkos kulcsok a kulcstartóban vannak tárolva.
Frissítse a konfigurációs fájl titkos kulcsait a kulcstartó titkos kulcsának nevével.
Céltípus Módosítandó tulajdonság Service Bus-üzenetsor connectionString Service Bus-témakör connectionString Azure Data Explorer clientSecret Azure Blob Storage connectionString Event Hubs connectionString Webhook – hitelesítés nélkül n/a Példa:
"destinations": { "value": [ { "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63", "displayName": "Blob destination", "type": "blobstorage@v1", "authorization": { "type": "connectionString", "connectionString": "Storage-CS", "containerName": "dataexport" }, "status": "waiting" } ] }
A Konfiguráció mappa GitHub-adattárba való feltöltéséhez futtassa az alábbi parancsokat az IoTC-CICD-howto mappából.
git add Config git commit -m "Adding config directories and files" git push
Folyamat létrehozása
- Nyissa meg az Azure DevOps-szervezetet egy webböngészőben a következő lépésekkel:
https://dev.azure.com/{your DevOps organization}
- Új projekt létrehozásához válassza az Új projekt lehetőséget.
- Adjon nevet és opcionális leírást a projektnek, majd válassza a Létrehozás lehetőséget.
- A projekt kezdőlapján válassza a Folyamatok, majd a Folyamat létrehozása lehetőséget.
- A kód helyeként válassza a GitHubot .
- Válassza az AzurePipelines engedélyezése lehetőséget, hogy engedélyezze az Azure Pipelines számára a GitHub-fiók elérését.
- Az Adattár kiválasztása lapon válassza ki az IoT Central CI/CD GitHub-adattár elágaztatását.
- Amikor a rendszer kéri, hogy jelentkezzen be a GitHubra, és adjon engedélyt az Azure Pipelines számára az adattár eléréséhez, válassza a Jóváhagyás > telepítés lehetőséget.
- A folyamat konfigurálása lapon válassza a Starter-folyamatot az első lépésekhez. A azure-pipelines.yml megjelenik a szerkesztéshez.
Változócsoport létrehozása
A kulcstartó titkos kulcskódjai egyszerűen integrálhatók a folyamatba változó csoportokon keresztül. Változócsoport használatával győződjön meg arról, hogy a megfelelő titkos kulcsok elérhetők az üzembehelyezési szkript számára. Változócsoport létrehozása:
Válassza a bal oldali menü Folyamatok szakaszában található Kódtár lehetőséget.
Válassza a + Változó csoport lehetőséget.
Adja meg
keyvault
a változócsoport nevét.Engedélyezze a kapcsolót, hogy titkos kulcsokat csatoljon egy Azure-kulcstartóból.
Válassza ki az Azure-előfizetését, és engedélyezze azt. Ezután válassza ki az éles kulcstartó nevét.
Válassza a Hozzáadás lehetőséget a változók csoporthoz való hozzáadásának megkezdéséhez.
Adja hozzá a következő titkos kódokat:
- Az éles alkalmazás IoT Central API-kulcsa. Ezt a titkos kulcsot
API-Token
a létrehozásakor hívta. - A korábban létrehozott szolgáltatásnév jelszava. Ezt a titkos kulcsot
SP-Password
a létrehozásakor hívta.
- Az éles alkalmazás IoT Central API-kulcsa. Ezt a titkos kulcsot
Kattintson az OK gombra.
A változócsoport mentéséhez válassza a Mentés lehetőséget.
A folyamat konfigurálása
Most konfigurálja a folyamatot az IoT Central-alkalmazás konfigurációs módosításainak leküldésére:
Válassza a folyamatok lehetőséget a bal oldali menü Folyamatok szakaszában.
Cserélje le a folyamat YAML-tartalmát a következő YAML-re. A konfiguráció feltételezi, hogy az éles kulcstartó a következőket tartalmazza:
- Az éles IoT Central-alkalmazás API-jogkivonata egy úgynevezett titkos kódban
API-Token
. - A szolgáltatásnév jelszava egy titkos kódban, a .
SP-Password
Cserélje le az éles példányok értékeit
-AppName
és-KeyVault
a megfelelő értékeket.Jegyezte fel a
-AppId
szolgáltatásnevet, és-TenantId
amikor létrehozta a szolgáltatásnevet.trigger: - master variables: - group: keyvault - name: buildConfiguration value: 'Release' steps: - task: PowerShell@2 displayName: 'IoT Central' inputs: filePath: 'PowerShell/IoTC-Task.ps1' arguments: '-ApiToken "$(API-Token)" -ConfigPath "Config/Production/IoTC Configuration" -AppName "{your production IoT Central app name}" -ServicePrincipalPassword (ConvertTo-SecureString "$(SP-Password)" -AsPlainText -Force) -AppId "{your service principal app id}" -KeyVault "{your production key vault name}" -TenantId "{your tenant id}"' pwsh: true failOnStderr: true
- Az éles IoT Central-alkalmazás API-jogkivonata egy úgynevezett titkos kódban
Válassza a Mentés és futtatás lehetőséget.
A YAML-fájlt a rendszer a GitHub-adattárba menti, ezért meg kell adnia egy véglegesítési üzenetet, majd válassza a Mentés és futtatás lehetőséget.
A folyamat várólistára van állítva. A futtatás eltarthat néhány percig.
A folyamat első futtatásakor a rendszer arra kéri, hogy adjon engedélyt a folyamatnak az előfizetéshez való hozzáféréshez és a kulcstartó eléréséhez. Válassza az Engedélyezés , majd az Engedélyezés lehetőséget minden erőforrás esetében.
Amikor a folyamatfeladat sikeresen befejeződött, jelentkezzen be az éles IoT Central-alkalmazásba, és ellenőrizze, hogy a konfiguráció a várt módon lett-e alkalmazva.
A fejlesztéstől az éles környezetig történő változások előmozdítása
Most, hogy már rendelkezik egy működő folyamattal, konfigurálási módosításokkal közvetlenül kezelheti az IoT Central-példányokat. Új eszközsablonokat tölthet fel az Eszközmodellek mappába, és közvetlenül a konfigurációs fájlban végezhet módosításokat. Ezzel a módszerrel az IoT Central-alkalmazás konfigurációját ugyanúgy kezelheti, mint bármely más kódot.
Következő lépés
Most, hogy már tudja, hogyan integrálhatja az IoT Central-konfigurációkat a CI/CD-folyamatokba, a következő javasolt lépés az IoT Central-alkalmazások kezelésének és monitorozásának elsajátítása.