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.
Návod
Tento obsah je výňatek z elektronické knihy Architektura cloud-native .NET aplikací pro Azure, která je k dispozici na .NET Docs nebo jako bezplatné PDF ke stažení, které si můžete přečíst offline.
Systémy nativní pro cloud přijímají mikroslužby, kontejnery a moderní návrh systému, aby bylo dosaženo rychlosti a flexibility. Poskytují automatizované fáze sestavení a vydávání, které zajišťují konzistentní a kvalitní kód. Ale to je jen část příběhu. Jak zřídíte cloudová prostředí, na kterých tyto systémy běží?
Moderní aplikace nativní pro cloud přijímají široce uznávaný postup infrastruktury jako kódu nebo IaC. S IaC automatizujete zřizování platforem. V podstatě používáte postupy softwarového inženýrství, jako je testování a správa verzí, na vaše postupy DevOps. Vaše infrastruktura a nasazení jsou automatizované, konzistentní a opakovatelné. Stejně jako průběžné doručování automatizuje tradiční model ručních nasazení, infrastruktura jako kód (IaC) vyvíjí způsob správy aplikačních prostředí.
Nástroje, jako je Azure Resource Manager (ARM), Terraform a rozhraní příkazového řádku Azure (CLI), umožňují deklarativní skriptování požadované cloudové infrastruktury.
Šablony Azure Resource Manageru
ARM je zkratka pro Azure Resource Manager. Je to modul pro zřizování rozhraní API, který je integrovaný do Azure a zpřístupněný jako služba API. ARM umožňuje nasadit, aktualizovat, odstranit a spravovat prostředky obsažené ve skupině prostředků Azure v jediné koordinované operaci. Engine poskytnete šablonou založenou na JSONu, která specifikuje požadované prostředky a jejich konfiguraci. ARM automaticky orchestruje nasazení ve správném pořadí, které respektuje závislosti. Stroj zajišťuje idempotenci. Pokud už požadovaný prostředek se stejnou konfigurací existuje, poskytování bude ignorováno.
Šablony Azure Resource Manageru jsou jazyk založený na formátu JSON pro definování různých prostředků v Azure. Základní schéma vypadá přibližně jako obrázek 10–14.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "",
"apiProfile": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
Obrázek 10–14 – schéma šablony Resource Manageru
V této šabloně můžete definovat kontejner úložiště v oddílu prostředků, například takto:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"apiVersion": "2018-07-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
Obrázek 10–15 – Příklad účtu úložiště definovaného v šabloně Resource Manageru
Šablonu ARM je možné parametrizovat s dynamickými informacemi o prostředí a konfiguraci. Umožňuje ho znovu použít k definování různých prostředí, jako je vývoj, kontrola kvality nebo produkční prostředí. Šablona obvykle vytvoří všechny prostředky v rámci jedné skupiny prostředků Azure. V případě potřeby je možné definovat více skupin prostředků v jedné šabloně Resource Manageru. Všechny prostředky v prostředí můžete odstranit odstraněním samotné skupiny prostředků. Analýzu nákladů je možné spustit také na úrovni skupiny prostředků, což umožňuje rychlé účtování nákladů jednotlivých prostředí.
V projektu Šablony pro rychlý start Azure na GitHubu je k dispozici mnoho příkladů šablon ARM. Můžou vám pomoct urychlit vytváření nové šablony nebo úpravu existující šablony.
Šablony Resource Manageru je možné spouštět mnoha způsoby. Nejjednodušší způsob je vložit je přímo do portálu Azure. U experimentálních nasazení může být tato metoda rychlá. Dají se také spustit jako součást procesu sestavení nebo vydání v Azure DevOps. Existují úlohy, které budou ke spouštění šablon využívat připojení k Azure. Změny šablon Resource Manageru se použijí přírůstkově, což znamená, že přidání nového prostředku vyžaduje jenom jeho přidání do šablony. Nástroj sladí rozdíly mezi aktuálními prostředky a těmi definovanými v šabloně. Prostředky se pak vytvoří nebo změní tak, aby odpovídaly tomu, co je definováno v šabloně.
Terraformování
Aplikace nativní pro cloud se často vytvářejí tak, aby byly cloud agnostic. To znamená, že aplikace není úzce svázána s konkrétním dodavatelem cloudu a je možné ji nasadit do libovolného veřejného cloudu.
Terraform je komerční nástroj pro šablony, který dokáže zřizovat aplikace nativní pro cloud ve všech hlavních cloudových hráčích: Azure, Google Cloud Platform, AWS a AliCloud. Místo, aby používal JSON jako jazyk definice šablony, používá o něco stručnější HCL (Hashicorp Configuration Language).
Příklad souboru Terraformu, který se shoduje s předchozí šablonou Resource Manageru (obrázek 10–15), je znázorněn na obrázku 10–16:
provider "azurerm" {
version = "=1.28.0"
}
resource "azurerm_resource_group" "testrg" {
name = "production"
location = "West US"
}
resource "azurerm_storage_account" "testsa" {
name = "${var.storageAccountName}"
resource_group_name = "${azurerm_resource_group.testrg.name}"
location = "${var.region}"
account_tier = "${var.tier}"
account_replication_type = "${var.replicationType}"
}
Obrázek 10–16 – příklad šablony Resource Manageru
Terraform také poskytuje intuitivní chybové zprávy pro šablony problémů. Existuje také šikovná úloha, která se dá použít ve fázi sestavení k včasnému zachycení chyb šablony.
Stejně jako u šablon Resource Manageru jsou k dispozici nástroje příkazového řádku pro nasazení šablon Terraformu. V Azure Pipelines jsou také úlohy vytvořené komunitou, které můžou ověřovat a používat šablony Terraformu.
Někdy Terraform a šablony ARM vypíšou smysluplné hodnoty, například spojovací řetězec do databáze, která byla nově vytvořena. Tyto informace je možné zachytit v kanálu buildu a použít je v následných úlohách.
Skripty a úlohy Azure CLI
Nakonec můžete využít Azure CLI k deklarativnímu skriptování cloudové infrastruktury. Skripty Azure CLI se dají vytvořit, najít a sdílet za účelem zřízení a konfigurace téměř jakéhokoli prostředku Azure. Jednoduché použití příkazového řádku s pozvolnou křivkou učení. Skripty se spouštějí buď v PowerShellu, nebo v prostředí Bash. Jsou také jednoduché na ladění, zejména v porovnání se šablonami ARM.
Skripty Azure CLI fungují dobře, když potřebujete infrastrukturu vypnout a znovu nasadit. Aktualizace existujícího prostředí může být složitá. Mnoho příkazů rozhraní příkazového řádku není idempotentní. To znamená, že prostředek znovu vytvoří při každém spuštění, i když už prostředek existuje. Před vytvořením je vždy možné přidat kód, který kontroluje existenci jednotlivých prostředků. Váš skript se ale může stát nafouknutým a obtížně spravovat.
Tyto skripty lze také vložit do kanálů Azure DevOps jako Azure CLI tasks. Spuštění potrubí spustí skript.
Obrázek 10–17 ukazuje fragment kódu YAML, který obsahuje verzi Azure CLI a podrobnosti předplatného. Všimněte si, že příkazy Azure CLI jsou součástí vloženého skriptu.
- task: AzureCLI@2
displayName: Azure CLI
inputs:
azureSubscription: <Name of the Azure Resource Manager service connection>
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az account show
Obrázek 10–17 – Skript Azure CLI
V článku Co je infrastruktura jako kód, autor Sam Guckenheimer popisuje, jak "Týmy, které implementují IaC, mohou rychle a ve velkém dodávat stabilní prostředí. Týmy se vyhýbají ruční konfiguraci prostředí a vynucují konzistenci tím, že představují požadovaný stav jejich prostředí prostřednictvím kódu. Nasazení infrastruktury s IaC se dají opakovat a brání problémům za běhu způsobeným posunem konfigurace nebo chybějícími závislostmi. Týmy DevOps mohou spolupracovat s jednotnou sadou postupů a nástrojů, které poskytují aplikace a jejich podpůrnou infrastrukturu rychle, spolehlivě a ve velkém měřítku.