如何在Ansible中使用Get-AnsibleParam,内置函数

时间:2018-05-16 07:34:51

标签: powershell ansible

正如瓷砖所说,我想知道使用这个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文件(所有这些)中的变量放入PS脚本中的$ body吗?我试着阅读文档,但它是不太清楚如何使用该功能:

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

请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

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