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の知識はまばらです。明らかな何かが欠けていると思います。
この機能は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:最初のコマンド