'VMware/PowerCLI '에 해당되는 글 4건

  1. 2020.11.29 vMotion NetStack 변경 스크립트
  2. 2018.04.29 VMware PowerCLI 10.1.0 설치
  3. 2016.03.07 호스트 성능 정보 추출
  4. 2016.02.11 VMware PowerCLI 시작

요즘은 vMotion 을 vMotion TCP/IP Stack 에 위치해서 많이 사용하시는 것으로 보입니다만 이전에 설치했던 시스템을 보면 Defualt TCP/IP Stack 에 되어 있는것을 볼 수 있습니다.

특히 다른 대역의 데이터센터와 vMotion 을 하기위해서는 routing 이 되어야 하는데 이전에는 static routing 으로 설정해서 사용했었지만, vMotion TCP/IP Stack 이 생긴 이후로는 routing 이 필요한 경우에는 vMotion TCP/IP Stack 을 사용하라고 가이드되어 있습니다.

 

 

https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-3B41119A-1276-404B-8BFB-A32409052449.html

다만 이미 vMotion vmkenel 이 생성이 되었다면 TCP/IP Stack 을 변경할 수 없고, 기존 vmk 를 삭제 후 다시 만들때 vMotion TCP/IP Stack 을 선택해서 생성을 해야합니다.

기존에 vSwitch0 에 구성이 되어있었고, 일부는 vMotion NetStack 을 사용하고 있는 환경에서 작성된 스크립트입니다. 그대로 사용하기보다는 각자의 환경에 맞춰서 수정해서 사용하시는것을 권장드립니다.


 

$alltasks = @()

$vMotionMTU = '9000'
$taskhosts = Get-Cluster | Get-VMHost | Sort-Object Parent.Name, Name

$Startdates = Get-Date

foreach ($taskhost in $taskhosts) {
    
    Write-Host "##########################################################################################" -ForegroundColor Cyan
    Write-Host "############" $taskhost.Name" 의 작업을 시작합니다. #####################" -ForegroundColor Cyan
    Write-Host "##########################################################################################" -ForegroundColor Cyan

    $task = @()
    $vMotionvmk = @()
    $vMotionPG = @()
    $vMotionstack = @()

    $task = "" | Select ClusterName, HostName, ASIS_vMotionvmk, ASIS_vMotionNetStack, ASIS_vMotionNetStackGW, ASIS_vMotionIP, ASIS_vMotionSubnet, ASIS_vMotionMTU, ASIS_vSwitch, ASIS_vSwitchMTU, ASIS_PortGroup, ASIS_PortGroupVLAN, TOBE_vMotionvmk, TOBE_vMotionNetStack, TOBE_vMotionNetStackGW, TOBE_vMotionIP, TOBE_vMotionSubnet, TOBE_vMotionMTU, TOBE_vSwitch, TOBE_vSwitchMTU, TOBE_PortGroup, TOBE_PortGroupVLAN

    $vMotionvmk = $taskhost | Get-VMHostNetworkAdapter | ?{$_.VMotionEnabled -eq "True"}    
    $vMotionPG = $taskhost | Get-VirtualPortGroup -Name $vMotionvmk.PortGroupName #vMotion 설정된 vmk 가 없을 경우 에러발생함
    $vMotionstack = Get-VMHostNetworkStack -VMHost $taskhost | ?{$_.id -eq "vmotion"}
    $vMotionIPSplit = $vMotionvmk.IP.Split('.')
    $vMotionGW = $vMotionIPSplit[0]+"."+$vMotionIPSplit[1]+"."+$vMotionIPSplit[2]+".1"
    
    $task.ClusterName = $taskhost.Parent.Name
    $task.HostName = $taskhost.Name
    $task.ASIS_vMotionvmk = $vMotionvmk.Name
    $task.ASIS_vMotionNetStack = $vMotionvmk.ExtensionData.Spec.NetStackInstanceKey #vMotion 이 Enabled 되어 있는 NetSatck
    $task.ASIS_vMotionNetStackGW = $vMotionstack.Gateway #vMotion TCP/IP NetStack 의 Gateway
    $task.ASIS_vMotionIP = $vMotionvmk.IP
    $task.ASIS_vMotionSubnet = $vMotionvmk.SubnetMask
    $task.ASIS_vMotionMTU = $vMotionvmk.Mtu
    $task.ASIS_vSwitch = $vMotionPG.VirtualSwitch.Name
    $task.ASIS_vSwitchMTU = $vMotionPG.VirtualSwitch.Mtu
    $task.ASIS_PortGroup = $vMotionPG.Name
    $task.ASIS_PortGroupVLAN = $vMotionPG.VLanId

    if ($vMotionvmk -eq $null) {
    Write-Host "vMotion 이 설정된 vmkernel이 존재하지 않습니다."$taskhost.Name"호스트는 SKIP 됩니다." -ForegroundColor Red
    $task.ASIS_vMotionvmk = 'Null, Need to Check'

    } else {
    
    ## vSwitch0 가 MTU 9000 이 아닌 경우 변경 ##
    if ($vMotionPG.VirtualSwitch.Mtu -ne $vMotionMTU) {
    Write-Host $taskhost.Name"의 vMotion 을 사용하는"$vMotionPG.VirtualSwitch.Name"의 MTU가"$vMotionPG.VirtualSwitch.Mtu"이기 때문에" $vMotionMTU"로 변경합니다." -ForegroundColor Green
    $vMotionPG.VirtualSwitch | Set-VirtualSwitch -Mtu $vMotionMTU -Confirm:$false | Out-Null
    } else {}

    ## vMotion NetStack 작업##
    if ($vMotionvmk.ExtensionData.Spec.NetStackInstanceKey -eq 'vmotion') {
        ## vMotion NetStack이 vMotion 이고, MTU 가 9000이 아니면 9000으로 변경##
        if ($vMotionvmk.Mtu -ne $vMotionMTU) {
        Write-Host $taskhost.Name"의 vMotion 의"$vMotionvmk.Name"의 MTU가"$vMotionvmk.Mtu"이기 때문에" $vMotionMTU"로 변경합니다." -ForegroundColor Green
        $vMotionvmk | Set-VMHostNetworkAdapter -Mtu $vMotionMTU -Confirm:$false | Out-Null
        } else {}
    ## vMotion NetSatck이 vMotion 이 아니면, 지우고, MTU 9000 으로 생성 및 VLAN 설정 ##
    } else {
    Write-Host "vMotion이"$vMotionvmk.ExtensionData.Spec.NetStackInstanceKey"입니다."$taskhost.Name"호스트의"$vMotionvmk.Name"을 삭제후 재생성합니다." -ForegroundColor Green
    $vMotionvmk | Remove-VMHostNetworkAdapter -Confirm:$false | Out-Null
    $vMotionPG | Remove-VirtualPortGroup -Confirm:$false | Out-Null       
    New-VMHostNetworkAdapter -VMHost $taskhost -VirtualSwitch $vMotionPG.VirtualSwitch  -NetworkStack $vMotionstack -PortGroup $vMotionvmk.PortGroupName -IP $vMotionvmk.IP -SubnetMask $vMotionvmk.SubnetMask -Mtu $vMotionMTU | Out-Null
    $taskhost | Get-VirtualPortGroup -Name vMotion | Set-VirtualPortGroup -VLanId $vMotionPG.VLanId | Out-Null
    } 

    ## vMotion NetSatck GW 작업 ##
    if ($vMotionstack.Gateway -ne $vMotionGW) {
    Write-Host $taskhost.Name"의"$vMotionstack.Name"의 Gateway가"$vMotionstack.Gateway"이기 때문에"$vMotionGW "로 변경합니다." -ForegroundColor Green
    $vMotionstack | Set-VMHostNetworkStack -VMKernelGateway $vMotionGW | Out-Null
    } else {}
    
    } # Line45

    $vMotionvmk = @()
    $vMotionPG = @()
    $vMotionstack = @()

    $vMotionvmk = $taskhost | Get-VMHostNetworkAdapter | ?{$_.VMotionEnabled -eq "True"}    
    $vMotionPG = $taskhost | Get-VirtualPortGroup -Name $vMotionvmk.PortGroupName
    $vMotionstack = Get-VMHostNetworkStack -VMHost $taskhost | ?{$_.id -eq "vmotion"}

    $task.TOBE_vMotionvmk = $vMotionvmk.Name
    $task.TOBE_vMotionNetStack = $vMotionvmk.ExtensionData.Spec.NetStackInstanceKey
    $task.TOBE_vMotionNetStackGW = $vMotionstack.Gateway
    $task.TOBE_vMotionIP = $vMotionvmk.IP
    $task.TOBE_vMotionSubnet = $vMotionvmk.SubnetMask
    $task.TOBE_vMotionMTU = $vMotionvmk.Mtu
    $task.TOBE_vSwitch = $vMotionPG.VirtualSwitch.Name
    $task.TOBE_vSwitchMTU = $vMotionPG.VirtualSwitch.Mtu
    $task.TOBE_PortGroup = $vMotionPG.Name
    $task.TOBE_PortGroupVLAN = $vMotionPG.VLanId

    $task
    $alltasks += $task
    
}

$enddates = get-date -Format yyyyMMdd
$TaskTime = $enddates-$Startdates
$TaskNum = $enddates+"_"+$TaskTime.Minutes+"Min"

$alltasks | Export-Csv "C:\Users\administrator\Documents\vMotion_$TaskNum.csv" -NoTypeInformation

 

'VMware > PowerCLI' 카테고리의 다른 글

VMware PowerCLI 10.1.0 설치  (0) 2018.04.29
호스트 성능 정보 추출  (0) 2016.03.07
VMware PowerCLI 시작  (0) 2016.02.11
Posted by hdywis
,

PowerCLI 10.1.0 이 릴리즈되었습니다.

https://blogs.vmware.com/PowerCLI/2018/04/new-release-vmware-powercli-10-1-0.html#

새로 출시된 vSphere 6.7 과 NSX-T 2.1 이 지원됩니다.


가만보면 왜 PowerCLI 버전이 6.x 와 같이 vSphere 버전을 따라가다가 10.x 로 변경된 이유는 PowerCLI 가 출시된지 2017년 기준으로 10주년이 되었기 때문입니다.

그리고 개인적인 생각으로는 6.5 버전부터 이름이 VMware vSphere PowerCLI 에서 VMware PowerCLI 로 단순화 되었는데, 여러가지 제품들이 버전이 다르기 때문에 더 이상 vSphere 버전을 따라 갈 수 없는 부분도 고려되지 않았나 생각됩니다.

VMworld 2017 에서 PowerCLI 10주년 기념 세션을 들었는데, LucD를 직접보니 감동이었습니다. 해당 세션은 아래에서 확인할 수 있어요. 상당히 유쾌했던 세션이었습니다.

https://www.youtube.com/watch?v=EYAl8IBcews


여튼 기존에 VMware PowerCLI 6.5 R1 까지는 프로그램을 통해서 설치가 가능했지만, 그 이후 부터는 방법이 변경되었습니다.

https://code.vmware.com/web/dp/tool/vmware-powercli/10.1.0


간단하게 Install-Module 명령어를 통해서 설치를 하면 간편하긴하지만 대부분은 운영환경에서는 인터넷이 안되는 경우가 많습니다.

그래서 별도로 인터넷이 되는 환경에서 파일을 저장해서 Import 하는 형태로 진행을 해봤습니다.


개인적으로는 Windows PowerShell ISE 프로그램을 자주 애용합니다.

아래와 같이 인터넷이 되는 환경에서 Save-Module 명령어를 통해서 저장을 할 수있습니다. 만약에 해당 명령이 동작하지 않는다면 Windows PowerShell을 업그레이드 해야합니다.

파일을 받는 시간이 걸리므로 잠시 후 명령이 끝나면 해당 디렉토리에 Module 폴더가 생성된것을 확인 할 수 있습니다.


해당 폴더를 아래 경로로 복사를 합니다.


Get-Module 명령어를 통해서 사용하는 모듈 목록이 나옵니다.


그럼 모듈 추가를 해볼까요? 자주 보던 화면이 보이는군요.



다시 모듈을 확인 해보면 VMware.PowerCLI 모듈이 포함된것을 확인 할 수 있습니다.


그리고 처음 설치 하는 것이라면 아래 명령어를 입력해주시면 됩니다. 

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCeip $false -Confirm:$false


개인적으로는 설치형보다 간편하고 업데이트도 편해서 앞으로는 이 방식으로 이용하려고 합니다.

'VMware > PowerCLI' 카테고리의 다른 글

vMotion NetStack 변경 스크립트  (0) 2020.11.29
호스트 성능 정보 추출  (0) 2016.03.07
VMware PowerCLI 시작  (0) 2016.02.11
Posted by hdywis
,

정기점검 등이나 호스트 성능 정보를 파악할 때 일일히 파악하기에는 애로사항이 있기에 아래와 같이 성능 정보를 추출할 수 있습니다.

아래 예제는 한달간 각 호스트별로 성능정보를 추출하여, MAX, MIN, AVG 만 출력한 스크립트입니다.




$allhosts = @()

$hosts = Get-VMHost

 

foreach($vmHost in $hosts){

  $hoststat = "" | Select HostName, MemMax100, MemAvg100, MemMin100, CPUMax100, CPUAvg100, CPUMin100, MemMax, MemAvg, MemMin, CPUMax, CPUAvg, CPUMin

  $hoststat.HostName = $vmHost.name

 

  $statcpu100 = Get-Stat -Entity ($vmHost)-start (get-date).AddDays(-30) -Finish (Get-Date)-MaxSamples 10000 -stat cpu.usage.average

  $statmem100 = Get-Stat -Entity ($vmHost)-start (get-date).AddDays(-30) -Finish (Get-Date)-MaxSamples 10000 -stat mem.usage.average

  $statcpu = Get-Stat -Entity ($vmHost)-start (get-date).AddDays(-30) -Finish (Get-Date)-MaxSamples 10000 -stat cpu.usagemhz.average

  $statmem = Get-Stat -Entity ($vmHost)-start (get-date).AddDays(-30) -Finish (Get-Date)-MaxSamples 10000 -stat mem.consumed.average

 

 

  $cpu100 = $statcpu100 | Measure-Object -Property value -Average -Maximum -Minimum

  $mem100 = $statmem100 | Measure-Object -Property value -Average -Maximum -Minimum

  $cpu = $statcpu | Measure-Object -Property value -Average -Maximum -Minimum

  $mem = $statmem | Measure-Object -Property value -Average -Maximum -Minimum

 

 

  $hoststat.CPUMax100 = $cpu100.Maximum

  $hoststat.CPUAvg100 = $cpu100.Average

  $hoststat.CPUMin100 = $cpu100.Minimum

  $hoststat.MemMax100 = $mem100.Maximum

  $hoststat.MemAvg100 = $mem100.Average

  $hoststat.MemMin100 = $mem100.Minimum

 

  $hoststat.CPUMax = $cpu.Maximum

  $hoststat.CPUAvg = $cpu.Average

  $hoststat.CPUMin = $cpu.Minimum

  $hoststat.MemMax = $mem.Maximum

  $hoststat.MemAvg = $mem.Average

  $hoststat.MemMin = $mem.Minimum

 

  $allhosts += $hoststat

}

$allhosts | Select HostName, MemMax100, MemAvg100, MemMin100, CPUMax100, CPUAvg100, CPUMin100, MemMax, MemAvg, MemMin, CPUMax, CPUAvg, CPUMin | Export-Csv "c:\Hosts3.csv" -noTypeInformation





 

 

'VMware > PowerCLI' 카테고리의 다른 글

vMotion NetStack 변경 스크립트  (0) 2020.11.29
VMware PowerCLI 10.1.0 설치  (0) 2018.04.29
VMware PowerCLI 시작  (0) 2016.02.11
Posted by hdywis
,

VMware 홈페이지에서 VMware vSphere PowerCLI 를 다운 받은 후 설치를 하고 실행을 시키면 다음과 같이 에러 메시지가 발생합니다.

위와 같이 ExecutionPolicy 를 remotesigned 로 변경을 해준 후 다시 실행시키면 정상적으로 동작이 가능합니다.

해당 명령이 먹히지 않는다면 관리자로 실행시켰는지 확인 해보시면 됩니다.





'VMware > PowerCLI' 카테고리의 다른 글

vMotion NetStack 변경 스크립트  (0) 2020.11.29
VMware PowerCLI 10.1.0 설치  (0) 2018.04.29
호스트 성능 정보 추출  (0) 2016.03.07
Posted by hdywis
,