VMware PowerCLI:コマンドラインからクラウドとすべてを管理します。

advbg

画像



ルーチンとそれに対する戦いについて



私たちはすべてVMware製品が大好きです! WMwareは、最愛のワークステーションに加えて、企業レベルおよび複数企業レベルで強力な仮想化ツールを提供しています。



たとえば、同じハイパーバイザーの1つに存在する仮想マシンの1つにvCenter Serverを使用して複数のESXiハイパーバイザーをインストールすると、接続されているすべてのハイパーバイザーの管理、すべてのリソースの管理、仮想マシンの作成、削除、編集などを非常に簡単に行うことができますd。 たとえば、vSphere Clientを使用して接続し、仮想インフラストラクチャ全体の非常に優れたビューを取得できます。



確かに、ある時点で、このインフラストラクチャは非常に大きくなり、耐えられなくなる可能性があります。 あらゆる種類の管理は、一瞬で時間がかかり、労力がかかりすぎます。 いくつかのタスクを定期的に実行しますが、これは少し面倒です。



合理的な疑問が生じますが、これをスクリプト化できるのはどのようなもので、どのようにしたらよいでしょうか? これがPowerCLIの助けとなります。



PowerCLIは、クラウドを含む仮想インフラストラクチャを管理するための400以上の新しいコマンドレットを追加するWindows Powershellの拡張機能です。 製品は、ここからcommunity.vmware.com/community/vmtn/server/vsphere/automationtools/powercliからダウンロードできます。 ドキュメント、ブログ、コミュニティへのリンクもあります。



Powershellについて少し



ディストリビューションをインストールした後、PowerCLIショートカットを実行します。 コンソールが開きます。これは基本的に本格的なPowershellですが、仮想インフラストラクチャを管理するためのスナップがロードされています。 Powershellを開いて、PowerCLIがインストールされているフォルダーからスナップをロードするだけです。



Powershell構文の簡単なリマインダー。 その中のチームは次のように形成されます。



Verb-Noun –Param1 String [[-Param2] int ] [-Param3 short ] [-SwitchParam] [-EnumParam { Val1 | .. | ValN ]} [ CommonParameters ]





動詞 -定義が示すように、これは、名前または位置によってパラメーターを送信することにより、 名詞に対して実行する必要があるアクションです。 この場合、実行結果は.Netオブジェクトになります。 さらに、これらのオブジェクトは変数に書き込むことも、パイプライン経由でコマンドレットに送信することもできます。 例:

Get-Process -name notepad | Stop-Process







ここでは、 Get-Processコマンドレットを使用してnotepadという名前のすべてのプロセスを取得し 、パイプラインに沿ってStop-Processコマンドレットに渡します。



PowerCliでの仕組み



この哲学をインフラストラクチャの管理に適用します。



#

PS> $vm = Get-VM -Name DemoMachine

#

PS> $vm

Name PowerState Num CPUs Memory (MB)

---- ---------- -------- -----------

DemoMachine PoweredOff 1 256









コマンドを複雑にし、他の情報を表示できます。 メモ帳の例のように、仮想マシンを取得し、パイプラインを介してSelect-Objectに転送します。Select-Objectは仮想マシンオブジェクトのフィールドの一部を取得し、結果をFormat-Tableに転送します。



PS> $vm | Select-Object Name,VMHost,Version | Format-Table -AutoSize

Name VMHost Version

---- ------ -------

DemoMachine 10.23.83.210 v7









次に、何かを変更してみましょう。 ホストマシンにメモリを追加したとします。 1行で、たとえばマーケティング部門のすべての仮想マシンをアップグレードできます。



PS> Get-VM –Location MarketingPool | Set-VM –MemoryMB 512 –Confirm:$false

Name PowerState Num CPUs Memory (MB)

---- ---------- -------- -----------

MarketingVM05 PoweredOff 1 512

MarketingVM04 PoweredOff 1 512

MarketingVM03 PoweredOff 1 512

MarketingVM01 PoweredOff 1 512

MarketingVM02 PoweredOff 1 512









もう少し雄弁な例を見てみましょう:

#

PS> Get-VM -Location DevelopmentPool | New-Snapshot -Name "ClearState"



#

PS> Get-VM -Location DevelopmentPool | Set-VM -Snapshot "ClearState"



#

PS> Get-VM -Location DevelopmentPool | Get-Snapshot -Name "ClearState" | Remove-Snapshot



# datastore-

PS> Get-Datastore | Select Name,CapacityGB,FreespaceGB | Format-Table -AutoSize



#

PS> Get-VM -Location DevelopmentPool | Get-HardDisk | Select Parent,Name,CapacityKB,StorageFormat



# ESX(i)

PS> Get-VMHost | Select Name,Manufacturer,Model,NumCpu,MemoryTotalMB,CpuTotalMhz,ApiVersion | ft -AutoSize









今日、単語の雲は...



これらのコマンドはvSphereで実行されましたが、同様の方法で述べたように、クラウドインフラストラクチャも管理できます。 これを行うために、komadletovのセットがあります。



クラウドに接続したら、どのような種類の仮想マシンがあるのか​​興味があります。 私たちは実施します:



PS> Get-CIVM | Select Name

Name

----

CloudVM03

CloudVM04

CloudVM01

CloudVM02

CloudVM05









最後に、vSphereとCloudの両方で同時にコマンドを実行できます。



1行で、仮想マシンをクラウドに移動できます。



PS> Get-VM –Location AccountingPool | Import-CIVapp –OrgVdc AccountingVdc

Name Enabled InMaintenanceMode Owner

---- ------- ----------------- -----

AccountingVM03 True False system

AccountingVM04 True False system

AccountingVM01 True False system

AccountingVM02 True False system

AccountingVM05 True False system







行くぞ! すべてが非常に簡単です!



最後に少し魔法



コマンドレットを使用して、ゲストオペレーティングシステムと対話できます。 これを行うには、VMware Toolsをインストールする必要があります。 次のように更新できます。



PS> Get-VMGuest VM | Update-Tools







この相互作用には何が含まれますか? たとえば、特定のファイルをすべての仮想マシン(Windowsの場合)から特定の場所に書き換えたい場合:



PS> Get-VM | Copy-VMGuestFile -Source c:\text.txt -Destination c:\temp\ -GuestToLocal -HostUser root -HostPassword pass1 -GuestUser user -GuestPassword pass2







そして最も興味深いのは、ゲストOSでスクリプトを実行することです。



PS>$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.e

xe" /report "%tmp%\inforeport"'

Invoke-VMScript -ScriptText $script -VM MyVM -HostCredential $hostCredential -GuestCredential $guestCredential -ScriptType Bat








このコマンドレットを使用すると、bat / bash / powershellスクリプトを実行できます。



皆さんの多くは、すでにこの相互作用の力を感じていると思います! 彼らの助けを借りて、たとえば、強力なプロビジョニング後の構成を作成できます。



おわりに



そのため、PowerCLIは、仮想インフラストラクチャ全体を管理するための非常に強力なツールです。 あらゆる種類の操作用の複雑なスクリプトを作成できます。 これらのシナリオは、たとえば、定期的に実行したり、環境を持ち上げるために使用したりできます。 災害復旧用のスクリプトを作成することもできます。 Powershellのプロパティとアプローチにより、少数のコマンドで多数のオブジェクトを非常に簡単に操作できます。



上記のリンクで、この製品を使用するための完全な手順を取得できます。 また、関心のある問題についてコミュニティで質問することもできます。 これは、一般的なpowershellの最大の1つです。



All Articles