12.4. 프로젝트에 서명
프로젝트에 서명하려면 Ansible 프로젝트 디렉터리가 필요합니다. 프로젝트 디렉터리 구조에 대한 자세한 내용은 Ansible 문서의 샘플 Ansible 설정을 참조하십시오.
다음 샘플 프로젝트에는 인벤토리 파일과 플레이북 디렉터리에 있는 두 개의 작은 플레이북이라는 매우 간단한 구조가 있습니다.
$ cd sample-project/ $ tree -a . . ├── inventory └── playbooks └── get_uptime.yml └── hello.yml 1 directory, 3 files
사용된 명령은 작업 디렉터리가 프로젝트의 루트라고 가정합니다. Ansible-sign 프로젝트
명령은 프로젝트 루트 디렉터리를 마지막 인수로 사용합니다.
현재 작업 디렉터리를 표시하려면 .
를 사용합니다.
Ansible-sign
은 프로젝트의 모든 보안 파일의 체크섬(SHA256)을 사용하고 체크섬 매니페스트 파일로 컴파일한 다음 해당 매니페스트 파일에 서명하여 콘텐츠를 변조하지 않도록 보호합니다.
콘텐츠에 서명하려면 프로젝트 루트 디렉터리에 보호할 파일을 ansible-sign
에 알리는 MANIFEST.in
파일을 생성합니다.
내부적으로 ansible-sign
은 Python의 distlib 라이브러리의 distlib.manifest
모듈을 사용하므로 MANIFEST.in
은 이 라이브러리에서 지정하는 구문을 따라야 합니다. MANIFEST.in
파일 지시문에 대한 설명은 Python 패키징 사용자 가이드를 참조하십시오.
샘플 프로젝트에서 두 개의 지시문이 포함되어 결과적으로 다음 MANIFEST.in
파일이 생성됩니다.
include inventory recursive-include playbooks *.yml
이 파일을 사용하여 체크섬 매니페스트 파일을 생성하고 서명하십시오. 다음 두 단계는 모두 단일 ansible-sign
명령으로 수행됩니다.
$ ansible-sign project gpg-sign .
실행에 성공하면 다음과 유사한 출력이 표시됩니다.
[OK ] GPG signing successful! [NOTE ] Checksum manifest: ./.ansible-sign/sha256sum.txt [NOTE ] GPG summary: signature created
이제 프로젝트에 서명되었습니다.
gpg-sign
하위 명령은 project
하위 명령에 있습니다.
프로젝트 콘텐츠에 서명하기 위해 모든 명령은 ansible-sign 프로젝트
로 시작합니다.
모든 ansible-sign 프로젝트
명령은 프로젝트 루트 디렉터리 .
를 최종 인수로 사용합니다.
Ansible-sign
은 기본 인증 키를 사용하고 프로젝트에 서명하기 위해 찾을 수 있는 첫 번째 사용 가능한 시크릿 키를 찾습니다. --fingerprint
옵션과 함께 사용할 특정 시크릿 키를 지정하거나 --gnupg-home
옵션을 사용하여 완전히 독립적인 GPG 홈 디렉터리도 지정할 수 있습니다.
데스크탑 환경을 사용하는 경우 GnuPG는 시크릿 키의 암호를 자동으로 입력하라는 메시지를 표시합니다.
이 기능이 작동하지 않거나 데스크탑 환경(예: SSH를 통해) 없이 작업하는 경우 gpg-sign
후 -p --prompt-passphrase
플래그를 사용하면 ansible-sign
이 대신 암호를 입력하라는 메시지가 표시됩니다.
.ansible-sign
디렉터리가 프로젝트 디렉터리에 생성되었습니다. 이 디렉터리에는 체크섬 매니페스트 및 GPG 분리 서명이 포함되어 있습니다.
$ tree -a . . ├── .ansible-sign │ ├── sha256sum.txt │ └── sha256sum.txt.sig ├── inventory ├── MANIFEST.in └── playbooks ├── get_uptime.yml └── hello.yml