Создайте образец сценария для вызова API-интерфейса проекта vRealize Automation с помощью PowerShell.

Процедура

  1. На локальном компьютере откройте оболочку командной строки.
  2. Создайте папку vro-powershell-vra.
    mkdir vro-powershell-vra
  3. Перейдите в папку vro-powershell-vra.
    cd vro-powershell-vra
  4. Создайте сценарий PowerShell с именем handler.ps1.
    touch handler.ps1
    Сценарий handler.ps1 должен задавать одну функцию, которая принимает два аргумента: контекст выполнения рабочего процесса vRealize Orchestrator и связанные входные данные vRealize Orchestrator.
    function Handler {
      Param($context, $inputs)
     
     
      $inputsString = $inputs | ConvertTo-Json -Compress
      Write-Host "Inputs were $inputsString"
    }
    Примечание: При использовании стандартных библиотек ведения журнала все, что регистрируется в действии со сценарием, также отображается в журнале рабочего процесса. Входные данные и возвращаемые значения сценария должны иметь соответствующие входные параметры и типы возвращаемых значений, настроенные в клиенте vRealize Orchestrator. Например, входные данные vRAUrl в сценарии должны иметь соответствующий входной параметр, именуемый vRAUrl, в клиенте vRealize Orchestrator. Аналогичным образом, если сценарий возвращает строковое значение, тип возвращаемого значения, настроенный в клиенте vRealize Orchestrator, также должен быть строковым. Если действие возвращает сложный объект, можно использовать тип возвращаемых значений Properties или Composite Type.
  5. Установите модуль утверждений PowerShell.
    Важно!: Сторонние модули зависимостей должны быть установлены в папке корневого уровня в главной папке сценария vro-powershell-vra. В этом примере необходимо создать папку Modules для модуля утверждений.
    1. а. Создайте папку Modules.
      mkdir Modules
    2. б. Установите модуль утверждений.
      pwsh -c "Save-Module -Name Assert -Path ./Modules/ -Repository PSGallery"
  6. Добавьте модуль утверждений в сценарий handler.ps1.
    Import-Module Assert
     
    function Handler {
      Param($context, $inputs)
     
     
      $inputsString = $inputs | ConvertTo-Json -Compress
      Write-Host "Inputs were $inputsString"
    }
  7. Создайте запрос GET к API-интерфейсу проекта vRealize Automation, где используется командлет Invoke-RestMethod.
    $token = ''
    $vRAUrl = ''
    $projectsUrl = $vRAUrl + "/project-service/api/projects"
    $response = Invoke-RestMethod $projectsUrl + '/iaas/api/projects' -Headers @{'Authorization' = "Bearer $token"} -Method 'GET'
     
    Write-Host "Got response: $response"
  8. Задайте значения token и vRAUrl .
    1. а. Получите маркер доступа с помощью API-интерфейса службы удостоверений vRealize Automation. См. раздел Получение маркера доступа для API-интерфейса vRealize Automation.
    2. б. Добавьте атрибуты модуля утверждений Assert-NotNull и Assert-Type.
      $token | Assert-NotNull
      $token | Assert-Type String
    3. в. Для значения vRAUrl настройте сценарий таким образом, чтобы в нем использовался входной параметр vRealize Orchestrator с тем же именем.
      $vRAUrl = $inputs.vRAUrl
    4. г. Добавьте новые значения в файл handler.ps1.
      Import-Module Assert
      $ErrorActionPreference = "Stop"
      function Handler {
        Param($context, $inputs)
        $token = "ACCESS_TOKEN"
        $token | Assert-NotNull
        $token | Assert-Type String
        $vRAUrl = $inputs.vRAUrl
        $projectsUrl = $vRAUrl + "/project-service/api/projects"
        $response = Invoke-RestMethod $projectsUrl -Headers @{'Authorization' = "Bearer $token"} -Method 'GET'
       
        Write-Host "Got response: $response"
       
        return $response
      }
      Примечание: Поскольку ответ API-интерфейса проекта vRealize Automation возвращается в формате JSON, для действия vRealize Orchestrator используйте тип возвращаемого значения Properties или Composite Type.
  9. Создайте пакет ZIP, содержащий файл handler.ps1 и папку Modules модуля утверждения.
    
    zip -r --exclude=*.zip -X vro-powershell-vra.zip .

Дальнейшие действия

Импортируйте сценарий PowerShell в действие vRealize Orchestrator. См. раздел Создание действий в клиенте vRealize Orchestrator.