scottod가 제공하는 NOPASSWD 솔루션을 사용할 수 없다고 가정하면이 작업을 수행하는 가장 좋은 방법은 Mircea Vutcovici의 솔루션을 Ansible Vault 와 함께 사용하는 것 입니다.
예를 들어 다음과 같은 플레이 북이있을 수 있습니다.
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
여기에 secret
sudo 비밀번호를 포함하는 파일 이 포함되어 있습니다.
ansible-vault를 사용하여이 파일의 암호화 된 버전을 만듭니다.
ansible-vault create secret
암호를 묻는 메시지가 표시되면 기본 편집기를 열어 파일을 편집하십시오. 당신은 ansible_sudo_pass
여기에 넣을 수 있습니다.
예 : secret
:
ansible_sudo_pass: mysudopassword
저장하고 종료합니다. 이제 secret
Playbook을 실행할 때 Ansible에서 해독 할 수 있는 암호화 된 파일이 있습니다. 참고 : 파일을 사용하여 파일을 편집 할 수 있습니다 ansible-vault edit secret
( 파일을 만들 때 사용한 암호를 입력하십시오)
퍼즐의 마지막 부분은 파일 --vault-password-file
을 해독하는 데 사용할 Ansible을 제공 하는 것입니다 secret
.
라는 파일을 작성하고 파일을 vault.txt
작성할 때 사용한 비밀번호를 입력 secret
하십시오. 비밀번호는 파일에서 한 줄로 저장된 문자열이어야합니다.
Ansible Docs에서 :
.. 다른 사용자가 키에 액세스 할 수없고 소스 제어에 키를 추가하지 않도록 파일에 대한 권한을 확보하십시오.
마지막으로 다음과 같은 방법으로 플레이 북을 실행할 수 있습니다.
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
위의 디렉토리 레이아웃은 다음과 같습니다.
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Ansible Vault에 대한 자세한 내용은 https://docs.ansible.com/playbooks_vault.html을 참조 하십시오.