나는 오동작을 사용하여 원격 호스트에 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"
기본 경로 디렉토리를 확인해야하며, 상대 경로를 InstallHalyard.sh 스크립트에 대한 실행 파일의 절대 경로로 바꿀 수 있습니다.그리고 sudo는 root 사용자임을 의미합니다. 환경 변수는 루트를 기반으로합니다. – Daein
: {{ansible_env.HOME}} /. spinnaker/InstallHalyard.sh "명령을 사용할 수 있습니까? –
@Daein {{ansible_env.HOME}}은/home/user 인 현재 사용자 $ HOME env 변수를 제공합니다. 절대 경로를 암시한다는 것을 의미합니다. 수동 경로를 수동으로 입력하여 시도했지만 여전히 작동하지 않습니다. –