2017-11-21 3 views
0

나는 오동작을 사용하여 원격 호스트에 halyard를 설치하기 위해 플레이 북을 만들려고합니다. 태스크 중 하나는 "InstallHalyard.sh"랩퍼 스크립트를 실제 설치 프로그램 (참조 : https://www.spinnaker.io/setup/install/halyard/)으로 실행하는 것입니다.ansible - 무언가를 통해 InstallHalyard.sh 스크립트를 실행할 때 아무 일도 일어나지 않습니다.

오류/오류는 없지만 InstallHalyard.sh 스크립트가 실행되지 않은 것처럼 아무 것도 변경되지 않았습니다. 비록 수동 명령을 입력하면됩니다. 다른 비슷한 작업이 완벽하게 작동합니다.

당신은 InstallHalyard.sh 스크립트 구현을 볼 수 here

무슨 일 약 어떤 생각?

어떤 도움을 주시면 감사하겠습니다
name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 

, 대단히 감사합니다 :)

편집 : 이미 스크립트를 사용하여 시도

, 명령을 여기

내 작전의 작업입니다 , 및 쉘 모듈.

참고는 InstallHalyard.sh 스크립트는 ENV 변수를 전달하여 자신을 호출 내가 Ansible가있다대로 작동하지 않습니다 스크립트 내부의 "수출"작업을 의심하고있어

컬 -O를 할 필요합니다 환경 변수에 대한 다른 이해. (예를 들어, ansible는 "$ 홈"대신 사용하는 "{{ansible_env.HOME을}}"인식하지 않습니다.)

편집 :

내가 스크립트가 포크를 만드는 작업을 수행 발견, 이런 종류의 작업을 처리 할 수 ​​있습니까?

로컬 호스트에서 테스트 한 결과와 동일한 결과가 나타납니다.

솔루션은

이 때문에 ansible의 환경 바르의 다른 해석이다. 스크립트를 수동으로 실행하면 래퍼가 환경 변수를 설정하고 다음 스크립트 호출에 전달합니다.이 스크립트 호출은 수행 할 수 없습니다. 그래서 스크립트

여기

내 개정 작업입니다 (단 2 줄을 추가) 실행하기 전에 ansible 모듈을 수동으로 환경 VAR을 설정하는 것입니다 무엇을 : I 출력을 디버깅 어떻게

name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    environment: 
    HAL_USER: "{{ ansible_env.USER }}" 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 
+0

기본 경로 디렉토리를 확인해야하며, 상대 경로를 InstallHalyard.sh 스크립트에 대한 실행 파일의 절대 경로로 바꿀 수 있습니다.그리고 sudo는 root 사용자임을 의미합니다. 환경 변수는 루트를 기반으로합니다. – Daein

+0

: {{ansible_env.HOME}} /. spinnaker/InstallHalyard.sh "명령을 사용할 수 있습니까? –

+0

@Daein {{ansible_env.HOME}}은/home/user 인 현재 사용자 $ HOME env 변수를 제공합니다. 절대 경로를 암시한다는 것을 의미합니다. 수동 경로를 수동으로 입력하여 시도했지만 여전히 작동하지 않습니다. –

답변

0

문제는 정말입니다 실패한 명령. 명령이 유용한 오류 메시지와 함께 실패하지만 그 메시지가 어디에도 표시되지 않는다고 생각합니다. 여기

이 실패 스크립트를 디버깅하기 위해 예입니다

-name: Run InstallHalyard.sh 
    become: yes 
    become_user: sudo 
    shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh" 
    register: output 

- debug: msg="{{ output.stdout }}" 

- debug: msg="{{ output.stderr }}" 

그것이 당신을주고 있었다 어떤 오류 메시지가 표시입니다보십시오.

+0

예. 나는 실제로 무언가를 쓸 때 장황한 (-v) 작업을보고 오류를 얻었습니다. 답변 해주셔서 감사합니다 –