Udostępnij za pośrednictwem


Wdrażanie plików Bicep za pomocą 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 wdrażania rozwiązań platformy Azure i zarządzania nimi, zobacz Co to jest Bicep?.

Wymagania wstępne

Do wdrożenia potrzebny jest plik Bicep, a plik musi być lokalny. Potrzebujesz również programu Azure PowerShell i połączenia z platformą Azure:

Jeśli nie masz zainstalowanego programu PowerShell, możesz użyć usługi Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Wdrażanie plików Bicep za pomocą 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ń, a użytkownik wdrażający plik Bicep musi mieć wymagane uprawnienia do tworzenia zasobów dla każdego zakresu.

  • 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 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 Wdrażanie zasobów w subskrypcji przy użyciu rozwiązania Bicep.

  • 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 Wdrażanie zasobów w grupie zarządzania przy użyciu narzędzia Bicep.

  • 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 Wdrażanie zasobów w dzierżawie przy użyciu rozwiązania Bicep.

Wdrażanie lokalnego pliku Bicep

W tej sekcji opisano sposób wdrażania lokalnego pliku Bicep. Możesz wdrożyć plik Bicep z komputera lokalnego lub zewnętrznego.

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 i 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

Program Azure PowerShell nie obsługuje obecnie wdrażania zdalnych plików Bicep. Interfejs wiersza polecenia Bicep umożliwia skompilowanie pliku Bicep do szablonu JSON, a następnie załadowanie pliku JSON do lokalizacji zdalnej. Aby uzyskać więcej informacji, zobacz Wdrażanie szablonu zdalnego.

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ć 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 Azure 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 wbudowane w skrypcie, można łatwiej użyć pliku parametrów Bicep lub pliku parametrów JSON zawierającego wartości parametrów. Plik parametrów Bicep musi być plikiem lokalnym, a plik szablonu JSON może znajdować się gdzieś w trybie online. Aby uzyskać więcej informacji na temat plików parametrów, zobacz Create parameters files for Bicep deployment (Tworzenie plików parametrów dla wdrożenia Bicep).

Plik parametrów Bicep umożliwia wdrożenie pliku Bicep za pomocą programu Azure PowerShell w wersji 10.4.0 lub nowszej oraz interfejsu wiersza polecenia Bicep w wersji 0.22.X lub nowszej. W pliku using parametrów Bicep instrukcji nie ma potrzeby podawania -TemplateFile przełącznika 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

Pliki parametrów JSON

Plik parametrów JSON może być lokalny lub zewnętrzny z dostępnym identyfikatorem URI.

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

TemplateParameterUri Ponieważ parametr obsługuje tylko pliki parametrów JSON, nie obsługuje .bicepparam plików.

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

Program Azure PowerShell nie udostępnia obecnie plików Bicep, aby ułatwić tworzenie specyfikacji szablonu. 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 do formatu JSON przy użyciu interfejsu wiersza polecenia Bicep, a następnie szablonu JSON w celu utworzenia specyfikacji szablonu.

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, jej nazwa stanie się nazwą pliku Bicep. Jeśli na przykład wdrożysz plik 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 , które wdraża konto magazynu o nazwie newStorage i uruchamia inne wdrożenie o nazwie newStorage , które wdraża konto magazynu o nazwie storage1 storage2 w tym samym czasie, wdrożysz tylko jedno konto magazynu. Wynikowe konto magazynu nosi nazwę storage2.

Jeśli jednak uruchomisz wdrożenie o nazwie , które wdraża konto magazynu o newStorage nazwie i natychmiast uruchomi inne wdrożenie o nazwie storage1 , które wdraża konto magazynu o nazwie newStorage po storage2 zakończeniu pierwszego wdrożenia, 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 wdroży konto magazynu o nazwie i uruchomisz inne wdrożenie o nazwie newStorage2 , które wdraża konto magazynu o storage2 nazwie storage1 w tym samym czasie, 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.