Shutdown dengan baik hypervisor VMWare ESXi pada tingkat baterai kritis UPS APC

Ada banyak artikel di luar sana tentang cara mengkonfigurasi PowerChute Business Edition dan cara menyambung ke VMWare dari PowerShell, tetapi entah bagaimana saya tidak dapat menemukan semua ini di satu tempat, dengan penjelasan poin-poin halusnya. Tapi mereka ada.

1. Pendahuluan

Terlepas dari kenyataan bahwa kita memiliki hubungan dengan energi, masalah dengan listrik terkadang muncul. Di sinilah UPS berperan, tetapi sayangnya, baterainya tidak bertahan lama. Apa yang harus dilakukan? Matikan!

Meskipun semua server bersifat fisik, semuanya berjalan baik, PowerChute Business Edition membantu kami. Gratis, untuk 5 server, itu sudah cukup. Agen, server, dan konsol dipasang pada satu mesin. Saat akhir semakin dekat, agen cukup menjalankan file perintah yang mengirimkan shutdown.exe /s /m ke server tetangga, dan kemudian mematikan OS-nya. Semua orang masih hidup.
Lalu tibalah waktunya untuk mesin virtual.

2. Latar belakang dan refleksi

Jadi apa yang kita punya? Tidak ada sama sekali - satu server fisik dengan Windows Server 2008 R2 dan satu hypervisor dengan beberapa mesin virtual, termasuk Windows Server 2019, Windows Server 2003, dan CentOS. Dan UPS lainnya – APC Smart-UPS.

Kami pernah mendengar tentang NUT, namun belum sempat mempelajarinya, kami hanya menggunakan yang ada yaitu PowerChute Business Edition.

Hypervisor dapat mematikan mesin virtualnya sendiri; yang tersisa hanyalah memberi tahu bahwa sudah waktunya. Ada hal yang berguna VMWare.PowerCLI, ini adalah ekstensi untuk Windows Powershell yang memungkinkan Anda terhubung ke hypervisor dan memberi tahu semua yang Anda butuhkan. Ada juga banyak artikel di luar sana tentang pengaturan PowerCLI.

3. Proses

UPS secara fisik terhubung ke port com server 2008, untungnya ada di sana. Meskipun ini tidak penting - dimungkinkan untuk terhubung melalui konverter antarmuka (MOXA) ke server Windows virtual mana pun. Selanjutnya, semua tindakan dilakukan pada mesin yang terhubung dengan UPS - Windows Server 2008, kecuali dinyatakan lain secara eksplisit. Agen PowerChute Business Edition telah diinstal di dalamnya. Inilah poin halus pertama: layanan agen harus diluncurkan bukan dari sistem, tetapi dari pengguna, jika tidak, agen tidak akan dapat menjalankan file cmd.

Selanjutnya kita install .Net Framework 4.7. Reboot diperlukan di sini, meskipun framework tidak secara eksplisit memintanya setelah instalasi, jika tidak, framework tidak akan melangkah lebih jauh. Setelah itu, pembaruan mungkin masih datang, yang juga perlu diinstal.

Selanjutnya kami menginstal PowerShell 5.1. Juga memerlukan reboot, meskipun dia tidak bertanya.
Selanjutnya, instal PowerCLI 11.5. Versi yang cukup baru, maka persyaratan sebelumnya. Bisa lewat internet, banyak artikel tentang ini, tapi kita sudah mendownloadnya, jadi kita copy saja semua filenya ke folder Modules.

Diperiksa:

Get-Module -ListAvailable

Oke, kami melihat kami telah menginstal:

Import-Module VMWare.PowerCLI

Ya, konsol Powershell tentu saja diluncurkan sebagai Administrator.

Pengaturan Powershell.

  • Izinkan eksekusi skrip apa pun:

Set-ExecutionPolicy Unrestricted

  • Atau Anda hanya dapat mengizinkan sertifikat skrip diabaikan:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Izinkan PowerCLI terhubung ke server dengan sertifikat yang tidak valid (kedaluwarsa):

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Sembunyikan keluaran pesan PowerCLI tentang bergabung dengan program pertukaran pengalaman, jika tidak, akan ada banyak informasi yang tidak perlu di log:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Simpan kredensial pengguna untuk masuk ke host VMWare agar tidak ditampilkan secara eksplisit di skrip:

New-VICredentialStoreItem -Host address -User user -Password 'password'

Pengecekan akan menunjukkan siapa yang kita selamatkan:

Get-VICredentialStoreItem

Anda juga dapat memeriksa koneksi: Alamat Connect-VIServer.

Scriptnya sendiri, misalnya: terhubung, dimatikan, terputus untuk berjaga-jaga, opsi berikut dimungkinkan:


    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false

4. Default.cmd

File batch yang sama yang diluncurkan oleh agen APC. Itu terletak di β€œC:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles”, dan di dalam:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -File "C:...shutdown_hosts.ps1"
Sepertinya semuanya sudah dikonfigurasi dan diperiksa, kami bahkan meluncurkan cmd - berfungsi dengan benar, mematikannya.

Kami menjalankan tes file perintah dari konsol APC (ada tombol Tes di sana) - tidak berhasil.

Ini dia, momen canggung ketika semua pekerjaan yang dilakukan tidak menghasilkan apa-apa.

5. Katarsis

Kami melihat pengelola tugas, kami melihat cmd berkedip, PowerShell berkedip. Mari kita lihat lebih dekat - cmd *32 dan, karenanya, PowerShell *32. Kami memahami hal itu Layanan agen APC adalah 32-bit, yang berarti menjalankan konsol yang sesuai.

Luncurkan PowerShell x86 sebagai administrator, instal dan konfigurasikan PowerCLI dari langkah 3 lagi.

Baiklah, mari kita ubah saluran panggilan PowerShell:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. Akhir yang bahagia!

Sumber: www.habr.com

Tambah komentar