2016-10-17 4 views
2

AnOS를 사용하여 coreOS를 프로비저닝하려고합니다. 먼저 부트 스트랩 된 상자 https://github.com/defunctzombie/ansible-coreos-bootstrapCoreIO를 제공 할 때 오류가 발생할 수 있습니다.

이것은 (경로는/home/core/bin에있는) pip를 제외한 모든 광고에서 작동하는 것으로 보입니다. 다음 단계에서 내가 고정 표시기-PY 설치하는 작업을 실행하려고 :

environment: 
    PATH: /home/core/bin:$PATH 

내가 실행하려고하는 경우 : PIP의 폴더로

- name: Install docker-py 
    pip: name=docker-py 

것은 나는 그것이 ansible 사용 않았다 경로에 없습니다 이 작업에 다음 오류가 발생합니다.

치명적 : [192.168.0.160] : FAILED! \ n "stderr :/home/core/bin", "cmd": "/ home/core/bin/pip install docker-py", "/pip : 행 2 : basename : 명령을 찾을 수 없습니다. \ n/home/core/bin/pip : 행 2 :/root/pypy/bin/: 해당 파일이나 디렉토리가 없습니다. \ n "}

내가 묻는 것은 /root/pypy/bin/은 어디에서 왔는가 이것이 문제인 것 같습니다. 어떤 생각?

+0

오류 메시지를 살펴 보니'basename : command not found '가 아마도'/ root/pypy/bin /'원인이되는 루트 문제 일 것입니다. –

+0

내가 상자에 들어가서'home/core/bin/pip install docker-py'를 실행하면 흥미로운 사실 ​​하나가 문제없이 실행됩니다. 실패는 Ansible에서 실행 한 경우에만 발생합니다. – john84

답변

1

가변 변수 설정시 쉘 스타일 변수 확장을 사용할 수 없습니다. 이 성명에서 ...

environment: 
    PATH: /home/core/bin:$PATH 

은 ... 당신은 문자/home/core/bin:$PATHPATH 환경 변수를 설정한다. 즉, $PATH의 기존 값을 모두 날려 버리는 것입니다. 따라서 basename과 같은 기본 명령에 대해 '명령을 찾을 수 없음'오류가 발생합니다.

ansible 전화, 또는 쉘에서 pip를 호출 전에 $PATH을 수정, 당신은 $PATH 기존의 어딘가에 pip 설치를 고려가 cript :

- name: install something with pip 
    shell: | 
    PATH="/home/core/bin:$PATH" 
    pip install some_module 
+0

당신의 응답 주셔서 감사합니다, 불행히도 같은 오류가 발생하는 껍질 스크립트를 사용하여 호출 pip. – john84

+0

더 이상 Psible을 Anecess에 설정하려고하지 않습니까? 어쩌면 질문을 새 게임 플레이 북으로 업데이트 할 수 있습니다. – larsks

+0

다음 이봐, 네 꽤 슈어, 내 YML이 보이는 : '- 호스트 : 목장 서버 REMOTE_USER : coreos gather_facts : 진정한 가 될 : 예 become_method : sudo는 작업 : - 이름 : PIP 에 설치 뭔가 쉘 : | PATH = "/ 홈/코어/빈 : $ PATH에" 핍 some_module를 설치' – john84

0

문제는에있다/집/코어/빈/PIP 스크립트하는 문자 그대로입니다 :

#!/bin/bash 
LD_LIBRARY_PATH=$HOME/pypy/lib:$LD_LIBRARY_PATH $HOME/pypy/bin/$(basename $0) [email protected] 

$HOME 변수가 다음으로 대체 될 때 루트 아래에서 실행될 때 :/root 및/home/core와는 다릅니다. $HOME/home/core으로 변경하면 제대로 작동합니다.