おそらくこれを行うための最良の方法-scottodが提供するNOPASSWDソリューションを使用できないと仮定すると、Mircea VutcoviciのソリューションをAnsibleボールトと組み合わせて使用することです。
たとえば、次のようなプレイブックがあるとします。
- 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
Ansibleがプレイブックを実行したときに復号化できる暗号化ファイルが作成されます。注:ファイルはansible-vault edit secret
(ファイルの作成時に使用したパスワードを入力します)
パズルの最後のピースは、Ansibleに--vault-password-file
あなたの復号化に使用するものを提供することですsecret
ファイルのです。
というファイルを作成し、作成vault.txt
時に使用したパスワードを入力します。secret
ます。パスワードは、ファイルに1行として格納された文字列である必要があります。
Ansibleドキュメントから:
..ファイルに対する権限が他の誰もあなたのキーにアクセスできないようにし、ソース管理にキーを追加しないようにします
最後に:次のようなものでプレイブックを実行できます
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をご覧ください。