powershell 로 가상 컴퓨터 만 들 기

azure 와 관련 된 자동화 과정 에서 가상 호스트 를 만 드 는 것 은 피 할 수 없 는 작업 입 니 다.시스템 자체 의 복잡성 때문에 가상 호스트 의 생 성 을 한두 가지 간단 한 명령 으로 완성 하기 어렵다.그래서 PowerShell 로 azure 에 가상 호스트(Ubuntu 서버)를 만 드 는 것 을 기록 하 는 글 을 작성 합 니 다.
가상 호스트 가상 호스트 는 다른 기본 구성 요소 와 연결 되 어야 사용 가능 한 서 비 스 를 제공 할 수 있 습 니 다.이런 구성 요 소 는 네트워크 카드,Public IP 주소,가상 네트워크,네트워크 보안 팀,저장 등 을 포함 합 니 다.다음 그림 은 새 가상 컴퓨터 에 필요 한 다른 구성 요 소 를 포함 하고 있 습 니 다.

즉,우리 가 허 기 를 만 드 는 동시에 이 구성 요소 들 을 하나하나 만들어 야 한 다 는 것 이다.
정의 변수
앞으로 이 스 크 립 트 를 다시 사용 할 수 있 기 를 바 랍 니 다.따라서 사용 하 는 변 수 를 모두 함께 놓 으 면 스 크 립 트 를 수정 하거나 사용 할 수 있 는 매개 변 수 를 초기 화 할 수 있 습 니 다.

$rgName = "vmpool"
$rgLocation = "East Asia"
$subnetConfigName = $rgName + "subnet"
$vnetName = $rgName + "vnet"
$vmName = "vmxman"
$pipName = $vmName + "pip"
$nsgRule22Name = "nsgRule22"
$nsgName = $rgName + "nsg"
$interfaceName = $vmName + "nic"
$storageName = $rgName + "storage"
$storageType = "Standard_GRS"
$oSDiskName = $vmName + "OSDisk"
$vmSize = "Standard_D1"
$vmVersion = "16.04-LTS"
$userName = "nick"
$userPassword = "123456"
놀 라 지 않 았 으 면 좋 겠 어 요.맞다!바로 이렇게 많은 변수 가 필요 하 다 는 것 이다.여 기 는 먼저 설명 하지 않 고 뒤에서 하 나 를 써 서 말 하 는 것 이다.
로그 인 허위 증 거 를 만 듭 니 다.
이 스 크 립 트 를 통 해 만 든 가상 컴퓨터 는 기본적으로 사용 자 를 만 들 것 입 니 다.사용자 의 이름과 로그 인 비밀 번 호 를 지정 해 야 합 니 다.(우리 가 만 든 사용 자 는 공개 키 인증 을 통 해 로그 인 합 니 다.이 비밀 번 호 는 실제로 사용 되 지 않 습 니 다)사용자 이름과 비밀 번 호 를 통 해 증빙서류 대상 만 들 기:

$securePassword = ConvertTo-SecureString $userPassword -AsPlainText -Force
$userCred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
리 소스 그룹 만 들 기
새 리 소스 그룹 을 만 듭 니 다.이 가상 컴퓨터 와 관련 된 모든 구성 요 소 는 같은 리 소스 그룹 에 속 합 니 다.

New-AzureRmResourceGroup -Name $rgName -Location $rgLocation
인자 Location 에서 리 소스 Group 의 위 치 를 동아시아 로 지정 합 니 다(접근 속도 가 빠 릅 니 다).
가상 네트워크 만 들 기
다음은 가상 네트워크 를 만 듭 니 다.먼저 하위 네트워크 설정 을 만 듭 니 다:

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetConfigName -AddressPrefix 192.168.1.0/24
그리고 하위 네트워크 를 가 진 가상 네트워크 를 만 듭 니 다.

$vnet = New-AzureRmVirtualNetwork -ResourceGroupName $rgName -Location $rgLocation `
                 -Name $vnetName -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
마지막 으로 호스트 에 외부 네트워크 로 접근 할 수 있 는 Public IP 를 만 듭 니 다:

$pip = New-AzureRmPublicIpAddress -ResourceGroupName $rgName -Location $rgLocation `
                 -AllocationMethod Static -IdleTimeoutInMinutes 4 `
                 -Name $pipName
네트워크 보안 그룹 만 들 기
22 포트 에 접근 할 수 있 는 규칙 을 설정 해 야 합 니 다:

$nsgRule22 = New-AzureRmNetworkSecurityRuleConfig -Name $nsgRule22Name -Protocol Tcp `
  -Direction Inbound -Priority 200 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 22 -Access Allow
그리고 네트워크 보안 그룹 만 들 기:

$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $rgLocation `
  -Name $nsgName -SecurityRules $nsgRule22
네트워크 인터페이스 만 들 기
호스트 에 네트워크 카드 가 한 장 부족 하기 때문에 호스트 에 가상 네트워크 카드 를 만 듭 니 다.

$nic = New-AzureRmNetworkInterface -Name $interfaceName -ResourceGroupName $rgName -Location $rgLocation `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
저장 소 계 정 만 들 기
가상 디스크 파일 은 azure 의 저장 소 에 blob 형식 으로 저장 되 어 있 기 때문에 디스크 파일 을 저장 하기 위해 StorageAccount 를 만들어 야 합 니 다.

$storageAccount = New-AzureRmStorageAccount -ResourceGroupName $rgName -Name $storageName -Type $storageType -Location $rgLocation
디스크 파일 의 저장 위치 와 이름 을 정의 합 니 다:

$oSDiskUri = $storageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $oSDiskName + ".vhd"
가상 컴퓨터 만 들 기
다음 에 가상 컴퓨터 와 관련 된 설정 을 만 듭 니 다:

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize | `
      Set-AzureRmVMOperatingSystem -Linux -ComputerName $vmName -Credential $userCred -DisablePasswordAuthentication | `
      Set-AzureRmVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus $vmVersion -Version latest | `
      Add-AzureRmVMNetworkInterface -Id $nic.Id | `
      Set-AzureRmVMOSDisk -VhdUri $oSDiskUri -CreateOption FromImage
Google 이 만 든 가상 운영 체 제 는 Ubuntu Server 16.04-LTS 로 사용자 이름 비밀 번 호 를 사용 하 는 방식 으로 로그 인 할 수 없습니다.사용자 가 공개 키 로 로그 인 할 수 있 도록 하려 면 사용자 의 공개 키 를 제공 해 야 합 니 다.

$sshPublicKey = "nick's ssh public key"
다음 명령 은 사용자 의 authorized 에 공개 키 를 기록 합 니 다.keys 파일 중:

Add-AzureRmVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/$userName/.ssh/authorized_keys"
다음 명령 은 azure 에 실제 가상 컴퓨터 를 만 듭 니 다:

New-AzureRmVM -ResourceGroupName $rgName -Location $rgLocation -VM $vmConfig
질문
azure 에서 작업 을 수행 하려 면 사용자 가 먼저 로그 인 을 해 야 합 니 다.PowerShell 스 크 립 트 에서 어떻게 해 야 합 니까?
필 자 는 라 는 글 에서 상세 한 소 개 를 했 는데 관심 이 있 는 친 구 는 참고 할 수 있다.

좋은 웹페이지 즐겨찾기