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!

Trong thời gian tất cả các máy chủ đều là máy vật lý, mọi thứ diễn ra suôn sẻ và PowerChute Business Edition chính là vị cứu tinh của chúng tôi. Nó miễn phí, chỉ với 5 đô la. may chủĐiều đó là hoàn toàn đủ. Một tác nhân, máy chủ và bảng điều khiển được cài đặt trên cùng một máy. Khi kết thúc đến gần, tác nhân chỉ đơn giản là thực thi một tệp lệnh gửi shutdown.exe /s /m đến các máy chủ lân cận, và sau đó tắt hệ điều hành của chính nó. Mọi người đều sống sót.
Rồi thời điểm ấy đến. máy ảo.

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

Vậy chúng ta có gì? Chẳng có gì nhiều – chỉ một máy chủ vật lý với... Windows Server Windows Server 2008 R2 và một hypervisor với một số máy ảo, trong đó có... Windows Server 2019 và Windows Server 2003 và CentOSVà một bộ lưu điện 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ự động tắt các máy ảo; bạn chỉ cần báo cho nó biết khi nào cần tắt. Có một công cụ hữu ích gọi là VMWare.PowerCLI, một tiện ích mở rộng cho Windows PowerShell cho phép bạn kết nối với hypervisor và giao tiếp với nó. Ngoài ra, có rất nhiều bài viết về cài đặt PowerCLI trên mạng.

3. Quy trình

Bộ nguồn UPS được kết nối vật lý với cổng COM của máy chủ năm 2008, may mắn thay là có cổng đó. Mặc dù điều này không thiết yếu – vẫn có thể kết nối với bất kỳ máy ảo nào thông qua bộ chuyển đổi giao diện (MOXA). Windows máy chủ. Tất cả các thao tác tiếp theo được thực hiện trên máy mà UPS được kết nối – Windows Server Năm 2008, trừ khi có ghi chú khác. Hệ thống đã cài đặt sẵn phần mềm PowerChute Business Edition. Đâ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" -File "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

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster