web-dev-qa-db-ja.com

Ansibleの秘密鍵のパスフレーズを記憶/キャッシュまたは指定する方法

Ansibleから始めて、クライアントマシンにAsibleユーザーを設定し、OpenSSLから一連のキーを作成しました。私は自分のアカウントでAnsibleを実行しています。 Ansible構成でユーザーと秘密鍵ファイルを指定しました。このユーザーとしてリモートコマンドを実行し、このユーザーをSudoに対して実行して、昇格を必要とするコマンドを実行します。

/etc/ansible/ansible.cfg

private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman

このようなコマンドは、パスフレーズを最初に入力した後、パスフレーズを要求しません。

ansible all -m ping

次のように、実行するたびにパスフレーズを要求します。

ansible all -m ping -b
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -m ping --Sudo
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

ansible all -a "cat /etc/redhat-release"
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)

どうして?

パスフレーズを設定する方法はありますか?より安全な方法はありますか?リモートでcronを介して、およびパスフレーズを入力するオプションがない他の自動化ツールを介して、ansibleを実行する予定です。

コンテキストとして、私はLinuxサーバー間でSSHを実行する必要がありませんでした。常にWindowsマシンからPuTTY、RoyalTS、mRemoteNGなどのツールを使用しているので、私のsshの知識はまばらです。明らかな何かが欠けていると思います。

4
ZZ9

この機能はssh-agentと呼ばれます。

$ eval `ssh-agent`  # you might have agent already running so this might not be needed
$ ssh-add /etc/ansible/private_keys/confman.crt

これで、ansibleはエージェントでキーを見つけて、毎回パスフレーズを要求せずに認証できるはずです。 From:Documentation:最初のコマンド

6
Jakuje