>

YAML 파일 호출에 매개 변수 목록이 있습니다. vars_sb_task.yml :

---
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 설명서를 읽으려고 시도했지만 실제로 명확하지는 않습니다. Powershell에서 yaml 파일단일 변수로(이 경우 $body)

를 사용하여 이러한 변수를 처리하고 전달하는 방법을 예제로 작성할 수 있다면 좋을 것입니다.
  • 답변 # 1

    토론 한 바와 같이, 다음과 같은 것을 시도해 볼 수 있습니다 :

    ---
    - 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과 함께 사용할 수 있습니다 (여기서는 함수를 한 줄에로드하는 방법에 대한 예일뿐입니다). 나는이 마지막 부분을 테스트하지 않았습니다. 먼저 Windows에서 명령을 테스트 한 다음 body 를 사용하여 코드에 복사하십시오.  var.

    본문 var의 결과는 다음과 같습니다.

    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\""
    }
    
    

관련 자료

  • 이전 geepack R에서 결 측값 처리
  • 다음 machine learning - 파이썬에서 잘린 svd 모델을 저장하는 방법