Создание полностью настроенной виртуальной машины с помощью PowerShell

Этот сценарий создает виртуальную машину Azure с операционной системой Ubuntu. После выполнения сценария можно получить доступ к виртуальной машине по протоколу SSH.

При необходимости установите модуль Azure PowerShell, следуя инструкциям из руководства по Azure PowerShell, а затем выполните команду Connect-AzAccount, чтобы подключиться к Azure. Кроме того, вам понадобится открытый ключ SSH id_rsa.pub в каталоге формата SSH вашего профиля пользователя.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Пример скрипта

# Variables for common values
$resourceGroup = "myResourceGroup"
$location = "westeurope"
$vmName = "myVM"

# Define user name and blank password
$securePassword = ConvertTo-SecureString ' ' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("azureuser", $securePassword)

# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location

# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -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 $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4

# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleSSH  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 22 -Access Allow

# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleSSH

# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1 |
Set-AzVMOperatingSystem -Linux -ComputerName $vmName -Credential $cred -DisablePasswordAuthentication |
Set-AzVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus 14.04.2-LTS -Version latest |
Add-AzVMNetworkInterface -Id $nic.Id

# Configure SSH Keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
Add-AzVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"

# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Очистка развертывания

Выполните следующую команду, чтобы удалить группу ресурсов, виртуальную машину и все связанные с ней ресурсы.

Remove-AzResourceGroup -Name myResourceGroup

Описание скрипта

Чтобы создать развертывание, скрипт использует следующие команды. Для каждого элемента в таблице приведены ссылки на документацию по команде.

Get-Help Примечания
New-AzResourceGroup Создает группу ресурсов, в которой хранятся все ресурсы.
New-AzVirtualNetworkSubnetConfig Создает конфигурацию подсети. Эта конфигурация используется в процессе создания виртуальной сети.
New-AzVirtualNetwork Создает виртуальную сеть.
New-AzPublicIpAddress Создает общедоступный IP-адрес.
New-AzNetworkSecurityRuleConfig Создает конфигурацию правил группы безопасности сети. Эта конфигурация используется для создания правила NSG при создании этой NSG.
New-AzNetworkSecurityGroup Создает группу безопасности сети.
Get-AzVirtualNetworkSubnetConfig Возвращает сведения о подсети. Эта информация используется при создании сетевого интерфейса.
New-AzNetworkInterface Создает сетевой интерфейс.
New-AzVMConfig Создает конфигурацию виртуальной машины. Эта конфигурация включает в себя такие сведения, как имя виртуальной машины, операционную систему и учетные данные администратора. Данная конфигурации используется при создании виртуальной машины.
Set-AzVMOperatingSystem Определяет свойства операционной системы для виртуальной машины.
Set-AzVMSourceImage Указывает образ для виртуальной машины.
Add-AzVMNetworkInterface Добавляет сетевой интерфейс для виртуальной машины.
New-AzVM Создайте виртуальную машину.
Remove-AzResourceGroup Удаляет группу ресурсов и все ресурсы, содержащиеся в ней.

Дальнейшие действия

Дополнительные сведения о модуле Azure PowerShell см. в документации по Azure PowerShell.

Дополнительные примеры сценариев PowerShell для виртуальных машин представлены в документации по виртуальным машинам Azure под управлением Linux.