Ansible Vault 를 사용하여 Ansible Playbook git 저장소에 비밀번호, 인증서의 개인 키 등을 저장하고 있습니다. 기존의 모든 개인 데이터는 텍스트 형식이므로 변수에 저장할 수 있습니다. 그런 다음 템플릿 또는 content
복사 모듈 의 매개 변수 와 함께 사용됩니다 .
슬프게도 바이너리 형식의 Java KeyStore 파일이 있습니다. 따라서 변수 안에 저장할 수 없거나 적어도 어떻게 해야할지 모르겠습니다. 파일이 git에있는 동안 파일을 올바르게 암호화하는 가장 쉬운 방법은 무엇입니까 ansible-playbook
?
내가 성공하지 않고 이미 시도한 것 :
- 이진 파일을 base64로 인코딩하고 인코딩 된 데이터를 변수에 저장하고 with with 템플릿 모듈을 사용합니다
{{base64_data | b64decode}}
.EF BF BD
결과 파일의 16 진 덤프 가 많이 발생합니다. 3 바이트는 유니 코드 대체 문자를 UTF-8로 인코딩하므로 이진 데이터를 텍스트로 해석하는 데 문제가 있습니다. - 이진 파일을 base64로 인코딩하고, 인코딩 된 데이터를 변수에 저장하고 와 함께 복사 모듈을 사용합니다
content="{{base64_data | b64decode}}"
. Ansible은 "변수가 모듈 args에 새 매개 변수를 삽입했습니다"라고 불평합니다. 큰 따옴표 대신 작은 따옴표를 사용하는 경우 Ansible은 "오류 구문 분석 인수 문자열"및 터미널에 덤프 된 모든 이진 데이터의 사본으로 불평합니다.
groups.google.com/d/topic/ansible-project/IinZK14FyX4 의 토론에서 ansible은이 기능을 지원하지 않으며, base64 작업을 직접 수행해야하지만 타사 제품이있을 수 있다고 결론지었습니다. 쉽게 만들 수 있습니다.
—
Antonis Christofides
고마워, 이것은 좋아 보인다. 그것을 시도하고 다시보고합니다 ...
—
다니엘 Sather
아니요, 슬프게도 작동하지 않습니다 (편집 된 질문 참조). 관련이있을 가능성이있는 ansible 풀 요청 주위 논의가있다 : github.com/ansible/ansible-modules-extras/pull/142
—
다니엘 Seither
이것을 GPG 호출로 래핑하는 것에 대해 생각해 보셨습니까? Ansible Vault에 GPG 개인 키의 ASCII 표현을 저장하고이 파일을 사용하여 이진 파일의 암호를 해독 한 다음 문제없이 git에 저장할 수 있습니다.
—
Christopher Karel 2019
귀하의 제안에 감사드립니다.하지만이 해결 방법은 내가 원하는 것보다 조금 더 복잡합니다. 나는 base64로 인코딩 된 KeyStore를 대상 컴퓨터에 복사하고 업데이트시 파일을 디코딩하는 핸들러를 갖는 것에 대해 이미 생각했지만 임시 파일을 던지지 않는 솔루션을 선호합니다.
—
Daniel Seither