Wdrażanie zasobów przy użyciu programu Bicep i programu Azure PowerShell
W tym artykule wyjaśniono, jak używać programu Azure PowerShell z plikami Bicep do wdrażania zasobów na platformie Azure. Jeśli nie znasz pojęć związanych z wdrażaniem rozwiązań platformy Azure i zarządzaniem nimi, zobacz Omówienie Bicep.
Wymagania wstępne
Do wdrożenia potrzebny jest plik Bicep. Plik musi być lokalny.
Potrzebujesz programu Azure PowerShell i połączenia z platformą Azure:
- Zainstaluj polecenia cmdlet programu Azure PowerShell na komputerze lokalnym. Aby wdrożyć pliki Bicep, potrzebujesz programu Azure PowerShell w wersji 5.6.0 lub nowszej. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z programem Azure PowerShell.
- Zainstaluj interfejs wiersza polecenia Bicep. Program Azure PowerShell nie instaluje automatycznie interfejsu wiersza polecenia Bicep. Zamiast tego należy ręcznie zainstalować interfejs wiersza polecenia Bicep.
- Nawiązywanie połączenia z platformą Azure przy użyciu polecenia Connect-AzAccount. Jeśli masz wiele subskrypcji platformy Azure, może być również konieczne uruchomienie polecenia Set-AzContext. Aby uzyskać więcej informacji, zobacz Używanie wielu subskrypcji platformy Azure.
Jeśli nie masz zainstalowanego programu PowerShell, możesz użyć usługi Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Deploy Bicep files from Azure Cloud Shell (Wdrażanie plików Bicep z usługi Azure Cloud Shell).
Wymagane uprawnienia
Aby wdrożyć plik Bicep lub szablon usługi ARM, potrzebujesz dostępu do zapisu w zasobach wdrażanych i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments. Na przykład w celu wdrożenia maszyny wirtualnej potrzebne Microsoft.Compute/virtualMachines/write
są uprawnienia i Microsoft.Resources/deployments/*
uprawnienia. Operacja analizy co-jeżeli ma te same wymagania dotyczące uprawnień.
Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.
Zakres wdrożenia
Wdrożenie można kierować do grupy zasobów, subskrypcji, grupy zarządzania lub dzierżawy. W zależności od zakresu wdrożenia należy użyć różnych poleceń.
Aby wdrożyć w grupie zasobów, użyj polecenia New-AzResourceGroupDeployment:
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>
Aby wdrożyć w subskrypcji, użyj polecenia cmdlet New-AzSubscriptionDeployment, który jest aliasem
New-AzDeployment
polecenia cmdlet:New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>
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ć w grupie zarządzania, użyj polecenia New-AzManagementGroupDeployment.
New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>
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-bicep>
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.
Wdrażanie lokalnego pliku Bicep
Możesz wdrożyć plik Bicep z komputera lokalnego lub pliku przechowywanego zewnętrznie. W tej sekcji opisano wdrażanie lokalnego pliku Bicep.
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ć lokalny plik Bicep, użyj przełącznika -TemplateFile
w poleceniu wdrażania.
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-bicep>
Ukończenie wdrożenia może potrwać kilka minut.
Wdrażanie zdalnego pliku Bicep
Obecnie program Azure PowerShell nie obsługuje wdrażania zdalnych plików Bicep. Użyj interfejsu wiersza polecenia Bicep, aby skompilować plik Bicep do szablonu JSON, a następnie załadować plik JSON do lokalizacji zdalnej.
Parametry
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 parametru za New-AzResourceGroupDeployment
pomocą polecenia . Aby na przykład przekazać ciąg i tablicę do pliku Bicep, użyj:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-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-bicep> `
-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-bicep> `
-exampleArray $subnetArray
Pliki parametrów Bicep
Zamiast przekazywać parametry jako wartości śródliniowe w skryscie, można łatwiej użyć pliku parametrów , .bicepparam
pliku lub pliku parametrów JSON, który zawiera wartości parametrów. Plik parametrów Bicep musi być plikiem lokalnym.
Za pomocą programu Azure PowerShell w wersji 10.4.0 lub nowszej oraz interfejsu wiersza polecenia Bicep w wersji 0.22.X lub nowszej można wdrożyć plik Bicep, korzystając z pliku parametrów Bicep. W przypadku instrukcji using
w pliku parametrów Bicep nie ma potrzeby podawania przełącznika -TemplateFile
podczas określania pliku 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, zobacz Create Resource Manager parameters file (Tworzenie pliku parametrów usługi Resource Manager).
Pliki parametrów JSON
Plik parametrów JSON 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 Create Resource Manager parameters file (Tworzenie pliku parametrów usługi Resource Manager).
Aby przekazać plik parametrów lokalnych, użyj TemplateParameterFile
przełącznika z plikiem parametrów JSON:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterFile c:\BicepFiles\storage.parameters.json
Aby przekazać plik parametrów zewnętrznych, użyj parametru TemplateParameterUri
:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
Parametr TemplateParameterUri
nie obsługuje plików, obsługuje .bicepparam
tylko pliki parametrów JSON.
Możesz użyć wbudowanych parametrów i pliku parametrów lokalizacji w tej samej operacji wdrażania. Aby uzyskać więcej informacji, zobacz Pierwszeństwo parametrów.
Podgląd zmian
Przed wdrożeniem pliku Bicep możesz wyświetlić podgląd zmian, które plik Bicep wprowadzi w środowisku. Użyj operacji analizy co-jeżeli, aby sprawdzić, czy plik Bicep wprowadza oczekiwane zmiany. Co-jeżeli weryfikuje również plik Bicep pod kątem błędów.
Wdrażanie specyfikacji szablonu
Obecnie program Azure PowerShell nie obsługuje tworzenia specyfikacji szablonu, dostarczając pliki Bicep. Można jednak utworzyć plik Bicep za pomocą zasobu Microsoft.Resources/templateSpecs w celu wdrożenia specyfikacji szablonu. Przykład tworzenia specyfikacji szablonu pokazuje, jak utworzyć specyfikację szablonu w pliku Bicep. Możesz również skompilować plik Bicep w formacie JSON przy użyciu interfejsu wiersza polecenia Bicep, a następnie utworzyć specyfikację szablonu przy użyciu szablonu JSON.
Nazwa wdrożenia
Podczas wdrażania pliku Bicep 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 Bicep. Jeśli na przykład wdrożysz Bicep o nazwie main.bicep
i nie określisz nazwy wdrożenia, wdrożenie ma nazwę main
.
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 uruchomisz wdrożenie o nazwie newStorage
, które wdraża konto magazynu o nazwie , a jednocześnie uruchom inne wdrożenie o nazwie newStorage
, które wdraża konto magazynu o nazwie storage1
storage2
, wdrażasz tylko jedno konto magazynu. Wynikowe konto magazynu 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 newStorage
, które wdraża konto magazynu o nazwie storage1
storage2
, 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 newStorage2
, które wdraża konto magazynu o nazwie storage1
storage2
, 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ę.
Następne kroki
- Aby dowiedzieć się, jak definiować parametry w pliku, zobacz Omówienie struktury i składni plików Bicep.