Kapcsolódó erőforrások csoportosítása modulok használatával

Befejeződött

Elkezdte használni a Bicep-sablonokat a legutóbbi termékbemutatókhoz, és sikeresek voltak. Mivel egy sablonfájlban deklarálta az erőforrásokat, gyorsan üzembe helyezheti az erőforrásokat új bemutatókhoz anélkül, hogy manuálisan kellene konfigurálnia az erőforrásokat az Azure Portalon.

Az informatikai vezető láthatja, hogy a Bicep-kód egyre összetettebbé válik, és egyre több erőforrás van definiálva, ezért megkérdezték, hogy modulárisabbá teheti-e a kódot. Az üzembe helyezés különböző részeihez egyéni Bicep-fájlokat, úgynevezett modulokat hozhat létre. A fő Bicep-sablon hivatkozhat ezekre a modulokra. A háttérben a modulok egyetlen JSON-sablonba vannak lefordítva az üzembe helyezéshez.

A modulok lehetővé teszik a Bicep-kód újrafelhasználhatóságát is. Egyetlen Bicep-modullal rendelkezhet, amelyet sok más Bicep-sablon is használ.

Gyakran kell kimeneteket kibocsátania a Bicep-modulokból és -sablonokból. A kimenetekkel a Bicep-kód visszaküldheti az adatokat annak, aki vagy ami az üzembe helyezést elindította. Először nézzük meg a kimeneteket.

Feljegyzés

Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.

Kimenetek

Az emberek manuálisan is üzembe helyezhetnek Bicep-sablonokat, vagy valamilyen automatizált kiadási folyamat is üzembe helyezheti őket. Akárhogy is, gyakori, hogy a sablonból származó adatok egy részét vissza kell küldenie annak, aki vagy bármi is hajtja végre a sablon üzembe helyezését.

Az alábbiakban néhány példaforgatókönyvet talál, amelyekben előfordulhat, hogy a sablon üzembe helyezésével kapcsolatos információkat kell beszereznie:

  • Létre kell hoznia egy Bicep-sablont, amely üzembe helyez egy virtuális gépet, és le kell szereznie a nyilvános IP-címet, hogy az SSH-t be tudja helyezni a gépbe.
  • Olyan Bicep-sablont hoz létre, amely számos paramétert elfogad, például egy környezetnevet és egy alkalmazásnevet. A sablon kifejezéssel nevez el egy Azure-alkalmazás Service-alkalmazást, amelyet üzembe helyez. Ki kell adnia az alkalmazás nevét, amelyet a sablon üzembe helyezett, hogy egy üzembe helyezési folyamaton belül használhassa az alkalmazás bináris fájljainak közzétételéhez.

Ezekhez a forgatókönyvekhez kimeneteket használhat. Ha bicep-sablonban szeretne kimenetet definiálni, használja az output alábbi kulcsszót:

output appServiceAppName string = appServiceAppName

A kimeneti definíció néhány fő részből áll:

  • A output kulcsszó azt jelzi a Bicepnek, hogy ön definiál egy kimenetet.
  • appServiceAppName a kimenet neve. Ha valaki sikeresen üzembe helyezi a sablont, a kimeneti értékek tartalmazzák a megadott nevet, hogy hozzáférhessenek a várt értékekhez.
  • string a kimeneti típus. A Bicep-kimenetek ugyanazokat a típusokat támogatják, mint a paraméterek.
  • Minden kimenethez meg kell adni egy értéket. A paraméterekkel ellentétben a kimeneteknek mindig értékekkel kell rendelkezniük. A kimeneti értékek lehetnek kifejezések, paraméterekre vagy változókra mutató hivatkozások, illetve a fájlban üzembe helyezett erőforrások tulajdonságai.

Tipp.

A kimenetek ugyanazokat a neveket használhatják, mint a változók és paraméterek. Ez a konvenció akkor lehet hasznos, ha összetett kifejezést hoz létre egy változón belül, amelyet a sablon erőforrásain belül használ, és a változó értékét kimenetként is közzé kell tennie.

Íme egy másik példa egy kimenetre. Ennek értéke egy nyilvános IP-címerőforrás teljes tartománynevére (FQDN) lesz beállítva.

output ipFqdn string = publicIPAddress.properties.dnsSettings.fqdn

Tipp.

Próbálja meg az erőforrástulajdonságokat kimenetként használni, nem pedig feltételezni, hogy az erőforrások hogyan fognak viselkedni. Ha például kimenettel kell rendelkeznie az App Service-alkalmazás URL-címéhez, használja az alkalmazás tulajdonságát defaultHostName ahelyett, hogy saját maga hoz létre sztringet az URL-címhez. Előfordulhat, hogy ezek a feltételezések nem érvényesek különböző környezetekben, vagy az erőforrás működése megváltozik, így biztonságosabb, ha az erőforrás saját tulajdonságait mondja el.

Figyelemfelhívás

Ne hozzon létre kimeneteket titkos értékekhez, például kapcsolati sztring vagy kulcsokhoz. Az erőforráscsoporthoz hozzáféréssel rendelkezők elolvashatják a sablonból származó kimeneteket. A titkos erőforrások tulajdonságaihoz való hozzáféréshez más módszerek is használhatók, amelyeket egy későbbi modulban fogunk tárgyalni.

Modul definiálása

A Bicep-modulok lehetővé teszik a Bicep-kód rendszerezését és újrafelhasználását a sablonba összeállítható kisebb egységek létrehozásával. Bármely Bicep-sablont használhat modulként egy másik sablon. Ebben a képzési modulban Bicep-sablonokat hozott létre. Ez azt jelenti, hogy már létrehozott olyan fájlokat, amelyek Felhasználhatók Bicep-modulokként!

Tegyük fel, hogy rendelkezik egy Bicep-sablonnal, amely alkalmazás-, adatbázis- és hálózati erőforrásokat helyez üzembe az A megoldáshoz. Ezt a sablont három modulra oszthatja, amelyek mindegyike a saját erőforráskészletére összpontosít. Bónuszként mostantól más megoldásokhoz is felhasználhatja a modulokat más sablonokban; így amikor olyan sablont fejleszt a B megoldáshoz, amely az A megoldáshoz hasonló hálózatkezelési követelményekkel rendelkezik, újra felhasználhatja a hálózati modult.

Az A megoldás sablonjának ábrája, amely három modulra hivatkozik: alkalmazás, adatbázis és hálózatkezelés. A hálózati modul ezután újra felhasználható egy másik sablonban a B megoldáshoz.

Ha azt szeretné, hogy a sablon egy modulfájlra mutató hivatkozást tartalmazzon, használja a kulcsszót module . A moduldefiníciók az erőforrás-deklarációhoz hasonlóan néznek ki, de az erőforrástípus és az API-verzió helyett a modul fájlnevét fogja használni:

module myModule 'modules/mymodule.bicep' = {
  name: 'MyModule'
  params: {
    location: location
  }
}

Tekintsük át a moduldefiníció néhány fontos részét:

  • A module kulcsszó azt jelzi a Bicep-nek, hogy egy másik Bicep-fájlt fog használni modulként.
  • Az erőforrásokhoz hasonlóan a moduloknak is szimbolikus névre van szükségük, például myModule. A szimbolikus nevet fogja használni, amikor a modul kimenetére hivatkozik a sablon más részeiben.
  • modules/mymodule.bicep a modulfájl elérési útja a sablonfájlhoz képest. Ne feledje, hogy a modulfájl csak egy normál Bicep-fájl.
  • Az erőforrásokhoz hasonlóan a name tulajdonság is kötelező. Az Azure azért használja a modulnevet, mert külön üzembe helyezést hoz létre a sablonfájl minden egyes modulja számára. Ezek az üzemelő példányok olyan névvel rendelkeznek, amellyel azonosíthatja őket.
  • A modul bármely paraméterét megadhatja a params kulcsszó használatával. Amikor beállítja a sablonon belül az egyes paraméterek értékeit, használhat kifejezéseket, sablonparamétereket, változókat, a sablonban üzembe helyezett erőforrások tulajdonságait és más modulok kimeneteit. A Bicep automatikusan megérti az erőforrások közötti függőségeket.

Modulok és kimenetek

A sablonokhoz hasonlóan a Bicep-modulok is definiálhatnak kimeneteket. Gyakori, hogy a modulok egy sablonon belül egymáshoz láncolják a modulokat. Ebben az esetben az egyik modul kimenete egy másik modul paramétere lehet. A modulok és kimenetek együttes használatával hatékony és újrafelhasználható Bicep-fájlokat hozhat létre.

Modulok tervezése

A jó Bicep-modul néhány fő alapelvet követ:

  • Egy modulnak egyértelmű rendeltetéssel kell rendelkeznie. A modulok segítségével meghatározhatja a megoldás egy adott részéhez kapcsolódó összes erőforrást. Létrehozhat például egy modult, amely az alkalmazás figyeléséhez használt összes erőforrást tartalmazza. Egy modullal olyan erőforrásokat is definiálhat, amelyek összetartoznak, például az összes adatbázis-kiszolgálóhoz és adatbázishoz.

  • Ne helyezzen minden erőforrást a saját moduljába. Ne hozzon létre külön modult minden üzembe helyezendő erőforráshoz. Ha olyan erőforrással rendelkezik, amely sok összetett tulajdonsággal rendelkezik, érdemes lehet ezt az erőforrást a saját moduljába helyezni, de általában jobb, ha a modulok több erőforrást egyesítenek.

  • Egy modulnak egyértelmű paraméterekkel és kimenetekkel kell rendelkeznie, amelyek értelmesek. Fontolja meg a modul célját. Gondolja át, hogy a modulnak módosítania kell-e a paraméterértékeket, vagy a szülősablonnak kell-e ezt kezelnie, majd átadnia egy értéket a modulnak. Hasonlóképpen gondolja át a modul által visszaadott kimeneteket, és győződjön meg arról, hogy azok hasznosak a modult használó sablonok számára.

  • A modulnak a lehető legnagyobb mértékben önállónak kell lennie. Ha egy modulnak változót kell használnia egy modul egy részének meghatározásához, a változót általában a modulfájlban kell szerepeltetni, nem pedig a szülősablonban.

  • Egy modulnak nem szabad titkos kulcsokat kiírnia. A sablonokhoz hasonlóan ne hozzon létre modulkimeneteket titkos értékekhez, például kapcsolati sztring vagy kulcsokhoz.