PowerCLIを介してVMWare vSphereの標準vSwitchを管理するためのシンプルなGUIユーティリティ

こんにちは、Habrの読者の皆さん!



vDS(vSphere Distributed Switch)を使用せずに、VMWare vSphereインフラストラクチャの仮想スイッチを管理するためのシンプルで便利な方法をご紹介します。

誰かがvDSを必要としないため、vDSを使用しません。 彼は不快なので誰か。 ライセンスがないため誰か-結局のところ、vDSにはEnterprise Plus vSphereライセンスが必要です。



インフラストラクチャには70を超えるESXiハイパーバイザーが存在しますが、現在は従来のvSwitchも使用しています。 そして、たまたま彼らと仕事をしている間に、特定の機能を自動的に設定するためのPowerCLIスクリプトをたくさん蓄積しました。 そして、それらをさらに組み合わせて、他の管理者にとって便利なツールを作りたいと思いました。 しばらくして、Primal Formsパッケージ(現在はPowerShellスタジオと呼ばれ、機能が低下したCommunity Editionがあります)に出会い、次のステップはGUIであることに気付きました。 Primal Formsでは、PowerShell自体を使用してGUIを作成できますが、このプロセスは大幅に簡素化されます-エディターでGUIを描画し、ボタンまたは他のコントロールの単純なクリックにコードを追加するだけです。



結果は、次のことができるスクリプトユーティリティです。





さらにいくつかの追加の利点:

これを各ホストで手動で行うのは退屈なだけでなく、かなり愚かなことです。 もちろん、ホストプロファイルを使用できますが、そのためには各ホストをメンテナンスモードに変換する必要があります。 また、ホストプロファイルで作業した人は、プロファイルの適用プロセスがまったく速くないことを確認できます。

猫の下のコード例とユーティリティ自体。



Primal Formsを使用して、各アクションのボタンを備えたインターフェイスをスケッチしました。 ファイアウォールの制御を追加し、たとえば、すべてのホストのスナップショットを一度に表示したいので、タブで-未来に触れました。 フィールドのデフォルト値には事前にスコアが付けられます。下部には、vCenterへの接続とタスクの完了に関する情報を示すステータスバーがあります。

画像

仮想インフラストラクチャに接続するためのコードを固定します。



$buttonConnectToVcenter_Click={ If ($vcenter_address.Text -eq "") {[System.Windows.Forms.MessageBox]::Show("Please specify a VC Server")} Else { $app_statusbar.Text="Connecting" //  [System.Windows.Forms.Application]::DoEvents() //     //     VMWare Snapin'. Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue Add-PSSnapin VMware.VumAutomation -ErrorAction SilentlyContinue $VC = Connect-VIServer $vcenter_address.Text If ($VC.IsConnected -eq $true) { $vc_connected=$TRUE $app_statusbar.Text="Connected" [System.Windows.Forms.MessageBox]::Show("Connected to "+$vcenter_address.Text) } else { [System.Windows.Forms.MessageBox]::Show("Connection FAILED - Please try again.") $vc_connected=$FALSE // .     $vc_connected,         vcenter. $app_statusbar.Text="Connection failed" } } }
      
      







それからすべては類推によってです。 ボタン-イベントへの反応。 たとえば、ポートグループを追加します。

 $port_group_add_Click={ if ($vc_connected -eq $FALSE) { [System.Windows.Forms.MessageBox]::Show("I am not connected to vCenter") //,   ? } if ($vc_connected -eq $TRUE) { //,      ? If (($switch_name.Text -eq "") -or ($port_group_name_add.Text -eq "") -or ($port_group_vlan_id_add.Text -eq "")) {[System.Windows.Forms.MessageBox]::Show("Parameters missing")} Else { $app_statusbar.Text="Adding port group..." $esxhosts= Get-VMHost * $progress.Value=0 $progress_tick=((1/$esxhosts.Count)*100) foreach ($esxhost in $esxhosts) { [System.Windows.Forms.Application]::DoEvents() $hypervisor = Get-VMHost $esxhost | Get-VirtualSwitch -Name $switch_name.Text $hypervisor | New-VirtualPortGroup -Name $port_group_name_add.Text -VLanId $port_group_vlan_id_add.Text $progress.Value=$progress_tick $progress_tick=$progress_tick+((1/$esxhosts.Count)*100) // progress bar } $progress.Value=100 $app_statusbar.Text="Done!" } } }
      
      





投稿をバカなコードのリストにしたくないので、2、3の機能しか提供されていません。 全体を見ることに興味がある場合-右下にスライドすると、pastebinへのリンクがあります。 残念ながら、私はプログラマーではありません、それはうまく動作します。 たぶん誰かがそれからいくつかのアイデアを選んだり、もっとうまくやれるかもしれません。

どのように機能しますか?


VMWare PowerCLIのインストール後管理者はvSphereを操作するためのコマンドレットにアクセスできます。 PowerShellが動作していてPowerCLIがインストールされている場合、スクリプトは既に動作しているはずです(ところで、Primal Formsではexe'shnikも作成できます)。 次に、PowerCLIが認証とvSphereとの対話を処理します。

起動すると、ウィンドウが表示されます:

画像

vCenterにログインします。

画像



トライアルポートグループ「test」を作成しましょう。

画像

そして彼女を削除する

画像

他の機能との類推によって。



ソースコードはpastebinにあります。

depositfilesの Primal Forms exe'shnik 収集されます。



一般的に-PowerCLIとPowerCLIを組み合わせることで、自動化、管理、監視のための優れた機能が提供されます。 たとえば、vCenterにプラグインを固定すると、PowerCLIによって毎朝作成され、以下に関する情報を表示する仮想インフラストラクチャのステータスに関するhtmlレポートが別のタブに表示されます。





最後に、貴重なヒントやアドバイスについてvmwareコミュニティフォーラムに感謝します。Mikhailmichigunに 、VMWare vSphereなどの人気のある仮想化プラットフォームの研究を始めた本と、HP Training Centerの優れた教師であるMaxim Moshkovに感謝します。 VMWareコース。おかげで、VCP410とVCP510を渡すことができ、実際、多くの新しいことを学ぶことができました。



All Articles