Samouczek: Używanie warunku w szablonach usługi ARM
Dowiedz się, jak wdrażać zasoby platformy Azure na podstawie warunków w szablonie usługi Azure Resource Manager (szablon usługi ARM).
W samouczku Ustawianie kolejności wdrażania zasobów tworzysz maszynę wirtualną, sieć wirtualną i kilka innych zasobów zależnych, w tym konto magazynu. Zamiast za każdym razem tworzyć nowe konto magazynu, zezwalasz użytkownikom na utworzenie nowego konta magazynu lub użycie istniejącego. Aby osiągnąć ten cel, definiujesz dodatkowy parametr. Jeśli wartość parametru jest nowa, zostanie utworzone nowe konto magazynu. W przeciwnym razie jest używane istniejące konto magazynu o podanej nazwie.
Ten samouczek obejmuje następujące zadania:
- Otwieranie szablonu szybkiego startu
- Modyfikowanie szablonu
- Wdrożenie szablonu
- Czyszczenie zasobów
W tym samouczku omówiono tylko podstawowy scenariusz używania warunków. Aby uzyskać więcej informacji, zobacz:
- Struktura pliku szablonu: warunek.
- Warunkowe wdrażanie zasobu w szablonie usługi ARM.
- Funkcja szablonu: Jeśli.
- Funkcje porównania szablonów usługi ARM
Aby zapoznać się z modułem Learn obejmującym warunki, zobacz Zarządzanie złożonymi wdrożeniami w chmurze przy użyciu zaawansowanych funkcji szablonu usługi ARM.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Aby ukończyć pracę z tym artykułem, potrzebne są następujące zasoby:
Program Visual Studio Code z rozszerzeniem Resource Manager Tools. Zobacz Szybki start: tworzenie szablonów usługi ARM przy użyciu Visual Studio Code.
Aby zwiększyć bezpieczeństwo, użyj wygenerowanego hasła dla konta administratora maszyny wirtualnej. Aby uruchomić następujące polecenie w programie PowerShell lub Bash, możesz użyć usługi Azure Cloud Shell:
openssl rand -base64 32
Aby dowiedzieć się więcej, uruchom polecenie
man openssl rand
, aby otworzyć stronę ręczną.Usługa Azure Key Vault została zaprojektowana w celu ochrony kluczy kryptograficznych i innych wpisów tajnych. Aby uzyskać więcej informacji, zobacz Samouczek: integrowanie usługi Azure Key Vault we wdrożeniu szablonu usługi ARM. Zalecamy również aktualizowanie hasła co trzy miesiące.
Otwieranie szablonu szybkiego startu
Szablony szybkiego startu platformy Azure to repozytorium szablonów usługi ARM. Zamiast tworzyć szablon od podstaw, możesz znaleźć szablon przykładowy i zmodyfikować go. Szablon używany w tym samouczku nazywa się Wdrożenie prostej maszyny wirtualnej z systemem Windows.
W Visual Studio Code wybierz pozycję Plik>Otwórz plik.
W polu File name (Nazwa pliku) wklej następujący adres URL:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Wybierz pozycję Open (Otwórz), aby otworzyć plik.
Szablon definiuje sześć zasobów:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Warto przejrzeć odwołanie do szablonu przed dostosowaniem szablonu.
Wybierz pozycję Zapisz plik>jako , aby zapisać kopię pliku na komputerze lokalnym o nazwie azuredeploy.json.
Modyfikowanie szablonu
Wprowadź dwie zmiany do istniejącego szablonu:
- Dodaj parametr nazwy konta magazynu. Użytkownicy mogą określić nazwę nowego lub istniejącego konta magazynu.
- Dodaj nowy parametr o nazwie
newOrExisting
. Wdrożenie używa tego parametru do określenia, czy utworzyć nowe konto magazynu, czy użyć istniejącego konta magazynu.
Poniżej przedstawiono procedurę wprowadzania zmian:
Otwórz plik azuredeploy.json w programie Visual Studio Code.
Zastąp te trzy
variables('storageAccountName')
elementemparameters('storageAccountName')
w całym szablonie.Usuń następującą definicję zmiennej:
Dodaj następujące dwa parametry na początku sekcji parametrów:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Naciśnij klawisze Alt+Shift+F, aby sformatować szablon w Visual Studio Code.
Zaktualizowana definicja parametrów wygląda następująco:
Dodaj następujący wiersz na początku definicji konta magazynu.
"condition": "[equals(parameters('newOrExisting'),'new')]",
Warunek sprawdza wartość parametru
newOrExisting
. Jeśli wartość parametru to new, przy wdrażaniu tworzone jest konto magazynu.Zaktualizowana definicja konta magazynu wygląda następująco:
storageUri
Zaktualizuj właściwość definicji zasobu maszyny wirtualnej przy użyciu następującej wartości:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Ta zmiana jest niezbędna, jeśli używasz istniejącego konta magazynu w innej grupie zasobów.
Zapisz zmiany.
Wdrożenie szablonu
Zaloguj się do Cloud Shell.
Wybierz preferowane środowisko, wybierając pozycję PowerShell lub Bash (dla interfejsu wiersza polecenia) w lewym górnym rogu. Po przełączeniu wymagane jest ponowne uruchomienie powłoki.
Wybierz pozycję Przekaż/pobierz pliki, a następnie wybierz pozycję Przekaż. Zobacz poprzedni zrzut ekranu. Wybierz plik, który został zapisany w poprzedniej sekcji. Po przekazaniu pliku możesz użyć
ls
polecenia icat
polecenia , aby sprawdzić, czy plik został przekazany pomyślnie.Uruchom następujący skrypt programu PowerShell, aby wdrożyć szablon.
Ważne
Nazwa konta magazynu musi być unikatowa w obrębie platformy Azure. Nazwa musi zawierać tylko małe litery lub cyfry. Nie może przekraczać 24 znaków. Nazwa konta magazynu to nazwa projektu z dołączonym magazynem . Upewnij się, że nazwa projektu i nazwa wygenerowanego konta magazynu spełniają wymagania dotyczące nazwy konta magazynu.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Uwaga
Wdrożenie kończy się niepowodzeniem, jeśli
newOrExisting
jest nowe, ale konto magazynu o podanej nazwie konta magazynu już istnieje.
Spróbuj wykonać kolejne wdrożenie z newOrExisting
ustawieniem ustawionym na istniejące i określ istniejące konto magazynu. Aby wcześniej utworzyć konto magazynu, zobacz Tworzenie konta magazynu.
Czyszczenie zasobów
Gdy zasoby platformy Azure nie będą już potrzebne, wyczyść wdrożone zasoby, usuwając grupę zasobów. Aby usunąć grupę zasobów, wybierz pozycję Wypróbuj, aby otworzyć Cloud Shell. Aby wkleić skrypt programu PowerShell, kliknij prawym przyciskiem myszy okienko powłoki, a następnie wybierz polecenie Wklej.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Następne kroki
W tym samouczku utworzono szablon, który pozwala użytkownikom wybrać między utworzeniem nowego konta magazynu a użyciem istniejącego konta magazynu. Aby dowiedzieć się, jak pobierać wpisy tajne z usługi Azure Key Vault i używać ich jako haseł przy wdrożeniach na podstawie szablonu, zobacz: