vars_sb_task.ymlを呼び出すYAMLファイルにパラメーターのリストがあります。
---
type: taskWindows
actions:
abortActions: []
emailNotifications: []
setVariableActions: []
snmpNotifications: []
systemOperations: []
agent: test
name: "Test"
summary: "Test"
...
sb.ps1と呼ばれるストーンブランチタスク作成用の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
}
このような関数を呼び出したい:
$response = Stonebranch.Create.Task.Windows -Sb_base_uri $Sb_base_uri -Auth_filename $Auth_filename -Method POST -Body $body
ここに質問があります:vars_sb_task.ymlのすべてのパラメーターを$ bodyに渡したいのですが、Ansibleを使用してそれを行う方法を知っている人はいますか?そのsb.ps1をAnsibleを使用して別のWindowsサーバーにプッシュするつもりなので。
または、Ansibleを使用する方法がない場合は、Powershellを使用してそのymlファイルを渡す方法を教えてください。私は両方の分野でかなり新しいです、あなたの助けに感謝します。
**編集:vars_sb_task.ymlを使用してプレイブックを作成しようとしました:
---
- name: test vars file
hosts: windows
vars_files:
- /home/tung/ansible_test/vars_sb_win_task.yml
tasks:
- name: test vars
debug:
msg: "{{ agent }}"
このプレイブックを実行すると、エージェントに値テストがあるため、「test」が返されます。単一の変数の場合、Powershellスクリプトに渡すことができますが、問題は、yamlファイルのすべての変数を$ bodyに渡す必要があることです。ここからどうしたらいいのかわからない。Ansibleのドキュメントを読み込もうとしていますが、はっきりしていません。yamlファイルでこれらの変数を処理してPowershellの単一の変数(この場合は$ body)に渡す方法の例を誰かが書くことができれば素晴らしいでしょう
説明したように、次のようなことを試すことができます。
---
- name: test vars file
hosts: localhost
vars_files:
- vars_sb_task.yml
tasks:
- name: Add File to var
set_fact:
body: "{{ item }}"
with_file: "vars_sb_task.yml"
- name: test vars
debug:
msg: "{{ body }}"
- name: Run PS
win_shell: ". script1.ps1; Stonebranch.Create.Task.Windows"
args: "-Sb_base_uri $Sb_base_uri -Auth_filename $Auth_filename -Method POST -Body {{ body }}"
register: _out
最初の部分はファイルを"{{ body }}"
varに保存します。次に、win_shellで使用できます(ここでは、関数を1行でロードする方法の例にすぎません)。私はこの最後の部分をテストしていません。最初にWindowsでコマンドをテストしてから、body
varを使用してコードにコピーします。
bodyvarの結果は次のとおりです。
TASK [Add File to var] *********************************************************************************************************
ok: [localhost] => (item=---
type: taskWindows
actions:
abortActions: []
emailNotifications: []
setVariableActions: []
snmpNotifications: []
systemOperations: []
agent: test
name: "Test"
summary: "Test")
TASK [test vars] ***************************************************************************************************************
ok: [localhost] => {
"msg": "---\ntype: taskWindows\nactions:\n abortActions: []\n emailNotifications: []\n setVariableActions: []\n snmpNotifications: []\n systemOperations: []\nagent: test\nname: \"Test\"\nsummary: \"Test\""
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加