2017-12-14 9 views
1

나는 docker 플러그인으로 jenkins 버전 2.89.1을 사용하고 있습니다. ,jinkkins docker plugin in 파이프 라인 사용 -u 플래그, 사용하지 않는 방법

 agent { 
      docker { 
       image 'myself/ansible:1.0.3' 
       registryUrl 'https://my-artifactory-pro' 
       registryCredentialsId 'my-credentials' 
       args '-v /var/lib/jenkins/workspace/myworkspace:/tmp/' + 
         ' -v /var/lib/jenkins/.ssh:/root/.ssh' 
      } 
     } 
    steps { 

      echo 'Deploying Ansible Server via docker image' 
      sh "ansible-playbook -i /tmp/my-inventories-path/ 
       /my-playbooks/teardown.yaml "+ 
       "--extra-vars 'platform=ec2 
         aws_access_key=${AWS_ACCESS_KEY_ID} 
         aws_secret_key=${AWS_SECRET_ACCESS_KEY} "+ 
        " eip_bastion_host=${EIP_BASTION_HOST} 
        eip_load_balancer=${EIP_LOAD_BALANCER} '" 
    } 
파이프 라인은 고정 표시기 컨테이너를 스핀 관리하고 ansible 작전을 실행하려고

: 선언적 파이프 라인의 단계에서 나는 다음과 같은 몇 가지 플레이 북을 실행하기 위해 설치 ansible 2.4.x에서와 고정 표시기 컨테이너를 시작 하지만 다음과 같은 문제에 직면하고 있습니다 :

+ ansible-playbook -i /tmp/my-inventories/ /tmp/my-playbooks/teardown.yaml --extra-vars platform=ec2 aws_access_key=**** aws_secret_key=**** eip_bastion_host=X.X.X.X eip_load_balancer=X.X.X.X 
[WARNING]: Unable to set correct type for configuration entry: 
DEFAULT_LOCAL_TMP 

PLAY [localhost] *************************************************************** 

TASK [install_python_pip : Create pip folder] ********************************** 
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'getpwuid(): uid not found: 112' 
fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""} 
    to retry, use: --limit @/tmp/my-playbooks/teardown.retry 

PLAY RECAP ********************************************************************* 
localhost     : ok=0 changed=0 unreachable=0 failed=1 

는 젠킨스 보면 내가 볼 로그 그 그것은 다음과 같은 방법으로 시작하는 고정 표시기 컨테이너 회전 할 때 :

docker run -t -d -u 112:116 -v /var/lib/jenkins/workspace/my-workspace --entrypoint cat myself/ansible:1.0.3 

112는 jenkins uid이고 116은 gid 젠킨스입니다.

-u 플래그없이 수동으로 시작된 동일한 컨테이너에서 동일한 무책 연습 게임을 실행하면 제대로 작동합니다.

그렇다면 그 -U 플래그없이 용기 실행 가능하다 ??? 왜 docker 컨테이너에 젠킨스 서버와 동일한 uid & gid가 있어야한다고 생각합니까?

덕분에 사용자가 지정되지 않은 사전 마르코

기본적으로

답변

0

에 많은, 고정 표시기 루트 지정 아니라면 dockerfile에 정의 된 사용자와 컨테이너를 lauches. 기본 사용자에게 다음을 전달하여 강제로 시도 할 수 있습니다.

args '-u root:root -v /var/lib/jenkins/workspace/myworkspace:/tmp/' + 
         ' -v /var/lib/jenkins/.ssh:/root/.ssh' 
+0

정말로 감사합니다. 제대로 작동했습니다. 감사합니다. @yamenk에 대해 생각하지 않았습니다. – MarMac