Sức mạnh phi thường: Tự động hóa các nút sẵn sàng cho Dell EMC vSAN

Các Node sẵn sàng cho vSAN của Dell EMC có Mô-đun Nhận dạng hoạt động ở cấp độ thấp nhất của một node và cung cấp cho máy chủ các tính năng và đặc điểm đặc biệt. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng các thuộc tính của Mô-đun Nhận dạng để tự động hóa các tác vụ trong môi trường vSphere.

Hãy bắt đầu bằng cách xác định tất cả các Node Dell EMC vSAN Ready trong môi trường của chúng ta và hiển thị một số thông tin về chúng, chẳng hạn như phiên bản BIOS của từng máy chủ và phiên bản vSphere. Sau khi tìm hiểu về các máy chủ trong môi trường, chúng ta sẽ khám phá những máy ảo (VM) nào đang chạy trên các máy chủ đó. Chúng ta sẽ thực hiện tất cả những việc này thông qua PowerCLI của VMware , một plug-in cho Microsoft PowerShell.

Lưu ý : Chúng ta cũng có thể dễ dàng thực hiện việc này bằng các công cụ khác cho vSphere như Python (với pyVmomi), Ansible và nhiều công cụ khác.

Môi trường chúng tôi đang sử dụng là một môi trường nhỏ, sử dụng ba Node Dell EMC vSAN Ready R740 với các mô-đun nhận dạng. Cả ba node đều đang chạy ESXi 7.0 U2 (vSAN 7.0 Update 2). VMware vSAN sử dụng cấu hình flash hoàn toàn. Mã nguồn chúng tôi đang thảo luận trong bài viết này sẽ hoạt động trên các Node Dell EMC vSAN Ready hiện tại và các bản phát hành vSphere hiện tại.

Mã được hiển thị bên dưới có vẻ tầm thường, nhưng bạn có thể sử dụng nó làm nền tảng để tạo ra các tập lệnh mạnh mẽ! Điều này mở ra nhiều khả năng tự động hóa cho các tổ chức. Nó cũng giúp họ tiến xa hơn trên hành trình vận hành tự động. Nếu bạn chưa quen với vận hành tự động, hãy đọc sách trắng này để xem tổ chức của bạn đang ở đâu với tự động hóa. Sau khi đọc, hãy cân nhắc xem bạn muốn tổ chức của mình đi đến đâu.

Chúng tôi sẽ không đề cập đến nhiều chi tiết cần thiết để xây dựng và chạy các tập lệnh này, chẳng hạn như kết nối với môi trường vSphere. Có rất nhiều blog tuyệt vời đề cập đến những chi tiết này, và chúng tôi muốn tập trung vào mã cho Dell EMC vSAN Ready Nodes.

Trong khối mã đầu tiên này, chúng ta bắt đầu bằng cách tìm tất cả các Node Dell EMC vSAN Ready trong môi trường của mình. Chúng ta sử dụng vòng lặp ForEach-Object để thực hiện việc này.

Get-VMhost -State "đã kết nối" | ForEach-Object { 
     nếu ($_.ExtensionData.hardware.systemInfo.model.contains("Nút sẵn sàng vSAN")){
         tiếng vang "======================================================"
         echo "Chi tiết hệ thống"
         echo "Mô hình: " $_.ExtensionData.hardware.systemInfo.model
         echo "Thẻ dịch vụ: " $_.ExtensionData.hardware.systemInfo.serialNumber
         echo "Phiên bản BIOS: " $_.ExtensionData.hardware.biosInfo.biosVersion
         echo "Bản dựng ESXi: " $_.ExtensionData.config.product.build 
     }
}

Đoạn mã này giả định rằng chúng ta đã kết nối với môi trường vSphere bằng lệnh Connect-VIServer. Sau đó, nó tạo chế độ xem tất cả các máy chủ trong môi trường bằng lệnh Get-VMhost, kết quả của lệnh này được truyền đến vòng lặp ForEach-Object bằng ký hiệu | (ống đứng). Sau đó, chúng ta lặp qua chế độ xem các máy chủ này bằng lệnh ForEach-Object và xem thuộc tính hardware.systemInfo.model của từng máy chủ. Đối tượng được tập trung, một trong những máy chủ được phát hiện, được biểu thị bằng biến $_ và để truy cập các thuộc tính của đối tượng máy chủ, chúng ta sử dụng thuộc tính ExtensionData. Chúng ta kiểm tra từng máy chủ bằng phương thức có điều kiện, .contains(), được thêm vào cuối thuộc tính chúng ta muốn kiểm tra. Sử dụng phương thức .contains, chúng ta kiểm tra xem hardware.systemInfo.model có chứa “vSAN Ready Node” hay không. Chuỗi này là một thuộc tính duy nhất đối với Dell EMC vSAN Ready Node và Identity Module. Thuộc tính này được thiết lập tại nhà máy khi Identity Module được cài đặt.

Nếu hệ thống là một Node Dell EMC vSAN Ready có Mô-đun Nhận dạng, chúng tôi sẽ hiển thị thông tin từ hardware.systemInfo và hardware.biosInfo, cụ thể là phiên bản BIOS của hệ thống. Chúng tôi cũng thu thập bản dựng vSphere của máy chủ bằng thuộc tính config.product của máy chủ.

Khi lặp qua từng máy chủ, chúng tôi chỉ hiển thị các chi tiết này cho các Node Dell EMC vSAN Ready trong môi trường có Mô-đun Nhận dạng. Kết quả đầu ra tương tự như sau:

Các nút còn lại bị loại trừ khỏi kết quả đầu ra hiển thị ở đây:

PS C:> .\IDM_Script.ps1
=================================================
Chi tiết hệ thống
Người mẫu: 
Nút sẵn sàng cho PowerEdge R740 vSAN
Thẻ dịch vụ: 
[đã bị xóa]
Phiên bản BIOS:
 2.1.12
Bản dựng ESXi: 
18538813

Điều này cung cấp thông tin liên quan mà chúng ta có thể sử dụng để tạo báo cáo tự động về môi trường của mình. Bạn cũng có thể sử dụng tập lệnh làm cơ sở cho các dự án tự động hóa lớn hơn. Ví dụ: khi một nút Dell EMC vSAN Ready mới được thêm vào môi trường, một tập lệnh có thể phát hiện sự bổ sung đó, thực hiện một loạt tác vụ cho các nút Dell EMC vSAN Ready mới và thông báo cho nhóm CNTT khi chúng hoàn tất. Các tập lệnh mẫu này có thể được sử dụng như một nguồn cảm hứng cho ý tưởng của riêng bạn.

Tập lệnh tiếp theo sử dụng cùng vòng lặp for như trước để tìm các máy chủ là Dell EMC vSAN Ready Nodes và giờ đây sẽ xem xét những máy ảo nào đang chạy trên máy chủ đó. Từ ví dụ này, chúng ta có thể thấy Mô-đun Nhận dạng đóng vai trò thiết yếu trong việc tự động hóa môi trường ảo từ máy chủ đến máy ảo.

Get-VMhost -state "đã kết nối" | ForEach-Object {
    nếu ($_.ExtensionData.hardware.systemInfo.model.contains("Nút sẵn sàng vSAN")){
        tiếng vang "======================================================"
 
        echo "Chi tiết hệ thống"
        echo "Mô hình: " $_.ExtensionData.hardware.systemInfo.model
        echo "Thẻ dịch vụ: " $_.ExtensionData.hardware.systemInfo.serialNumber
        echo "Phiên bản BIOS: " $_.ExtensionData.hardware.biosInfo.biosVersion
        echo "Bản dựng ESXi: " $_.ExtensionData.config.product.build
        echo "++++++++++++++++++++++++++++++++++++++++++++++++++++" 
        echo "$_ danh sách VM:" 
        Get-VM -Location $_ | ForEach-Object{             
            echo $_.ExtensionData.name 
        }
    }
}

Đoạn mã mới này, được in đậm, được xây dựng dựa trên ví dụ trước bằng cách lặp qua các máy chủ của chúng ta để tìm kiếm “vSAN Ready Node” như trước. Khi tìm thấy máy chủ phù hợp, nó sẽ tạo một chế độ xem mới bằng lệnh Get-VM, bao gồm các máy ảo cho máy chủ đó. Máy chủ được chỉ định bằng tham số -Location, được truyền vào máy chủ hiện tại được biểu thị bằng $_. Sau đó, chúng ta sử dụng một vòng lặp ForEach-Object khác để hiển thị danh sách các máy ảo (VM) trên máy chủ.

Điều này cung cấp ngữ cảnh mã của chúng ta. Nếu một hành động được thực hiện, giờ đây chúng ta có thể xác định phạm vi của hành động đó, không chỉ trên máy chủ mà còn trên khối lượng công việc mà nó đang chạy. Chúng ta có thể bắt đầu xây dựng mã một cách thông minh  trích xuất giá trị lớn hơn từ hệ thống, từ đó mang lại cơ hội tạo ra giá trị lớn hơn cho tổ chức.

Như tôi đã nói trước đó, đây chỉ là điểm khởi đầu cho những gì có thể thực hiện khi xây dựng các tập lệnh PowerCLI cho các Node sẵn sàng vSAN của Dell EMC với Mô-đun Nhận dạng! Các nền tảng tự động hóa khác, chẳng hạn như Ansible, cũng có thể tận dụng các tính năng của mô-đun nhận dạng. Chúng tôi chỉ đề cập đến những điều cơ bản, nhưng còn rất nhiều khả năng vượt ra ngoài các hoạt động khám phá. Những kiến ​​thức quý báu trong blog này sẽ mở ra vô số cơ hội cho bạn xây dựng các hệ thống tự động hóa giúp tăng cường năng lực cho trung tâm dữ liệu của bạn.