Tắt đúng trình ảo hóa VMWare ESXi khi mức sạc pin của APC UPS ở mức tới hạn

Có rất nhiều bài viết về cách định cấu hình PowerChute Business Edition và cách kết nối với VMWare từ PowerShell, nhưng không hiểu sao tôi không thể tìm thấy tất cả những điều này ở một nơi, với phần mô tả về những điểm tinh tế. Nhưng họ tồn tại.

1. Nhập cảnh

Mặc dù thực tế là chúng ta có mối liên hệ nào đó với năng lượng, nhưng đôi khi vẫn nảy sinh các vấn đề về điện. Đây là lúc UPS phát huy tác dụng, nhưng than ôi, pin của nó không dùng được lâu. Phải làm gì? Tắt!

Mặc dù tất cả các máy chủ đều là máy chủ vật lý nhưng mọi thứ vẫn diễn ra tốt đẹp, PowerChute Business Edition đã giúp chúng tôi giải quyết vấn đề này. Miễn phí, cho 5 máy chủ, thế là khá đủ. Một tác nhân, máy chủ và bảng điều khiển đã được cài đặt trên một máy. Khi gần kết thúc, tác nhân chỉ cần thực thi một tệp lệnh gửi lệnh tắt máy.exe /s /m đến các máy chủ lân cận, sau đó tắt hệ điều hành của nó. Mọi người đều còn sống.
Sau đó là thời gian dành cho máy ảo.

2. Bối cảnh và sự phản chiếu

Vậy chúng ta có gì? Không có gì cả - một máy chủ vật lý với Windows Server 2008 R2 và một bộ ảo hóa với một số máy ảo, bao gồm Windows Server 2019, Windows Server 2003 và CentOS. Và một UPS khác – APC Smart-UPS.

Chúng tôi đã nghe nói về NUT nhưng vẫn chưa bắt đầu nghiên cứu về nó; chúng tôi chỉ sử dụng những gì có sẵn, cụ thể là PowerChute Business Edition.

Trình ảo hóa có thể tự tắt các máy ảo của nó; tất cả những gì còn lại là nói với nó rằng đã đến lúc. Có một thứ hữu ích như VMWare.PowerCLI, đây là một tiện ích mở rộng dành cho Windows Powershell cho phép bạn kết nối với bộ ảo hóa và cho nó biết mọi thứ bạn cần. Ngoài ra còn có nhiều bài viết về cài đặt PowerCLI.

3. Quy trình

UPS đã được kết nối vật lý với cổng com của máy chủ 2008, thật may là nó vẫn ở đó. Mặc dù điều này không quan trọng - có thể kết nối thông qua bộ chuyển đổi giao diện (MOXA) với bất kỳ máy chủ Windows ảo nào. Hơn nữa, tất cả các hành động được thực hiện trên máy được kết nối với UPS - Windows Server 2008, trừ khi có quy định rõ ràng khác. Tác nhân PowerChute Business Edition đã được cài đặt trên đó. Đây là điểm tinh tế đầu tiên: dịch vụ tác nhân phải được khởi chạy không phải từ hệ thống mà từ người dùng, nếu không tác nhân sẽ không thể thực thi tệp cmd.

Tiếp theo chúng tôi cài đặt .Net Framework 4.7. Ở đây cần phải khởi động lại, ngay cả khi khung không yêu cầu rõ ràng sau khi cài đặt, nếu không thì nó sẽ không tiến xa hơn nữa. Sau đó, các bản cập nhật vẫn có thể đến và cũng cần được cài đặt.

Tiếp theo chúng tôi cài đặt PowerShell 5.1. Cũng yêu cầu khởi động lại, ngay cả khi anh ấy không hỏi.
Tiếp theo, cài đặt PowerCLI 11.5. Khá là một phiên bản gần đây, do đó các yêu cầu trước đó. Bạn có thể thực hiện qua Internet, có rất nhiều bài viết về việc này nhưng chúng tôi đã tải xuống rồi nên chỉ sao chép tất cả các tệp vào thư mục Mô-đun.

Đã kiểm tra:

Get-Module -ListAvailable

Ok, chúng tôi thấy chúng tôi đã cài đặt:

Import-Module VMWare.PowerCLI

Có, bảng điều khiển Powershell tất nhiên được khởi chạy với tư cách Quản trị viên.

Cài đặt Powershell.

  • Cho phép thực thi bất kỳ tập lệnh nào:

Set-ExecutionPolicy Unrestricted

  • Hoặc bạn chỉ có thể cho phép bỏ qua chứng chỉ tập lệnh:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Cho phép PowerCLI kết nối với máy chủ có chứng chỉ không hợp lệ (đã hết hạn):

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Ngăn chặn đầu ra của thông báo PowerCLI về việc tham gia chương trình trao đổi kinh nghiệm, nếu không sẽ có nhiều thông tin không cần thiết trong nhật ký:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Lưu thông tin đăng nhập của người dùng để đăng nhập vào máy chủ VMWare để không hiển thị rõ ràng chúng trong tập lệnh:

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

Việc kiểm tra sẽ hiển thị những người chúng tôi đã lưu:

Get-VICredentialStoreItem

Bạn cũng có thể kiểm tra kết nối: Địa chỉ Connect-VIServer.

Bản thân tập lệnh, ví dụ: được kết nối, tắt, ngắt kết nối, chỉ trong trường hợp, có thể có các tùy chọn sau:


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

4. Mặc định.cmd

Tệp bó tương tự được khởi chạy bởi tác nhân APC. Nó nằm trong “C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles” và bên trong:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Tệp "C:...shutdown_hosts.ps1"
Có vẻ như mọi thứ đã được cấu hình và kiểm tra, chúng tôi thậm chí còn khởi chạy cmd - nó hoạt động chính xác, tắt nó đi.

Chúng tôi chạy kiểm tra tệp lệnh từ bảng điều khiển APC (có nút Kiểm tra ở đó) - nó không hoạt động.

Đây rồi, khoảnh khắc khó xử khi mọi công việc đã làm đều chẳng dẫn đến kết quả gì.

5. Thanh tẩy

Chúng ta nhìn vào trình quản lý tác vụ, chúng ta thấy đèn flash cmd, đèn flash powershell. Chúng ta hãy xem xét kỹ hơn - cmd *32 và theo đó, powershell *32. Chúng tôi hiểu rằng Dịch vụ đại lý APC là 32-bit, có nghĩa là nó chạy bảng điều khiển tương ứng.

Chúng tôi khởi chạy powershell x86 với tư cách quản trị viên, đồng thời cài đặt và định cấu hình lại PowerCLI từ bước 3.

Chà, hãy thay đổi dòng lệnh gọi powershell:

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

6. Kết thúc có hậu!

Nguồn: www.habr.com

Thêm một lời nhận xét