Aracılığıyla paylaş


Öğretici: ARM şablonlarıyla sanal makine uzantılarını dağıtma

Azure VM'lerinde dağıtım sonrası yapılandırma ve otomasyon görevleri gerçekleştirme amacıyla Azure sanal makine uzantılarını kullanmayı öğrenin. Azure VM'leri ile kullanabileceğiniz birçok farklı VM uzantısı vardır. Bu öğreticide, Bir Azure Resource Manager şablonundan (ARM şablonu) Bir Windows VM'de PowerShell betiği çalıştırmak için Özel Betik uzantısı dağıtacaksınız. Bu betik, VM'ye Web Sunucusu yükler.

Bu öğretici aşağıdaki görevleri kapsar:

  • PowerShell betiğini hazırlama
  • Hızlı başlangıç şablonunu açma
  • Şablonu düzenleme
  • Şablonu dağıtma

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

Bu makaleyi tamamlamak için gerekenler:

  • Visual Studio Code.

  • Güvenliği artırmak istiyorsanız sanal makine yönetici hesabı için oluşturulmuş bir parola kullanın. Azure Cloud Shell'i kullanarak PowerShell veya Bash'te aşağıdaki komutu çalıştırabilirsiniz:

    openssl rand -base64 32
    

    Daha fazla bilgi edinmek için komutunu çalıştırarak man openssl rand el ile açılan sayfayı açın.

    Azure Key Vault şifreleme anahtarları ve diğer gizli dizileri korumak üzere tasarlanmıştır. Daha fazla bilgi için bkz . Öğretici: Azure Key Vault'ı ARM şablonu dağıtımınızla tümleştirme. Ayrıca parolanızı her üç ayda bir güncelleştirmenizi öneririz.

PowerShell betiğini hazırlama

Satır içi PowerShell betiği veya betik dosyası kullanabilirsiniz. Bu öğreticide betik dosyasının nasıl kullanılacağı gösterilmektedir. Aşağıdaki içeriğe sahip bir PowerShell betiği GitHub'dan paylaşılır:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Dosyayı kendi konumunuza yayımlamayı seçerseniz, öğreticinin fileUri devamında şablondaki öğesini güncelleştirin.

Hızlı başlangıç şablonunu açma

Azure Hızlı Başlangıç Şablonları, ARM şablonları için bir depodur. Sıfırdan bir şablon oluşturmak yerine örnek bir şablon bulabilir ve bunu özelleştirebilirsiniz. Bu öğreticide kullanılan şablonun adı: Deploy a simple Windows VM (Basit bir Windows sanal makinesi dağıtma).

  1. Visual Studio Code'da Dosya Aç Dosya'yı> seçin.

  2. Dosya adı kutusuna aşağıdaki URL'yi yapıştırın:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Dosyayı açmak için Aç'ı seçin. Şablon beş kaynak tanımlar:

  4. Dosya

Şablonu düzenleme

Aşağıdaki içeriği kullanarak var olan şablona bir sanal makine uzantısı kaynağı ekleyin:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2025-04-01",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
    }
  }
}

Bu kaynak tanımı hakkında daha fazla bilgi için uzantı başvurusuna bakın. Önemli öğeler şunlardır:

  • name: Uzantı kaynağı sanal makine nesnesinin alt kaynağı olduğundan, adın sanal makine adı ön ekinin olması gerekir. Bkz. Alt kaynaklar için ad ve tür ayarlama.
  • dependsOn: Sanal makineyi oluşturduktan sonra uzantı kaynağını oluşturun.
  • fileUris: Betik dosyalarının depolandığı konumlar. Sağlanan konumu kullanmamayı seçerseniz, değerleri güncelleştirmeniz gerekir.
  • commandToExecute: Bu komut betiği çağırır.

Satır içi betik kullanmak için öğesini kaldırın fileUrisve şu şekilde güncelleştirin commandToExecute :

powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)

Bu satır içi betik, iisstart.html içeriğini de güncelleştirir.

Web sunucusuna erişebilmek için HTTP bağlantı noktasını da açmanız gerekir.

  1. Şablonda bulun securityRules .

  2. Default-allow-3389'un yanına aşağıdaki kuralı ekleyin.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

Şablonu dağıtma

Dağıtım yordamı için Öğretici: Bağımlı kaynaklarla ARM şablonları oluşturma'nın Şablonu dağıtma bölümüne bakın. Sanal makine yönetici hesabı için oluşturulan bir parola kullanmanızı öneririz. Bu makalenin Önkoşullar bölümüne bakın.

Cloud Shell'den aşağıdaki komutu çalıştırarak VM'nin genel IP adresini alın:

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

IP adresini bir Web tarayıcısına yapıştırın. Varsayılan Internet Information Services (IIS) karşılama sayfası açılır:

Internet Information Services karşılama sayfasının ekran görüntüsü.

Kaynakları temizleme

Dağıttığınız Azure kaynaklarına artık ihtiyacınız kalmadığında, kaynak grubunu silerek bunları temizleyin.

  1. Azure portalının sol bölmesinde Kaynak grubu'na tıklayın.
  2. Ada göre filtrele kutusuna kaynak grubu adını girin.
  3. Kaynak grubu adını seçin. Kaynak grubunda altı kaynak görüntülenir.
  4. Üstteki menüde Kaynak grubunu sil'i seçin.

Sonraki adımlar

Bu öğreticide bir sanal makine ve bir sanal makine uzantısı dağıttınız. Uzantı, sanal makineye IIS web sunucusunu yükledi. BACPAC dosyasını içeri aktarmak için Azure SQL Veritabanı uzantısını kullanmayı öğrenmek için bkz: