Muhtemelen bunu yapmanın en iyi yolu - scottod tarafından sağlanan NOPASSWD çözümünü kullanamayacağınızı varsayarak Mircea Vutcovici'nin çözümünü Ansible tonoz ile birlikte kullanmaktır .
Örneğin, şöyle bir oynatma kitabınız olabilir:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Burada secret
sudo şifremizi içeren bir dosya ekliyoruz.
Bu dosyanın şifrelenmiş bir sürümünü oluşturmak için ansible-vault kullanacağız:
ansible-vault create secret
Bu sizden bir şifre isteyecektir, ardından dosyayı düzenlemek için varsayılan düzenleyicinizi açacaktır. Buraya girebilirsin ansible_sudo_pass
.
ör . secret
:
ansible_sudo_pass: mysudopassword
Kaydedin ve çıkın, secret
Ansible'ın oyun kitabınızı çalıştırdığınızda şifresini çözebileceği şifrelenmiş bir dosyanız var. Not: ile dosyayı düzenleyebilirsiniz ansible-vault edit secret
(ve dosyayı oluştururken kullandığınız şifreyi girebilirsiniz)
Bulmacanın son parçası Ansible'a dosyanızın --vault-password-file
şifresini çözmek için kullanacağı bir yöntem sunmaktır secret
.
Dosyanızı oluştururken vault.txt
kullandığınız şifreyi koyduğunuz adlı bir dosya oluşturun secret
. Parola, dosyada tek bir satır olarak depolanan bir dize olmalıdır.
Ansible Docs'tan:
.. dosyadaki izinlerin başka hiç kimse anahtarınıza erişemeyeceği ve anahtarınızı kaynak denetimine eklemeyecek şekilde olduğundan emin olun
Son olarak: artık oyun kitabınızı aşağıdaki gibi bir şeyle çalıştırabilirsiniz
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Yukarıdaki dizin düzenini varsayarsak:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Ansible Vault hakkında daha fazla bilgiyi buradan edinebilirsiniz: https://docs.ansible.com/playbooks_vault.html