DevTest Labs VM'lerine yapıt ekleme
Bu makalede, Azure DevTest Labs sanal makinelerine (VM) yapıtların nasıl ekleneceği açıklanmaktadır. Yapıtlar, Windows PowerShell betiklerini çalıştırma, Bash komutlarını çalıştırma veya yazılım yükleme gibi vm sağlamak için yapılması gereken eylemleri belirtir. Yapıtları kendi ihtiyaçlarınıza göre özelleştirmek için parametreleri kullanabilirsiniz.
DevTest Labs yapıtları genel DevTest Labs Git deposundan veya özel Git depolarından gelebilir. Kendi özel yapıtlarınızı oluşturmak ve bunları bir depoda depolamak için bkz . Özel yapıtlar oluşturma. Laboratuvar kullanıcılarının özel yapıtlara erişebilmesi için yapıt deponuzu bir laboratuvara eklemek için bkz . Laboratuvarınıza yapıt deposu ekleme.
DevTest Labs laboratuvar sahipleri, oluşturma sırasında tüm laboratuvar VM'lerine yüklenecek zorunlu yapıtları belirtebilir. Daha fazla bilgi için bkz . DevTest Labs VM'leri için zorunlu yapıtları belirtme.
VM oluşturma zamanında zorunlu yapıtları değiştiremez veya kaldıramazsınız, ancak kullanılabilir tek tek yapıtları ekleyebilirsiniz. Bu makalede, Azure portalını veya Azure PowerShell'i kullanarak VM'lere kullanılabilir yapıtların nasıl ekleneceği açıklanır.
Azure portalından VM'lere yapıt ekleme
VM oluşturma sırasında yapıtlar ekleyebilir veya mevcut laboratuvar VM'lerine yapıtlar ekleyebilirsiniz.
VM oluşturma sırasında yapıt eklemek için:
Laboratuvarın giriş sayfasında Ekle'yi seçin.
Temel seçin sayfasında, istediğiniz VM türünü seçin.
Laboratuvar kaynağı oluştur ekranında Yapıt Ekle veya Kaldır'ı seçin.
Yapıt ekle sayfasında, VM'ye eklemek istediğiniz her yapıtın yanındaki oku seçin.
Her Yapıt ekle bölmesinde gerekli ve isteğe bağlı parametre değerlerini girin ve tamam'ı seçin. Yapıt Seçili yapıtlar ve yapılandırılmış yapıt güncelleştirmelerinin sayısı altında görünür.
Yapıtları ekledikten sonra değiştirebilirsiniz.
- Varsayılan olarak, yapıtlar bunları eklediğiniz sırayla yüklenir. Sırayı yeniden düzenlemek için Seçili yapıtlar listesindeki yapıtın yanındaki üç noktayı ... seçin ve Yukarı taşı, Aşağı taşı, Üste taşı veya En alta taşı'yı seçin.
- Yapıtın parametrelerini düzenlemek için Düzenle'yi seçerek Yapıt ekle bölmesini yeniden açın.
- Seçili yapıtlar listesinden yapıtı silmek için Sil'i seçin.
Yapıtları eklemeyi ve düzenlemeyi bitirdiğinizde Tamam'ı seçin.
Laboratuvar kaynağı oluştur ekranı eklenen yapıt sayısını gösterir. VM'yi oluşturmadan önce yapıtları eklemek, düzenlemek, yeniden düzenlemek veya silmek için Yapıt Ekle veya Kaldır'ı yeniden seçin.
VM'yi oluşturduktan sonra, yüklü yapıtlar VM'nin Yapıtlar sayfasında görünür. Her yapıtın yüklemesinin ayrıntılarını görmek için yapıt adını seçin.
Yapıtları var olan bir VM'ye yüklemek için:
Laboratuvarın giriş sayfasında Sanal makinelerim listesinden VM'yi seçin.
VM sayfasında üst menü çubuğunda veya sol gezintide Yapıtlar'ı seçin.
Yapıtlar sayfasında Yapıtları uygula'yı seçin.
Yapıt ekle sayfasında yapıtları yeni vm ile aynı şekilde seçin ve yapılandırın.
Yapıt eklemeyi bitirdiğinizde Yükle'yi seçin. Yapıtlar vm'ye hemen yüklenir.
Azure PowerShell kullanarak VM'lere yapıt ekleme
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Aşağıdaki PowerShell betiği Invoke-AzResourceAction cmdlet'ini kullanarak vm'ye bir yapıt uygular.
#Requires -Module Az.Resources
param
(
[Parameter(Mandatory=$true, HelpMessage="The ID of the subscription that contains the lab")]
[string] $SubscriptionId,
[Parameter(Mandatory=$true, HelpMessage="The name of the lab that has the VM")]
[string] $DevTestLabName,
[Parameter(Mandatory=$true, HelpMessage="The name of the VM")]
[string] $VirtualMachineName,
[Parameter(Mandatory=$true, HelpMessage="The repository where the artifact is stored")]
[string] $RepositoryName,
[Parameter(Mandatory=$true, HelpMessage="The artifact to apply to the VM")]
[string] $ArtifactName,
[Parameter(ValueFromRemainingArguments=$true)]
$Params
)
# Set the appropriate subscription
Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
# Get the lab resource group name
$resourceGroupName = (Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' | Where-Object { $_.Name -eq $DevTestLabName}).ResourceGroupName
if ($resourceGroupName -eq $null) { throw "Unable to find lab $DevTestLabName in subscription $SubscriptionId." }
# Get the internal repository name
$repository = Get-AzResource -ResourceGroupName $resourceGroupName `
-ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
-ResourceName $DevTestLabName `
-ApiVersion 2016-05-15 `
| Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
| Select-Object -First 1
if ($repository -eq $null) { "Unable to find repository $RepositoryName in lab $DevTestLabName." }
# Get the internal artifact name
$template = Get-AzResource -ResourceGroupName $resourceGroupName `
-ResourceType "Microsoft.DevTestLab/labs/artifactSources/artifacts" `
-ResourceName "$DevTestLabName/$($repository.Name)" `
-ApiVersion 2016-05-15 `
| Where-Object { $ArtifactName -in ($_.Name, $_.Properties.title) } `
| Select-Object -First 1
if ($template -eq $null) { throw "Unable to find template $ArtifactName in lab $DevTestLabName." }
# Find the VM in Azure
$FullVMId = "/subscriptions/$SubscriptionId/resourceGroups/$resourceGroupName`
/providers/Microsoft.DevTestLab/labs/$DevTestLabName/virtualmachines/$virtualMachineName"
$virtualMachine = Get-AzResource -ResourceId $FullVMId
# Generate the artifact id
$FullArtifactId = "/subscriptions/$SubscriptionId/resourceGroups/$resourceGroupName`
/providers/Microsoft.DevTestLab/labs/$DevTestLabName/artifactSources/$($repository.Name)`
/artifacts/$($template.Name)"
# Handle the input parameters to pass through
$artifactParameters = @()
# Fill the artifact parameter with the additional -param_ data and strip off the -param_
$Params | ForEach-Object {
if ($_ -match '^-param_(.*)') {
$name = $_ -replace '^-param_'
} elseif ( $name ) {
$artifactParameters += @{ "name" = "$name"; "value" = "$_" }
$name = $null #reset name variable
}
}
# Create a structure to pass the artifact data to the action
$prop = @{
artifacts = @(
@{
artifactId = $FullArtifactId
parameters = $artifactParameters
}
)
}
# Apply the artifact
if ($virtualMachine -ne $null) {
# Apply the artifact by name to the virtual machine
$status = Invoke-AzResourceAction -Parameters $prop -ResourceId $virtualMachine.ResourceId -Action "applyArtifacts" -ApiVersion 2016-05-15 -Force
if ($status.Status -eq 'Succeeded') {
Write-Output "##[section] Successfully applied artifact: $ArtifactName to $VirtualMachineName"
} else {
Write-Error "##[error]Failed to apply artifact: $ArtifactName to $VirtualMachineName"
}
} else {
Write-Error "##[error]$VirtualMachine was not found in the DevTest Lab, unable to apply the artifact"
}