Hızlı Başlangıç: Azure Stack Hub'da PowerShell kullanarak Linux sunucusu VM'sini oluşturma
Azure Stack Hub PowerShell kullanarak bir Ubuntu Server 20.04 LTS sanal makinesi (VM) oluşturabilirsiniz. Bu makalede, bir sanal makine oluşturup kullanacaksınız. Bu makalede ayrıca şunların nasıl yapıldığını da görebilirsiniz:
- Uzak istemciyle VM'ye bağlanın.
- Bir NGINX web sunucusu yükleyin ve varsayılan giriş sayfasını görüntüleyin.
- Kullanılmayan kaynakları temizleyin.
Önkoşullar
Azure Stack Hub Market'te bir Linux görüntüsü. Azure Stack Hub Market'te varsayılan olarak bir Linux görüntüsü yoktur. Azure Stack Hub operatörünün ihtiyacınız olan Ubuntu Server 20.04 LTS görüntüsünü sağlamasını sağlayın. Operatör, Market öğelerini Azure'dan Azure Stack Hub'a indirme başlığındaki yönergeleri kullanabilir.
Azure Stack Hub, kaynaklarını oluşturmak ve yönetmek için Azure CLI'nin belirli bir sürümünü gerektirir.
- Azure Stack Hub için PowerShell'i yapılandırmadıysanız bkz. Azure Stack Hub için PowerShell'i yükleme.
- Azure Stack Hub PowerShell ayarlandıktan sonra Azure Stack Hub ortamınıza bağlanacaksınız. Yönergeler için bkz. PowerShell ile Azure Stack Hub'a kullanıcı olarak bağlanma.
Windows kullanıcı profilinizin .ssh dizinine kaydedilmiş id_rsa.pub adlı bir genel Secure Shell (SSH) anahtarı. SSH anahtarları oluşturma hakkında ayrıntılı bilgi için bkz. Azure Stack Hub ile SSH anahtar çifti kullanma.
Kaynak grubu oluşturma
Kaynak grubu, Azure Stack Hub kaynaklarını dağıtabileceğiniz ve yönetebileceğiniz bir mantıksal kapsayıcıdır. Kaynak grubu oluşturmak için aşağıdaki kod bloğunu çalıştırın:
Not
Aşağıdaki kod örneklerinde tüm değişkenler için değerler atadık. Ancak, kendi değerlerinizi atayabilirsiniz.
# Create variables to store the location and resource group names.
$location = "local"
$ResourceGroupName = "myResourceGroup"
New-AzResourceGroup `
-Name $ResourceGroupName `
-Location $location
Depolama kaynaklarını oluşturma
Önyükleme tanılama çıkışını depolamak için kullanılacak bir depolama hesabı oluşturun.
# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"
# Create a new storage account
$StorageAccount = New-AzStorageAccount `
-Location $location `
-ResourceGroupName $ResourceGroupName `
-Type $SkuName `
-Name $StorageAccountName
Set-AzCurrentStorageAccount `
-StorageAccountName $storageAccountName `
-ResourceGroupName $resourceGroupName
Ağ kaynakları oluşturma
Sanal ağ, alt ağ ve genel IP adresi oluşturun. Bu kaynaklar VM'ye ağ bağlantısı sağlamak için kullanılır.
# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24
# Create a virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-Name MyVnet `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-AllocationMethod Static `
-IdleTimeoutInMinutes 4 `
-Name "mypublicdns$(Get-Random)"
Ağ güvenliği grubu ve ağ güvenliği grup kuralı oluşturma
Ağ güvenlik grubu, gelen ve giden kurallarını kullanarak VM'nin güvenliğini sağlar. Gelen Uzak Masaüstü bağlantılarına izin vermek için 3389 numaralı bağlantı noktası için bir gelen kuralı ve gelen web trafiğine izin vermek için 80 numaralı bağlantı noktası için bir gelen kuralı oluşturun.
# Create variables to store the network security group and rules names.
$nsgName = "myNetworkSecurityGroup"
$nsgRuleSSHName = "myNetworkSecurityGroupRuleSSH"
$nsgRuleWebName = "myNetworkSecurityGroupRuleWeb"
# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name $nsgRuleSSHName -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow
# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzNetworkSecurityRuleConfig -Name $nsgRuleWebName -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow
# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $location `
-Name $nsgName -SecurityRules $nsgRuleSSH,$nsgRuleWeb
VM için ağ kartı oluşturma
Ağ kartı VM'yi bir alt ağa, ağ güvenlik grubuna ve genel IP adresine bağlar.
# Create a virtual network card and associate it with public IP address and NSG
$nic = New-AzNetworkInterface `
-Name myNic `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
VM oluşturma
VM yapılandırması oluşturma. Bu yapılandırma, VM'yi dağıtırken kullanılacak ayarları içerir (örneğin, kullanıcı kimlik bilgileri, boyut ve VM görüntüsü).
# Define a credential object
$UserName='demouser'
$securePassword = ConvertTo-SecureString ' ' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($UserName, $securePassword)
# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_D1"
$VirtualMachine = New-AzVMConfig `
-VMName $VmName `
-VMSize $VmSize
$VirtualMachine = Set-AzVMOperatingSystem `
-VM $VirtualMachine `
-Linux `
-ComputerName "MainComputer" `
-Credential $cred
$VirtualMachine = Set-AzVMSourceImage `
-VM $VirtualMachine `
-PublisherName "Canonical" `
-Offer "UbuntuServer" `
-Skus "20.04-LTS" `
-Version "latest"
# Set the operating system disk properties on a VM
$VirtualMachine = Set-AzVMOSDisk `
-VM $VirtualMachine `
-CreateOption FromImage | `
Set-AzVMBootDiagnostic -ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName -Enable |`
Add-AzVMNetworkInterface -Id $nic.Id
# Configure SSH keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
# Add the SSH key to the VM
Add-AzVMSshPublicKey -VM $VirtualMachine `
-KeyData $sshPublicKey `
-Path "/home/$UserName/.ssh/authorized_keys"
# Create the VM
New-AzVM `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-VM $VirtualMachine
VM Hızlı Oluşturma: Tam betik
Not
Bu adım temelde kimlik doğrulaması için bir SSH anahtarı yerine parolayla birleştirilen önceki koddur.
## Create a resource group
<#
A resource group is a logical container where you can deploy and manage Azure Stack Hub resources. From your development kit or the Azure Stack Hub integrated system, run the following code block to create a resource group. Though we've assigned values for all the variables in this article, you can use these values or assign new ones.
#>
# Edit your variables, if required
# Create variables to store the location and resource group names
$location = "local"
$ResourceGroupName = "myResourceGroup"
# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"
# Create variables to store the network security group and rules names
$nsgName = "myNetworkSecurityGroup"
$nsgRuleSSHName = "myNetworkSecurityGroupRuleSSH"
$nsgRuleWebName = "myNetworkSecurityGroupRuleWeb"
# Create variable for VM password
$VMPassword = 'Password123!'
# End of variables - no need to edit anything past that point to deploy a single VM
# Create a resource group
New-AzResourceGroup `
-Name $ResourceGroupName `
-Location $location
## Create storage resources
# Create a storage account, and then create a storage container for the Ubuntu Server 20.04 LTS image
# Create a new storage account
$StorageAccount = New-AzStorageAccount `
-Location $location `
-ResourceGroupName $ResourceGroupName `
-Type $SkuName `
-Name $StorageAccountName
Set-AzCurrentStorageAccount `
-StorageAccountName $storageAccountName `
-ResourceGroupName $resourceGroupName
# Create a storage container to store the VM image
$containerName = 'osdisks'
$container = New-AzureStorageContainer `
-Name $containerName `
-Permission Blob
## Create networking resources
# Create a virtual network, a subnet, and a public IP address, resources that are used provide network connectivity to the VM
# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24
# Create a virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-Name MyVnet `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-AllocationMethod Static `
-IdleTimeoutInMinutes 4 `
-Name "mypublicdns$(Get-Random)"
### Create a network security group and a network security group rule
<#
The network security group secures the VM by using inbound and outbound rules. Create an inbound rule for port 3389 to allow incoming Remote Desktop connections and an inbound rule for port 80 to allow incoming web traffic.
#>
# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name $nsgRuleSSHName -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow
# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzNetworkSecurityRuleConfig -Name $nsgRuleWebName -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow
# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $location `
-Name $nsgName -SecurityRules $nsgRuleSSH,$nsgRuleWeb
### Create a network card for the VM
# The network card connects the VM to a subnet, network security group, and public IP address.
# Create a virtual network card and associate it with public IP address and NSG
$nic = New-AzNetworkInterface `
-Name myNic `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
## Create a VM
<#
Create a VM configuration. This configuration includes the settings used when deploying the VM. For example: user credentials, size, and the VM image.
#>
# Define a credential object
$UserName='demouser'
$securePassword = ConvertTo-SecureString $VMPassword -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($UserName, $securePassword)
# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_D1"
$VirtualMachine = New-AzVMConfig `
-VMName $VmName `
-VMSize $VmSize
$VirtualMachine = Set-AzVMOperatingSystem `
-VM $VirtualMachine `
-Linux `
-ComputerName "MainComputer" `
-Credential $cred
$VirtualMachine = Set-AzVMSourceImage `
-VM $VirtualMachine `
-PublisherName "Canonical" `
-Offer "UbuntuServer" `
-Skus "20.04-LTS" `
-Version "latest"
$osDiskName = "OsDisk"
$osDiskUri = '{0}vhds/{1}-{2}.vhd' -f `
$StorageAccount.PrimaryEndpoints.Blob.ToString(),`
$vmName.ToLower(), `
$osDiskName
# Set the operating system disk properties on a VM
$VirtualMachine = Set-AzVMOSDisk `
-VM $VirtualMachine `
-Name $osDiskName `
-VhdUri $OsDiskUri `
-CreateOption FromImage | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create the VM
New-AzVM `
-ResourceGroupName $ResourceGroupName `
-Location $location `
-VM $VirtualMachine
VM’ye bağlanma
VM'yi dağıttıktan sonra vm için bir SSH bağlantısı yapılandırın. VM'nin genel IP adresini almak için Get-AzPublicIpAddress komutunu kullanın:
Get-AzPublicIpAddress -ResourceGroupName myResourceGroup | Select IpAddress
SSH yüklü bir istemci sisteminden VM'ye bağlanmak için aşağıdaki komutu kullanın. Windows üzerinde çalışıyorsanız, bağlantıyı oluşturmak için PuTTY kullanabilirsiniz.
ssh <Public IP Address>
İstendiğinde azureuser olarak oturum açın. SSH anahtarlarını oluştururken parola kullandıysanız parolayı sağlamanız gerekir.
NGINX web sunucusunu yükleme
Paket kaynaklarını güncelleştirmek ve en son NGINX paketini yüklemek için aşağıdaki betiği çalıştırın:
#!/bin/bash
# update package source
apt-get -y update
# install NGINX
apt-get -y install nginx
NGINX karşılama sayfasını görüntüleme
NGINX web sunucusu yüklü ve VM'nizde 80 numaralı bağlantı noktası açıkken, VM'nin genel IP adresini kullanarak web sunucusuna erişebilirsiniz. Bir web tarayıcısı açın ve adresine http://<public IP address>
gidin.
Kaynakları temizleme
Remove-AzResourceGroup komutunu kullanarak artık ihtiyacınız olmayan kaynakları temizleyebilirsiniz. Kaynak grubunu ve tüm kaynaklarını silmek için aşağıdaki komutu çalıştırın:
Remove-AzResourceGroup -Name myResourceGroup
Sonraki adımlar
Bu hızlı başlangıçta, temel bir Linux sunucusu VM'sini dağıttınız. Azure Stack Hub VM'leri hakkında daha fazla bilgi edinmek için Bkz. Azure Stack Hub'da VM'ler için dikkat edilmesi gerekenler.