Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak używać Azure PowerShell z szablonami Azure Resource Manager (ARM) do wdrażania zasobów w Azure. Jeśli nie znasz pojęć związanych z wdrażaniem rozwiązań Azure i zarządzaniem nimi, zobacz omówienie wdrażania template.
Wskazówka
Zalecamy Bicep, ponieważ oferuje takie same możliwości jak szablony ARM, a składnia jest łatwiejsza w użyciu. Aby dowiedzieć się więcej, zobacz Wdrażanie zasobów przy użyciu Bicep i Azure PowerShell.
Wymagania wstępne
Do wdrożenia potrzebny jest szablon. Jeśli jeszcze go nie masz, pobierz i zapisz szablon example z repozytorium szablonów szybkiego startu Azure. Nazwa pliku lokalnego używana w tym artykule to C:\MyTemplates\azuredeploy.json.
Musisz zainstalować Azure PowerShell i połączyć się z Azure:
- Zainstaluj Azure PowerShell cmdlet na swoim komputerze lokalnym. Aby uzyskać więcej informacji, zobacz Postartowanie Azure PowerShell.
- Połącz się z Azure przy użyciu Connect-AZAccount. Jeśli masz wiele subskrypcji Azure, może być również konieczne uruchomienie Set-AzContext. Aby uzyskać więcej informacji, zobacz Użyj wiele subskrypcji Azure.
Jeśli nie masz zainstalowanego programu PowerShell, możesz użyć Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Wdrażanie szablonów ARM z Azure Cloud Shell.
Wymagane uprawnienia
Aby wdrożyć plik Bicep lub szablon Azure Resource Manager (ARM), musisz mieć dostęp do zapisu do wdrażanych zasobów i dostęp do wszystkich operacji na typie zasobu Microsoft.Resources/deployments. Na przykład do wdrożenia maszyny wirtualnej potrzebne są uprawnienia Microsoft.Compute/virtualMachines/write i Microsoft.Resources/deployments/*. Operacja „what-if” ma te same wymagania dotyczące uprawnień.
Azure CLI wersji 2.76.0 lub nowszej oraz Azure PowerShell w wersji 13.4.0 lub nowszej wprowadzają przełącznik ValidationLevel, aby określić, jak dokładnie usługa ARM weryfikuje szablon Bicep podczas tego procesu. Aby uzyskać więcej informacji, zobacz Polecenia warunkowe
Aby uzyskać listę ról i uprawnień, zobacz wbudowane role Azure.
Zakres wdrożenia
Wdrożenie można kierować do grupy zasobów, grupy zarządzania, subskrypcji lub dzierżawy. W zależności od zakresu wdrożenia należy użyć różnych poleceń.
Aby wdrożyć do grupy zasobów, użyj New-AzResourceGroupDeployment:
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-template>Aby wdrożyć w subskrypcję, użyj New-AzSubscriptionDeployment, który jest aliasem polecenia
New-AzDeploymentcmdlet.New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-template>Aby uzyskać więcej informacji na temat wdrożeń na poziomie subskrypcji, zobacz Tworzenie grup zasobów i zasobów na poziomie subskrypcji.
Aby wdrożyć do grupy zarządzania, użyj polecenia New-AzManagementGroupDeployment.
New-AzManagementGroupDeployment -Location <location> -TemplateFile <path-to-template>Aby uzyskać więcej informacji na temat wdrożeń na poziomie grupy zarządzania, zobacz Tworzenie zasobów na poziomie grupy zarządzania.
Aby wdrożyć w dzierżawie, użyj polecenia New-AzTenantDeployment.
New-AzTenantDeployment -Location <location> -TemplateFile <path-to-template>Aby uzyskać więcej informacji na temat wdrożeń na poziomie dzierżawy, zobacz Tworzenie zasobów na poziomie dzierżawy.
Dla każdego zakresu użytkownik wdrażający szablon musi mieć wymagane uprawnienia do tworzenia zasobów.
Nazwa wdrożenia
Podczas wdrażania szablonu usługi ARM można nadać wdrożeniu nazwę. Ta nazwa może pomóc w pobraniu wdrożenia z historii wdrożenia. Jeśli nie podasz nazwy wdrożenia, zostanie użyta nazwa pliku szablonu. Jeśli na przykład wdrożysz szablon o nazwie azuredeploy.json i nie określisz nazwy wdrożenia, wdrożenie ma nazwę azuredeploy.
Za każdym razem, gdy uruchamiasz wdrożenie, wpis jest dodawany do historii wdrożenia grupy zasobów o nazwie wdrożenia. Jeśli uruchomisz inne wdrożenie i nadasz mu taką samą nazwę, wcześniejszy wpis zostanie zastąpiony bieżącym wdrożeniem. Jeśli chcesz zachować unikatowe wpisy w historii wdrażania, nadaj każdemu wdrożeniu unikatową nazwę.
Aby utworzyć unikatową nazwę, można przypisać liczbę losową.
$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix
Możesz też dodać wartość daty.
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"
Jeśli uruchamiasz współbieżne wdrożenia do tej samej grupy zasobów o tej samej nazwie wdrożenia, zostanie ukończone tylko ostatnie wdrożenie. Wszystkie wdrożenia o tej samej nazwie, które nie zostały zakończone, są zastępowane ostatnim wdrożeniem. Jeśli na przykład uruchamiasz wdrożenie o nazwie newStorage, które wdraża konto magazynu o nazwie storage1, a jednocześnie uruchamiasz inne wdrożenie o nazwie newStorage, które wdraża konto magazynu o nazwie storage2, faktycznie wdrażasz tylko jedno konto magazynu. Wynikowe konto magazynowe nosi nazwę storage2.
Jeśli jednak uruchomisz wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie , i natychmiast po zakończeniu uruchamiania innego wdrożenia o nazwie storage1 , które wdraża konto magazynu o nazwie newStoragestorage2, masz dwa konta magazynu. Jeden ma nazwę storage1, a drugi ma nazwę storage2. Jednak w historii wdrażania masz tylko jeden wpis.
Po określeniu unikatowej nazwy dla każdego wdrożenia można uruchamiać je współbieżnie bez konfliktu. Jeśli uruchomisz wdrożenie o nazwie newStorage1 , które wdraża konto magazynu o nazwie , a jednocześnie uruchom kolejne wdrożenie o nazwie storage1 , które wdraża konto magazynu o nazwie newStorage2storage2, wówczas masz dwa konta magazynu i dwa wpisy w historii wdrożenia.
Aby uniknąć konfliktów z wdrożeniami współbieżnymi i zapewnić unikatowe wpisy w historii wdrożenia, nadaj każdemu wdrożeniu unikatową nazwę.
Wdrażanie szablonu lokalnego
Możesz wdrożyć szablon z komputera lokalnego lub taki, który jest przechowywany zewnętrznie. W tej sekcji opisano wdrażanie szablonu lokalnego.
Jeśli wdrażasz w grupie zasobów, która nie istnieje, utwórz grupę zasobów. Nazwa grupy zasobów może zawierać tylko znaki alfanumeryczne, kropki, podkreślenia, łączniki i nawiasy. Może to być maksymalnie 90 znaków. Nazwa nie może kończyć się kropką.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
Aby wdrożyć szablon lokalny, użyj parametru -TemplateFile w poleceniu wdrażania. W poniższym przykładzie pokazano również, jak ustawić wartość parametru pochodzącą z szablonu.
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-template>
Ukończenie wdrożenia może potrwać kilka minut.
Wdrażanie szablonu zdalnego
Zamiast przechowywać szablony ARM na komputerze lokalnym, możesz chcieć przechowywać je w lokalizacji zewnętrznej. Szablony można przechowywać w repozytorium kontroli źródła (na przykład GitHub). Możesz też przechowywać je na koncie magazynu Azure na potrzeby dostępu współdzielonego w organizacji.
Uwaga
Aby wdrożyć szablon lub odwołać się do zlinkowanego szablonu przechowywanego w prywatnym repozytorium GitHub, zobacz udokumentowane rozwiązanie niestandardowe w Tworzenie bezpiecznej oferty dla Azure Portal. Możesz utworzyć funkcję Azure która ściąga token GitHub z Azure Key Vault.
Jeśli wdrażasz w grupie zasobów, która nie istnieje, utwórz grupę zasobów. Nazwa grupy zasobów może zawierać tylko znaki alfanumeryczne, kropki, podkreślenia, łączniki i nawiasy. Może to być maksymalnie 90 znaków. Nazwa nie może kończyć się kropką.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
Aby wdrożyć szablon zewnętrzny, użyj parametru -TemplateUri.
New-AzResourceGroupDeployment `
-Name remoteTemplateDeployment `
-ResourceGroupName ExampleGroup `
-TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Powyższy przykład wymaga publicznie dostępnego identyfikatora URI szablonu, który działa w większości scenariuszy, ponieważ szablon nie powinien zawierać poufnych danych. Jeśli musisz określić poufne dane (takie jak hasło administratora), przekaż wartość jako bezpieczny parametr. Jeśli jednak chcesz zarządzać dostępem do szablonu, rozważ użycie specyfikacji szablonu.
Do wdrażania zdalnych szablonów połączonych ze ścieżką względną, przechowywanych na koncie magazynu, użyj QueryString , aby podać token SAS.
New-AzResourceGroupDeployment `
-Name linkedTemplateWithRelativePath `
-ResourceGroupName "myResourceGroup" `
-TemplateUri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" `
-QueryString "$sasToken"
Aby uzyskać więcej informacji, zobacz Używanie ścieżki względnej dla połączonych szablonów.
Wdrażanie specyfikacji szablonu
Zamiast wdrażać szablon lokalny lub zdalny, można utworzyć specyfikację template. Specyfikacja szablonu to zasób w subskrypcji Azure, który zawiera szablon usługi ARM. Ułatwia bezpieczne udostępnianie szablonu użytkownikom w organizacji. W celu udzielenia dostępu do specyfikacji szablonu użyj kontroli dostępu opartego na rolach Azure (Azure RBAC). Ta funkcja jest obecnie dostępna w wersji zapoznawczej.
W poniższych przykładach pokazano, jak utworzyć i wdrożyć specyfikację szablonu.
Najpierw utwórz specyfikację szablonu, dostarczając szablon ARM.
New-AzTemplateSpec `
-Name storageSpec `
-Version 1.0 `
-ResourceGroupName templateSpecsRg `
-Location westus2 `
-TemplateJsonFile ./mainTemplate.json
Następnie pobierz identyfikator specyfikacji szablonu i wdróż go.
$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0).Versions.Id
New-AzResourceGroupDeployment `
-ResourceGroupName demoRG `
-TemplateSpecId $id
Aby uzyskać więcej informacji, zobacz specyfikacje szablonów Azure Resource Manager.
Podgląd zmian
Przed wdrożeniem szablonu możesz wyświetlić podgląd zmian, które zostaną wprowadzone w środowisku. Użyj operacji analizy co-jeżeli, aby zweryfikować, czy szablon wprowadza zmiany zgodne z oczekiwaniami. Narzędzie What-if również sprawdza szablon pod kątem błędów.
Przekazywanie wartości parametrów
Aby przekazać wartości parametrów, możesz użyć parametrów wbudowanych lub pliku parametrów. Plik parametrów może być plikiem parametrów Bicep lub plikiem parametrów JSON.
Parametry wbudowane
Aby przekazać parametry wbudowane, podaj nazwy parametrów za pomocą polecenia New-AzResourceGroupDeployment. Aby na przykład przekazać ciąg i tablicę do szablonu, użyj:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-template> `
-exampleString "inline string" `
-exampleArray $arrayParam
Za pomocą parametru TemplateParameterObject można przekazać tabelę skrótów zawierającą parametry szablonu.
$params = @{
exampleString = "inline string"
exampleArray = "value1", "value2"
}
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-TemplateParameterObject $params
Możesz również pobrać zawartość pliku i podać jej zawartość jako wbudowany parametr.
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-template> `
-exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
-exampleArray $arrayParam
Uzyskanie wartości parametru z pliku jest przydatne, gdy trzeba podać wartości konfiguracji. Można na przykład podać wartości cloud-init dla maszyny wirtualnej z systemem Linux.
Jeśli musisz przekazać tablicę obiektów, utwórz tabele skrótów w programie PowerShell i dodaj je do tablicy. Przekaż tablicę jako parametr podczas wdrażania.
$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-template> `
-exampleArray $subnetArray
Pliki parametrów JSON
Zamiast przekazywania parametrów jako wartości śródwierszowych w skrypcie prostszym może się okazać użycie pliku JSON zawierającego wartości parametrów. Plik parametrów może być plikiem lokalnym lub plikiem zewnętrznym z dostępnym identyfikatorem URI.
Aby uzyskać więcej informacji na temat pliku parametrów, zobacz Utwórz plik parametrów Resource Manager.
Aby przekazać plik parametrów lokalnych, użyj parametru TemplateParameterFile :
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile <path-to-template> `
-TemplateParameterFile c:\MyTemplates\storage.parameters.json
Aby przekazać plik parametrów zewnętrznych, użyj parametru TemplateParameterUri :
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
Aby uzyskać więcej informacji na temat pliku parametrów, zobacz Utwórz plik parametrów Resource Manager.
pliki parametrów Bicep
W przypadku Azure PowerShell w wersji 10.4.0 lub nowszej oraz interfejsu wiersza polecenia Bicep w wersji 0.22.6 lub nowszej można wdrożyć plik szablonu usługi ARM, korzystając z pliku parametrów Bicep. W przypadku instrukcji using w pliku parametrów Bicep nie ma potrzeby użycia przełącznika -TemplateFile, kiedy określa się plik parametrów Bicep dla przełącznika -TemplateParameterFile.
W poniższym przykładzie przedstawiono plik parametrów o nazwie storage.bicepparam. Plik znajduje się w tym samym katalogu, w którym jest uruchamiane polecenie.
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateParameterFile storage.bicepparam
Aby uzyskać więcej informacji na temat pliku parametrów Bicep, zobacz plik parametrów Bicep.
Następne kroki
- Aby przywrócić pomyślne wdrożenie po wystąpieniu błędu, zobacz Wycofywanie błędu w celu pomyślnego wdrożenia.
- Aby określić sposób obsługi zasobów istniejących w grupie zasobów, ale nie są zdefiniowane w szablonie, zobacz Azure Resource Manager tryby wdrażania.
- Aby zrozumieć, jak definiować parametry w szablonie, zobacz Zrozumienie struktury i składni szablonów ARM.
- Aby uzyskać informacje o wdrażaniu szablonu wymagającego tokenu SAS, zobacz Wdrażanie prywatnego szablonu usługi ARM przy użyciu tokenu SAS.