Tárolók és adatbázisok konfigurálása

Befejeződött

Az üzembe helyezési folyamat egy része gyakran megköveteli az adatbázisokhoz vagy a tárolási szolgáltatásokhoz való csatlakozást. Ez a kapcsolat szükséges lehet adatbázisséma alkalmazásához, hivatkozási adatok adatbázistáblához való hozzáadásához vagy blobok feltöltéséhez. Ebben a leckében megtudhatja, hogyan terjesztheti ki a munkafolyamatot az adat- és tárolási szolgáltatások használatára.

Adatbázisok konfigurálása munkafolyamatból

Számos adatbázis sémákkal rendelkezik, amelyek az adatbázisban található adatok szerkezetét jelölik. Gyakran ajánlott sémát alkalmazni az adatbázisra az üzembe helyezési munkafolyamatból. Ez a gyakorlat segít biztosítani, hogy minden, amire a megoldásnak szüksége van, együtt legyen üzembe helyezve. Emellett biztosítja, hogy ha probléma merül fel a séma alkalmazásakor, a munkafolyamat hibaüzenetet jelenít meg, hogy megoldhassa a problémát, és újra üzembe helyezheti.

Az Azure SQL használatakor adatbázissémákat kell alkalmaznia az adatbázis-kiszolgálóhoz való csatlakozással és a parancsok SQL-szkriptek használatával történő végrehajtásával. Ezek a parancsok adatsík-műveletek. A munkafolyamatnak hitelesítenie kell az adatbázis-kiszolgálón, majd végre kell hajtania a szkripteket. A GitHub Actions biztosítja azt a azure/sql-action műveletet, amely csatlakozhat egy Azure SQL-adatbáziskiszolgálóhoz, és parancsokat hajthat végre.

Néhány más adat- és tárolási szolgáltatást nem kell adatsík API használatával konfigurálni. Ha például az Azure Cosmos DB-vel dolgozik, egy tárolóban tárolja az adatokat. A tárolókat a vezérlősík használatával konfigurálhatja közvetlenül a Bicep-fájlból. Hasonlóképpen az Azure Storage-blobtárolók legtöbb aspektusát üzembe helyezheti és kezelheti a Bicepben is. A következő gyakorlatban láthat egy példát arra, hogyan hozhat létre blobtárolót a Bicepből.

Adat hozzáadása

Számos megoldáshoz referenciaadatokat kell hozzáadni az adatbázisaikhoz vagy tárfiókjaikhoz, mielőtt azok működnének. A munkafolyamatok kiválóan alkalmasak az adatok hozzáadására. Ez azt jelenti, hogy a munkafolyamat futtatása után a környezet teljesen konfigurálva van, és használatra kész.

Az is hasznos, ha mintaadatokat tárol az adatbázisokban, különösen nem éles környezetekben. A mintaadatok segítenek a tesztelőknek és azoknak a felhasználóknak, akik ezeket a környezeteket használják a megoldás azonnali teszteléséhez. Ezek az adatok tartalmazhatnak mintatermékeket vagy például hamis felhasználói fiókokat. Általában nem szeretné hozzáadni ezeket az adatokat az éles környezethez.

Az adatok hozzáadásának módszere a használt szolgáltatástól függ. Például:

  • Ha adatokat szeretne hozzáadni egy Azure SQL-adatbázishoz, egy szkriptet kell végrehajtania, hasonlóan a séma konfigurálásához.
  • Ha adatokat kell beszúrnia az Azure Cosmos DB-be, hozzá kell férnie az adatsík API-hoz, amihez egyéni szkriptkódot kell írnia.
  • Ha blobokat szeretne feltölteni egy Azure Storage-blobtárolóba, a munkafolyamat-szkriptek különböző eszközeit használhatja, például az AzCopy parancssori alkalmazást, az Azure PowerShellt vagy az Azure CLI-t. Ezek az eszközök megértik, hogyan hitelesíthetők az Azure Storage-ban az Ön nevében, és hogyan csatlakozhat az adatsík API-hoz blobok feltöltéséhez.

Idempotencia

Az üzembehelyezési munkafolyamatok és az infrastruktúra kódként való egyik jellemzője, hogy minden káros mellékhatás nélkül újra üzembe helyezhető. Ha például újra üzembe helyez egy Már üzembe helyezett Bicep-fájlt, az Azure Resource Manager összehasonlítja a beküldött fájlt az Azure-erőforrások meglévő állapotával. Ha nincsenek módosítások, a Resource Manager nem végez semmit. A művelet ismételt végrehajtásának képességét idempotencia-nak nevezzük. Érdemes meggyőződni arról, hogy a szkriptek és más munkafolyamat-lépések idempotensek.

Az idempotencia különösen fontos az adatszolgáltatások használatakor, mert azok állapotot tartanak fenn. Tegyük fel, hogy egy mintafelhasználót szúr be egy adatbázistáblába a munkafolyamatból. Ha nem körültekintő, minden alkalommal, amikor futtatja a munkafolyamatot, létrejön egy új mintafelhasználó. Ez az eredmény valószínűleg nem az, amit szeretne.

Ha sémákat alkalmaz egy Azure SQL-adatbázisra, a séma üzembe helyezéséhez használhat egy adatcsomagot, más néven DACPAC-fájlt. A munkafolyamat egy DACPAC-fájlt hoz létre a forráskódból, és létrehoz egy munkafolyamat-összetevőt, akárcsak egy alkalmazás esetén. Ezután a munkafolyamat üzembehelyezési feladata közzéteszi a DACPAC-fájlt az adatbázisban:

Diagram showing a workflow uploading and then referring to an artifact named 'database'.

A DACPAC-fájlok üzembe helyezésekor idempotens módon viselkedik azáltal, hogy összehasonlítja az adatbázis célállapotát a csomagban meghatározott állapottal. Sok esetben ez azt jelenti, hogy nem kell olyan szkripteket írnia, amelyek az idempotencia elvét követik, mert az eszközkezelés kezeli az Ön számára. Az Azure Cosmos DB és az Azure Storage egyes eszközei is helyesen viselkednek.

Ha azonban mintaadatokat hoz létre egy Azure SQL-adatbázisban vagy egy másik olyan tárolási szolgáltatásban, amely nem működik automatikusan idempotens módon, célszerű a szkriptet úgy írni, hogy csak akkor hozza létre az adatokat, ha még nem létezik.

Azt is fontos figyelembe venni, hogy szükség lehet-e az üzembe helyezések visszaállítására, például az üzembehelyezési munkafolyamat egy régebbi verziójának újrafuttatásával. Az adatok módosításainak visszaállítása bonyolulttá válhat, ezért gondosan gondolja át, hogyan fog működni a megoldás, ha engedélyeznie kell a visszaállítást.

Hálózati biztonság

Előfordulhat, hogy egyes Azure-erőforrásokra hálózati korlátozásokat alkalmaz. Ezek a korlátozások kikényszeríthetik az erőforrás adatsíkjára irányuló kérelmekre vonatkozó szabályokat, például:

  • Ez az adatbázis-kiszolgáló csak az IP-címek megadott listájából érhető el.
  • Ez a tárfiók csak egy adott virtuális hálózaton belül üzembe helyezett erőforrásokból érhető el.

A hálózati korlátozások gyakran előfordulnak az adatbázisokban, mert úgy tűnhet, hogy nincs szükség semmire az interneten az adatbázis-kiszolgálóhoz való csatlakozáshoz.

A hálózati korlátozások azonban megnehezíthetik az üzembehelyezési munkafolyamatok számára, hogy az erőforrások adatsíkjaival is működjenek. Ha GitHub-alapú futót használ, annak IP-címe nem ismerhető fel könnyen előre, és az IP-címek nagy készletéből rendelhető hozzá. Emellett a GitHub által üzemeltetett futók nem csatlakoztathatók saját virtuális hálózataihoz.

Az adatsík-műveletek végrehajtásában segítséget nyújtó műveletek némelyike megkerülheti ezeket a problémákat. Például a azure/sql-action művelet:

Diagram illustrating the firewall update process.

Amikor a azure/sql-action műveletet egy Azure SQL logikai kiszolgálóval vagy adatbázissal használja, az a számítási feladat identitásával csatlakozik az Azure SQL logikai kiszolgáló vezérlősíkjához. Frissíti a tűzfalat, hogy a futó hozzáférhessen a kiszolgálóhoz az IP-címéről . Ezután sikeresen elküldheti a DACPAC-fájlt vagy a szkriptet végrehajtásra . A művelet ezután automatikusan eltávolítja a tűzfalszabályt, amikor elkészült.

Más helyzetekben nem lehet ilyen kivételeket létrehozni. Ilyen körülmények között érdemes lehet egy saját üzemeltetésű futót használni, amely egy ön által felügyelt virtuális gépen vagy más számítási erőforráson fut. Ezután igény szerint konfigurálhatja ezt a futót. Használhat ismert IP-címet, vagy csatlakoztatható a saját virtuális hálózatához. Ebben a modulban nem tárgyaljuk a saját üzemeltetésű futókat, de a modul végén található Összegzés oldalon további információkra mutató hivatkozásokat biztosítunk.

Az üzembehelyezési munkafolyamat

A következő gyakorlatban frissíteni fogja az üzembehelyezési munkafolyamatot, hogy új feladatokat adjon hozzá a webhely adatbázis-összetevőinek létrehozásához, az adatbázis üzembe helyezéséhez és a magadatok hozzáadásához:

Diagram showing the revised workflow, including a new database build job, a database deployment job, and data seeding jobs in the test environment.