2016-12-19 2 views
0

내 개발 기계에서 모든 것이 잘 작동합니다.젠킨스에서 놀 수있는 게임 플레이는 암호 해독에 실패합니다

ERROR! Decryption failed on /data/jenkins/workspace/.../secrets.yml 
FATAL: command execution failed hudson.AbortException: Ansible playbook execution failed 

명령 젠킨스 작업에서 실행 된 있습니다 : 그것은 젠킨스는 금고 암호화 된 파일과 관련된 플레이 북을 실행하려고 할 때, 나는 오류가 단지의 볼트

/usr/bin/ansible-playbook playbook.yml -i prod/inventory -l localhost -s -f 1 --vault-password-file /etc/ansible/vault_password 

암호 파일은 다음 권한을 가진 위치에 존재 확인 : 나는 같은 명령을 실행하지만, 암호 (대화 형)를 요청하는 경우

-rw-r--r--. 1 root root 35 Dec 18 13:23 /etc/ansible/vault_password 

는 괜찮은 실행됩니다. 그러나 이것은 바람직한 워크 플로가 아닙니다. 저는 Jenkins가 사용자 인터페이스없이이 모든 게임 플레이를 독자적으로 실행하기를 바랍니다.

플레이 북은 기본적으로 Maven 테스트를위한 환경 (속성 파일과 같은 예상되는 리소스 생성)을 준비하기 위해 로컬로 작업을 실행하기위한 것임을 언급해야합니다.

+0

젠킨스가 실행중인 사용자는 무엇입니까? –

+0

젠킨스가 플레이 북을 운영하는 CentOS 머신에서는 맥 오에스텐 사용자 이름 (성공)과 "젠킨스"가 될 것입니다. "jenkins"사용자가 sudoers.d에 있습니다. – Jubz

답변

0

콘텐츠가 포함 된 파일을 만드는 것과 최종 결과가 동일한 콘텐츠를 포함하는 파일을 복사하는 것과는 큰 차이가 있음이 드러났습니다.

설명해 드리죠 : 내가 만든 변화는 암호 파일을이었다

copy: content="{{ ansibl_vault_password }}", dest="{{ ansibl_vault_password_file }}" 

이되고 내 프로비저닝 각본은 다음과 같이 원격 컴퓨터의 파일에 암호를 작성하여 비밀번호 파일을 생성했다 다음과 같이 원격 컴퓨터에 내 컴퓨터에서 복사 :

copy: 
    src: "{{ ansibl_vault_password_file }}" 
    dest: "{{ ansibl_vault_password_file }}" 
    mode: "u=rw,g=r,o=r" 

그래서 첫 번째 줄에 암호를 포함하는 파일을 결국 사물의 웅대 한 계획에서, 이전의 접근 방식은 내용을 해독하는 데 실패 유지하더라도 두 번째 방법은 효과가있었습니다. 잘 됐네.