Seskupte související prostředky pomocí modulů
Začali jste používat Bicep skripty pro některá nedávná uvedení produktů na trh a ukázaly se jako úspěšné. Vzhledem k tomu, že jste prostředky deklarovali v souboru, můžete rychle nasadit prostředky pro nové uvedení hraček, aniž byste museli ručně konfigurovat prostředky na portálu Azure.
Správce IT vidí, že váš kód Bicep se stává složitějším a má stále větší počet definovaných prostředků, takže vás požádal, zda můžete udělat kód více modulární. Pro různé části nasazení můžete vytvořit jednotlivé soubory Bicep označované jako moduly. Hlavní soubor Bicep může odkazovat na tyto moduly. Moduly se na pozadí překládají do jedné šablony JSON pro nasazení.
Moduly představují také způsob, jak kód Bicep ještě více opakovaně použít. Můžete mít jeden modul Bicep, který používá mnoho dalších souborů Bicep.
Často budete také muset generovat výstupy z modulů a souborů Bicep. Výstupy představují způsob, jak kód Bicep odesílat data zpět komukoli nebo komukoli, kdo nasazení spustil. Nejprve se podíváme na výstupy.
Poznámka:
Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.
Výstupy
Člověk může ručně nasadit soubory Bicep nebo je může nasadit nějaký druh automatizovaného procesu vydávání. V každém případě je běžné mít nějaká data ze souboru, který potřebujete odeslat zpět komukoli nebo čemukoli, kdo provádí implementaci nasazení toho souboru.
Tady je několik ukázkových scénářů, ve kterých můžete potřebovat získat informace z nasazení souboru Bicep:
- Vytvoříte soubor Bicep, který nasadí virtuální počítač, a potřebujete získat veřejnou IP adresu, abyste do počítače mohli připojit SSH.
- Vytvoříte soubor Bicep, který přijímá sadu parametrů, jako je název prostředí a název aplikace. Soubor používá výraz k pojmenování aplikace Azure App Service, kterou nasadí. Musíte vytvořit výstup názvu aplikace, který soubor nasadil, abyste ho mohli použít v rámci kanálu nasazení k publikování binárních souborů aplikace.
Pro tyto scénáře můžete použít výstupy. Pokud chcete definovat výstup v souboru Bicep, použijte output klíčové slovo takto:
output appServiceAppName string = appServiceAppName
Definice výstupu obsahuje několik klíčových částí:
- Klíčové
outputslovo říká Bicep, že definujete výstup. -
appServiceAppNameje název výstupu. Když někdo úspěšně nasadí soubor Bicep, výstupní hodnoty obsahují vámi zadaný název, aby mohl získat přístup k očekávaným hodnotám. -
stringje výstupní typ. Výstupy Bicep podporují stejné typy jako parametry. - Pro každý výstup musí být zadána hodnota. Na rozdíl od parametrů musí výstupy vždy obsahovat hodnoty. Výstupní hodnoty můžou být výrazy, odkazy na parametry nebo proměnné nebo vlastnosti prostředků nasazených v souboru.
Návod
Výstupy můžou používat stejné názvy jako proměnné a parametry. Tato konvence může být užitečná, pokud v rámci proměnné vytvoříte složitý výraz, který se použije v prostředcích souboru Bicep, a také potřebujete vystavit hodnotu proměnné jako výstup.
Tady je další příklad výstupu. Tato hodnota bude mít nastavenou plně kvalifikovaný název domény (FQDN) prostředku veřejné IP adresy.
output ipFqdn string = publicIPAddress.properties.dnsSettings.fqdn
Návod
Zkuste použít vlastnosti prostředků jako výstupy a nemyslet, jak se budou prostředky chovat. Pokud například potřebujete mít výstup pro adresu URL aplikace služby App Service, použijte vlastnost aplikace defaultHostName místo vytvoření řetězce pro adresu URL sami. Někdy tyto předpoklady nejsou platné v různých prostředích nebo způsob, jakým prostředek funguje, takže je bezpečnější mít prostředek, aby vám řekl vlastní vlastnosti.
Upozornění
Nevytvávejte výstupy pro tajné hodnoty, jako jsou připojovací řetězec nebo klíče. Každý, kdo má přístup k vaší skupině prostředků, může číst výstupy ze souborů Bicep. Existují další přístupy, které můžete použít k získání přístupu k vlastnostem tajných prostředků, které probereme v pozdějším modulu.
Definování modulu
Moduly Bicep umožňují uspořádat a opakovaně používat kód Bicep vytvořením menších jednotek, které se dají skládat do souboru Bicep. Jakýkoli soubor Bicep lze použít jako modul jinou šablonou. V tomto výukovém modulu jste vytvořili soubory Bicep. To znamená, že jste už vytvořili soubory, které je možné použít jako moduly Bicep!
Představte si, že máte soubor Bicep, který nasazuje aplikační, databázové a síťové prostředky pro řešení A. Tento soubor Bicep můžete rozdělit na tři moduly, z nichž každý se zaměřuje na vlastní sadu prostředků. Jako bonus můžete nyní znovu použít moduly v jiných šablonách i pro jiná řešení; takže při vývoji souboru pro řešení B, který má podobné síťové požadavky na řešení A, můžete znovu použít síťový modul.
Pokud chcete, aby soubor Bicep obsahoval odkaz na soubor modulu, použijte module klíčové slovo. Definice modulu vypadá podobně jako deklarace prostředků, ale místo zahrnutí typu prostředku a verze rozhraní API použijete název souboru modulu:
module myModule 'modules/mymodule.bicep' = {
name: 'MyModule'
params: {
location: location
}
}
Pojďme se podrobněji podívat na některé klíčové části této definice modulu:
- Klíčové
moduleslovo říká Bicep, že se chystáte použít jiný soubor Bicep jako modul. - Stejně jako prostředky potřebují moduly symbolický název jako
myModule. Symbolický název použijete při odkazování na výstupy modulu v jiných částech souboru Bicep. -
modules/mymodule.bicepje cesta k souboru modulu Bicep relativně k tomuto souboru. Nezapomeňte, že soubor modulu je jen běžný soubor Bicep. - Stejně jako prostředky
nameje vlastnost povinná. Azure používá název modulu, protože vytvoří samostatné nasazení pro každý modul v rámci souboru Bicep. Tato nasazení mají názvy, které můžete použít k jejich identifikaci. - Pomocí klíčového slova můžete zadat libovolné
paramsmodulu. Když nastavíte hodnoty jednotlivých parametrů v souboru Bicep, můžete použít výrazy, parametry souboru, proměnné, vlastnosti prostředků nasazených v souboru a výstupy z jiných modulů. Bicep automaticky pochopí závislosti mezi prostředky.
Moduly a výstupy
Stejně jako šablony můžou moduly Bicep definovat výstupy. V rámci šablony je běžné zřetězovat moduly. V takovém případě může výstup z jednoho modulu být parametrem pro jiný modul. Pomocí modulů a výstupů můžete společně vytvářet výkonné a opakovaně použitelné soubory Bicep.
Návrh modulů
Dobrý modul Bicep se řídí některými klíčovými principy:
Modul by měl mít jasný účel. Pomocí modulů můžete definovat všechny prostředky související s konkrétní částí vašeho řešení. Můžete například vytvořit modul, který obsahuje všechny prostředky používané k monitorování aplikace. Modul můžete také použít k definování sady prostředků, které patří dohromady, jako jsou všechny databázové servery a databáze.
Nevkládejte každý prostředek do vlastního modulu. Pro každý nasazený prostředek byste neměli vytvářet samostatný modul. Pokud máte prostředek, který má mnoho složitých vlastností, může být vhodné tento prostředek umístit do vlastního modulu, ale obecně je lepší, aby moduly zkombinovaly více prostředků.
Modul by měl mít jasné parametry a výstupy, které mají smysl. Zvažte účel modulu. Zvažte, zda by měl modul manipulovat hodnotami parametrů, nebo zda by tento úkol měl řešit nadřazený soubor Bicep a poté jedinou hodnotu předat modulu. Podobně se zamyslete nad výstupy, které by modul měl vrátit, a ujistěte se, že jsou užitečné pro soubory Bicep, které budou modul používat.
Modul by měl být co nejvíce samostatný. Pokud modul potřebuje použít proměnnou k definování části modulu, měla by být proměnná obecně zahrnuta do souboru Bicep modulu, nikoli do nadřazeného souboru Bicep.
Modul by neměl vypouštět tajné kódy. Stejně jako šablony nevytvávejte výstupy modulu pro tajné hodnoty, jako jsou připojovací řetězec nebo klíče.