Mulai Cepat: Membuat VM server Linux dengan menggunakan PowerShell di Azure Stack Hub
Anda dapat membuat komputer virtual (VM) Ubuntu Server 20.04 LTS dengan menggunakan Azure Stack Hub PowerShell. Pada artikel ini, Anda membuat dan menggunakan mesin virtual. Artikel ini juga menunjukkan cara untuk:
- Menyambungkan ke VM dengan klien jarak jauh.
- Menginstal server web NGINX dan menampilkan halaman beranda default.
- Membersihkan sumber daya yang tidak terpakai.
Prasyarat
Citra Linux di Marketplace Azure Stack Hub. Marketplace Azure Stack Hub tidak memiliki citra Linux secara default. Minta operator Azure Stack Hub menyediakan gambar Ubuntu Server 20.04 LTS yang Anda butuhkan. Operator dapat menggunakan petunjuk di Mengunduh item Marketplace dari Azure ke Azure Stack Hub.
Azure Stack Hub memerlukan versi tertentu Azure CLI untuk membuat dan mengelola sumber dayanya.
- Jika Anda tidak memiliki PowerShell yang dikonfigurasi untuk Azure Stack Hub, lihat Menginstal PowerShell untuk Azure Stack Hub.
- Setelah PowerShell Azure Stack Hub disiapkan, Anda akan tersambung ke lingkungan Azure Stack Hub Anda. Untuk mendapatkan petunjuk, lihat Menyambungkan ke Azure Stack Hub dengan PowerShell sebagai pengguna.
Kunci Secure Shell (SSH) publik dengan nama id_rsa.pub disimpan di direktori .ssh profil pengguna Windows Anda. Untuk informasi rinci tentang pembuatan kunci SSH, lihat Menggunakan pasangan kunci SSH dengan Azure Stack Hub.
Buat grup sumber daya
Grup sumber daya adalah kontainer logis tempat Anda dapat menyebarkan dan mengelola sumber daya Azure Stack Hub. Untuk membuat grup sumber daya, jalankan blok kode berikut:
Catatan
Kami telah menetapkan nilai untuk semua variabel dalam contoh kode berikut. Namun, Anda dapat menetapkan nilai-nilai Anda sendiri.
# Create variables to store the location and resource group names.
$location = "local"
$ResourceGroupName = "myResourceGroup"
New-AzResourceGroup `
-Name $ResourceGroupName `
-Location $location
Membuat sumber daya penyimpanan
Buat akun penyimpanan yang akan digunakan untuk menyimpan output diagnostik boot.
# 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
Membuat sumber daya jaringan
Buat jaringan virtual, subnet, dan alamat IP publik. Semua sumber daya ini digunakan untuk menyediakan konektivitas jaringan ke 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)"
Membuat kelompok keamanan jaringan dan aturan grup keamanan jaringan
Kelompok keamanan jaringan mengamankan VM dengan menggunakan aturan masuk dan keluar. Buat aturan masuk untuk port 3389 untuk memungkinkan koneksi masuk Desktop Jauh dan aturan masuk untuk port 80 untuk memungkinkan lalu lintas web masuk.
# 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
Membuat kartu jaringan untuk VM
Kartu jaringan menyambungkan VM ke subnet, kelompok keamanan jaringan, dan alamat IP publik.
# 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
Buat VM
Buat konfigurasi VM. Konfigurasi ini mencakup pengaturan yang akan digunakan saat Anda menyebarkan VM (misalnya, info masuk pengguna, ukuran, dan citra VM).
# 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
Pembuatan Cepat VM: Skrip lengkap
Catatan
Langkah ini pada dasarnya adalah kode sebelumnya yang digabungkan bersama, tetapi dengan kata sandi alih-alih kunci SSH untuk autentikasi.
## 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
Menyambungkan ke VM
Setelah Anda menyebarkan VM, konfigurasikan koneksi SSH untuk VM. Untuk mendapatkan alamat IP publik VM, gunakan perintah Get-AzPublicIpAddress:
Get-AzPublicIpAddress -ResourceGroupName myResourceGroup | Select IpAddress
Dari sistem klien dengan SSH terinstal, gunakan perintah berikut untuk terhubung ke VM. Jika Anda menggunakan Windows, Anda dapat menggunakan Putty untuk membuat koneksi.
ssh <Public IP Address>
Saat Diminta, masuk sebagai azureuser. Jika Anda menggunakan frase sandi saat membuat kunci SSH, Anda harus memberikan frase sandi.
Menginstal server web NGINX
Untuk memperbarui sumber daya paket dan menginstal paket NGINX terbaru, jalankan skrip berikut:
#!/bin/bash
# update package source
apt-get -y update
# install NGINX
apt-get -y install nginx
Menampilkan beranda NGINX
Dengan server web NGINX yang telah terinstal, dan port 80 yang terbuka di VM Anda, Anda dapat mengakses server web dengan menggunakan alamat IP publik VM. Buka browser web dan pergi ke http://<public IP address>
.
Membersihkan sumber daya
Anda dapat membersihkan sumber daya yang tidak Anda butuhkan lagi dengan menggunakan perintah Remove-AzResourceGroup. Untuk menghapus grup sumber daya dan semua sumber dayanya, jalankan perintah berikut:
Remove-AzResourceGroup -Name myResourceGroup
Langkah berikutnya
Dalam mulai cepat ini, Anda menyebarkan VM server Linux dasar. Untuk mempelajari selengkapnya VM Azure Stack Hub, lihat Pertimbangan untuk VM di Azure Stack Hub.