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を描画し、ボタンまたは他のコントロールの単純なクリックにコードを追加するだけです。
結果は、次のことができるスクリプトユーティリティです。
- 特定のvSwitchのすべてのESXiホストにポートグループを追加する
- 特定のvSwitchからすべてのホストからポートグループを削除する
- 指定されたMTUを持つ新しいvSwitchをすべてのホストに追加します
- すべてのホストからvSwitchを削除します
- 整合性の確認:ポートグループはすべてのホストで同じですか?
さらにいくつかの追加の利点:
- 各ホストでSSHを有効/無効にします
- 各ホストでSSHの実行に関する警告を有効/無効にします
これを各ホストで手動で行うのは退屈なだけでなく、かなり愚かなことです。 もちろん、ホストプロファイルを使用できますが、そのためには各ホストをメンテナンスモードに変換する必要があります。 また、ホストプロファイルで作業した人は、プロファイルの適用プロセスがまったく速くないことを確認できます。
猫の下のコード例とユーティリティ自体。
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レポートが別のタブに表示されます。
- SSH対応ホスト
- 異なるパッチレベルのホスト
- スナップショットがある仮想マシン
- 長時間実行される仮想マシン
- 指定された以外のNTPを持つホスト
- そして、別のハブラトピカに値するその他の有用で役に立たない情報
最後に、貴重なヒントやアドバイスについてvmwareコミュニティフォーラムに感謝します。Mikhailmichigunに 、VMWare vSphereなどの人気のある仮想化プラットフォームの研究を始めた本と、HP Training Centerの優れた教師であるMaxim Moshkovに感謝します。 VMWareコース。おかげで、VCP410とVCP510を渡すことができ、実際、多くの新しいことを学ぶことができました。