2016-09-15 3 views
0

다음은 AIX 서버에서 WAS 인스턴스를 중지하려고하는 게임입니다.스크립트에서 변수로 변수를 전달하십시오.

--- 
    - hosts: all 
    vars_files: 
    - /etc/ansible/conf/var.yml 
    tasks: 
    - name: stop websphere instances 
     script: {{ was_script }} {{ item }} 
     with_items: "{{ was_inst }}" 

was_script와 was_inst는 var.yml에 변수로 나열됩니다. 이제 was_script 대신 스크립트를 하드 코드하면 작동합니다. 그러나 변수로 부르는 경우 작동하지 않습니다. 그것은 YAML 구문 오류라고 말하지만 오류가 무엇인지 알 수는 없습니다.

+0

오류 메시지를 붙여주세요. 그것에 답변이 있습니다. –

+0

'오류! 구문 오류 YAML.' 로드하는 동안은'기분을 상하게하는 선으로 나타납니다' '- 이름 : {{was_script}} {{항목}}' '^ here' – kottapar

+0

그리고있다 : '스크립트 instances' 스피어를 중지 다음 줄에 무엇을해야하는지 설명. –

답변

1

화살표 ^ herescript: {{ was_script }} {{ item }} 라인을 가리 킵니다.
중괄호로 시작하므로 script: "{{ was_script }} {{ item }}"을 인용해야합니다.
YAML gotchas에 대한 메모가 문서에 있습니다.

+0

대단히 감사합니다. 저도 도움이되었지만 새로운 오류가 발생했습니다. 이제 스크립트에서 스크립트를 찾을 수 없다는 오류 메시지가 표시됩니다. 이상한 이유로 그것은 var.yml에 언급 된 디렉토리 대신에/etc/ansible/playbooks를 검색 중입니다. ''failed ': true, msg ":"파일 또는 모듈이 존재하지 않습니다 :/etc/ansible/playbooks/'디버거가 호출 됨 (디버그) p vars [ 'was_script'] [u '/ tmp/stop_was.sh' "]") ' – kottapar

+0

디버그를 사용하여 실행 한 결과, TMP/stop_was.sh was_script ']가 ='/ TMP/stop_was, SH '] (디버그) [바르' (디버그) p가 바르 [ 'was_script'] '/ TMP/stop_was.sh'' 및 그것은 그 후 잘 달렸다. – kottapar

관련 문제