Hướng dẫn thực hiện: Các hành động ABX / vRO Powershell bao gồm các Module bổ sung

vRealize Automation Action Based Extensibility (ABX)vRealize Orchestrator 8.1 hỗ trợ PowerShell như một ngôn ngữ kịch bản giúp tương thích khi viết với Action Based Extensibility (ABX) và mã Workflow. Tuy nhiên, còn có những module phụ thuộc nào mà PowerShell Based ABX & vRealize Orchestration Workflows của khách hàng cần đến?

Giới thiệu chung về ABX/vRO

Có hai phương pháp xây dựng tập lệnh cho các hành động mở rộng của khách hàng:

  1. Viết tập lệnh trực tiếp trong trình chỉnh sửa hành động khả năng mở rộng trong vRealize Automation Cloud Assembly hoặc vRealize Orchestration.
  2. Tạo (các) tập lệnh trên môi trường cục bộ, sau đó bó chúng với bất kỳ phần phụ thuộc nào đó có liên quan vào một gói ZIP, sau đó khách hàng có thể nhập vào vRealize Automation ABX hoặc vRealize Orchestrator.

Trường hợp đầu tiên, chúng ta chỉ cần hướng dẫn tải bất kỳ module cần thiết trực tiếp tại Action Dependencies.

ABX / vRO Powershell 1

Trong ví dụ ABX này, VMware đang tải phiên bản mới nhất cho Module Azure PowerShell dưới dạng phụ thuộc, nhưng xin lưu ý rằng tùy chọn này hợp lệ nếu khách hàng có kết nối với các kho lưu trữ công cộng nơi các module được lưu trữ.

Ở những trường hợp đó, khi khách hàng không có quyền truy cập vào các kho lưu trữ công khai đó, hoặc đơn giản là khách hàng muốn cung cấp các module của riêng mình, khách hàng có thể sử dụng tùy chọn 2, nghĩa là gói các Extensibility Actions Scripts và các module thành một gói ZIP.

Quy trình sau đây cung cấp những câu lệnh để gói PowerShell Script và Module PowerShell của khách hàng vào một tệp zip có thể được sử dụng cho ABX và (hoặc) vRealize Orchestrator, (chúng ta sẽ tập trung vào việc nhập gói tệp trong ABX nhưng cũng đưa ra các đề xuất tương tự áp dụng cho việc thực hiện nó tại vRealize Orchestrator).

Những điều cần lưu ý:

Hãy nhớ sử dụng phần mở rộng .psm1 (đây là tiêu chuẩn cho các module phụ thuộc cho các yêu cầu của công cụ pwsh), thay vì .ps1 phổ biến cho tệp chức năng xử lý (điểm nhập). Điều này có liên quan vì tất cả các phụ thuộc bổ sung đã được đóng gói sẽ được tự động tải, có nghĩa là tất cả các câu lệnh nhập ở đầu tệp không cần thiết và có thể bị xóa.

Ngoài ra, khách hàng nên hướng tới các dịch vụ công cộng chỉ có thể truy cập được sau Proxy, trong trường hợp đó, khách hàng có thể cần chỉ định rõ ràng việc thiếp lập proxy trong bộ mã của mình:

$proxyString = “http://” + $context.proxy.host + “:” + $context.proxy.port  $Env:HTTP_PROXY = $proxyString  $Env:HTTPS_PROXY = $proxyString

Các câu lệnh này sẽ tìm nạp các cài đặt proxy từ đối tượng ngữ cảnh của trình xử lý hàm và đặt nó làm thuộc tính môi trường. Nếu lệnh ghép ngắn hỗ trợ tham số -Proxy, khách hàng cũng có thể chuyển trực tiếp giá trị proxy cho lệnh ghép ngắn PowerShell cụ thể. Lưu ý rằng trong trường hợp khả năng mở rộng ABX, các cài đặt Proxy tự động hóa vRealize tương tự cũng có sẵn.

Điều kiện tiên quyết

  1. vRealize Automation 8.X (được thử nghiệm trên 8.1) hoặc vRealize Automation Cloud với ABX On-Prem.
  2. Ubuntu 18.04.4 LTS.
  3. PowerShell 6.2.3 là phiên bản được khuyến nghị, (tuy nhiên VMware đã có thể cài đặt Module với PowerShell 7.0.0 cho ví dụ này).

Xác minh rằng bạn đã quen thuộc với PowerShellPowerCLI.

VMwre khuyên khách hàng nên sử dụng cùng một phiên bản PowerShell được vận chuyển với vRA 8.1, có thể được tìm thấy tại đây: https://hub.docker.com/r/vmware/powerclicore/

Thông tin chi tiết tại đây: https://github.com/vmware/powerclicore

Điều quan trọng cần đề cập là thời gian chạy chương trình của ABX và vRealize Orchestrator Extensibility dựa trên Linux, do đó, bất kỳ PowerShell dependencies nào được biên dịch trong môi trường Windows đều có thể làm cho gói ZIP đã tạo không sử dụng được để tạo các hành động mở rộng, hãy luôn sử dụng Linux shell (Photon Hệ điều hành thích hợp hơn nhưng Ubuntu 18.04 sẽ hoạt động).

Cài đặt Powershell

Trong Ubuntu 18.04, khách hàng có thể cài đặt PowerShell cho Linux như sau:

sudo apt update  sudo apt -y upgrade  sudo apt-get install -y powershell

Kiểm tra phiên bản bằng cách gõ : pwsh –version

Đầu ra : PowerShell 7.0.0

Cài đặt trước Powershell Modules trong thư mục root

Trong hệ thống dàn dựng cục bộ, hãy tạo thư mục root ABX cho chính mình

mkdir abx-powershell  cd abx-powershell  mkdir Modules  

Cài đặt Modules từ PSGallery Repository

pwsh -c Get-PSRepository    Name                      InstallationPolicy   SourceLocation  —-                      ——————   ————–  PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2 

Trong ví dụ này, VMware sẽ thử sử dụng Az Modules

pwsh -c “Save-Module -Name Az -Path ./Modules/ -Repository PSGallery”     

Câu lệnh này sẽ tải xuống tất cả các Az Modules mặc định và lưu chúng vào thư mục Modules ở mức độ tập lệnh root, khách hàng có thể xóa thủ công những cái không cần và (hoặc) cài đặt cụ thể những cái mà tập lệnh của khách hàng yêu cầu (để tải nhanh hơn vào phần thực hiện).

root@ubuntu_server:~/abx-powershell/Modules#  ls -lrt  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Maintenance  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Media  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Monitor  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.OperationalInsights  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.PrivateDns  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.RecoveryServices  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Resources  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.ServiceBus  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.ServiceFabric  ……  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Accounts  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Accounts  drwxr-xr-x 3 root root 4096 May 22 02:50 Az.Advisor  root@ubuntu_server:~/abx-powershell/Modules#       

PowerShell Script chính và duy nhất mà VMware sử dụng

handler.psm1

Đây là phần trích xuất của toàn bộ tập lệnh. Lưu ý rằng các câu lệnh liên quan đến Proxy vì vRealize Automation nằm sau proxy và PowerShell cần tải cài đặt proxy từ môi trường, chúng ta cũng không cần chỉ định rõ ràng cần tải modules nào, điều này sẽ được thực hiện tự động.

handler.psm1

function handler {    Param($context, $inputs)    $inputsString = $inputs | ConvertTo-Json -Compress    $DebugPreference = “Continue”      $proxyString = “http://” + $context.proxy.host + “:” + $context.proxy.port    $Env:HTTP_PROXY = $proxyString    $Env:HTTPS_PROXY = $proxyString      Write-Host $proxyString    $proxyUri = new-object System.Uri($proxyString)    [System.Net.WebRequest]::DefaultWebProxy = new-object System.Net.WebProxy ($proxyUri)    Write-Host “Inputs were $inputsString”    # From this point it is my script making calls to MS Azure    ……..

Bây giờ, hãy đóng gói tập lệnh handler.psm1 chính với các Module được cài đặt tùy chỉnh, một lần nữa, tập lệnh và các phần tử phụ thuộc phải được lưu trữ ở mức độ root của gói ZIP.

Khi tạo gói ZIP trong môi trường Linux, chúng ta có thể gặp sự cố trong đó nội dung gói không được lưu trữ ở cấp cơ sở, hãy đảm bảo tạo gói bằng cách chạy lệnh zip -r trong chương trình command-line shell.

root@ubuntu_server:~/powershell/abx-powershell# zip -r –exclude=*.zip -X VRA_Powershell_vro_05.zip .

Tại thời điểm này, chúng ta có thể sử dụng gói ZIP để tạo một tập lệnh hành động có khả năng mở rộng bằng cách nhập nó tại vRealize Automation ABX hoặc vRealize Orchestrator.

Liên kết dự án của khách hàng

Trong ABX, di chuyển đến Cloud Assembly, Extensibility, Actions, Create a New Action và liên kết với Dự án của chính khách hàng.

ABX / vRO Powershell 2

Chọn PowerShell và Thay vì Write Script, Chọn Import Package và nhập tệp zip của bạn. (ví dụ: VRA_Powershell_vro_05.zip là một hành động làm việc được sắp xếp trước)

ABX / vRO Powershell 3

Xác định đầu vào theo yêu cầu của tập lệnh (xem giá trị mặc định bên dưới), lưu ý rằng đối với tất cả các hành động, cho dù chúng được thực thi trong ABX hay vRealize Orchestration, chúng cần phải có Chức năng chính khớp với tên của tệp tập lệnh có chứa điểm vào lệnh và tên thực của điểm vào lệnh, trong trường hợp này là handler.handler.

Chọn Nhà cung cấp FaaS yêu thích là On Prem

Lưu kiểm tra hành động ABX, nhấp vào See details để xem lại quá trình thực thi PowerShell Script, lần đầu tiên sẽ mất nhiều thời gian hơn để thực thi so với hoạt động thông thường, do nó cần tạo và tải hành động lần đầu tiên với tất cả các phụ thuộc của nó, các lần thực hiện tiếp theo sẽ nhanh hơn.

ABX / vRO Powershell 4

Trong vRealize Orchestration, chúng ta có thể chỉ cần tạo một Action mới với các cài đặt tương tự đã được chỉ ra trước đây cho ABX:

ABX / vRO Powershell 5

Tất nhiên, trên cả hai trường hợp, khách hàng có thể thay đổi đầu vào, đặt thời gian chờ tùy chỉnh và giới hạn nếu cần.

Biên dịch bởi Tuyết Hiền – Pacisoft.com