Как использовать Get-AnsibleParam, встроенную функцию в Ansible - PullRequest
0 голосов
/ 16 мая 2018

Как сказал тайл, я хотел бы знать, как использовать эту функцию Get-AnsibleParam.Более конкретно, как применить Get-AnsibleParam в этом случае:

У меня есть файл YAML, содержащий некоторые переменные

---
type: taskWindows
actions:
  abortActions: []
  emailNotifications: []
  setVariableActions: []
  snmpNotifications: []
  systemOperations: []
agent: test
name: "Test"
summary: "Test"
...

У меня есть скрипт Powershell:

function Stonebrach.Connect {
param(
    [Parameter(Mandatory=$true)]
    $Sb_uri,
    [Parameter(Mandatory=$true)]
    $Auth_filename,
    [Parameter(Mandatory=$true)]
    $Method,
    [Parameter(Mandatory=$false)]
    $Body
)

$basicAuth=Get-Content "C:\$auth_filename"
$headers = @{
        "Authorization" = $basicAuth
        "Content-Type"="application/json"
}
$RSP=$null

try{
    if ( $body -eq $null ) {
        $response = invoke-restmethod -Uri $Sb_uri -Method $Method -Headers $headers
    }
    else {
        $response = invoke-restmethod -Uri $sb_uri -Method $method -Headers $headers -Body **$body**
    }
    return $response
}
catch{
   $RSP = $_.Exception.Message
   return $RSP
}
}

function Stonebranch.Create.Task.Windows {
param(
    [Parameter(Mandatory=$true)]
    $Sb_base_uri,
    [Parameter(Mandatory=$true)]
    $Auth_filename,
    [Parameter(Mandatory=$true)]
    $Method,
    [Parameter(Mandatory=$true)]
    $Body
)
    Stonebrach.Connect -SB_uri $Sb_base_uri/task -Auth_filename 
$Auth_filename -Method $Method -Body $Body
}

Могу ли я использовать Get-AnsibleParam для получения переменных из файла YAML (все они) в $ body в сценарии PS в этом случае? Я пытался прочитать документацию, но это не оченьясно, как использовать функцию:

https://code.vt.edu/nis-ansible-roles/upstream-ansible/blob/2a751e1753c1fe675ba3d0b1dbc9939c9253ea70/lib/ansible/module_utils/powershell.ps1

Пожалуйста, помогите.Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

Get-AnsibleParam используется для доступа к конкретному параметру, переданному в модуль.Вы не можете использовать его, чтобы получить все переменные из своих плейбуков.

Взгляните на win_ping , например, использование:

$params = Parse-Args $args -supports_check_mode $true

$data = Get-AnsibleParam -obj $params -name "data" -type "str" -default "pong"

if ($data -eq "crash") {
    throw "boom"
}

В этом случае win_pingможет принимать параметр с именем data типа string со значением по умолчанию pong.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...