Amazonに自動スケーリンググループEC2
があり、packer
でAMIを作成するときに公開キーを追加して、ホストに対してansible-playbookとsshを実行できるようにしました。
しかし、このようなプレイブックを実行すると問題が発生しますansible-playbook load.yml
パスワードを書く必要があるというメッセージが表示されます
キー「/Users/XXX/.ssh/id_rsa」のパスフレーズを入力します。
キー「/Users/XXX/.ssh/id_rsa」のパスフレーズを入力します。
キー「/Users/XXX/.ssh/id_rsa」のパスフレーズを入力します。
問題は、パスワードを受け入れないことです(パスワードを正しく入力していると確信しています)。
その後、ask-pass
フラグでパスワードを送信できるため、コマンドをansible-playbook load.yml --ask-pass
に変更しましたが、ある程度の進捗はありましたが、他のタスクでは再びパスワードを要求しましたが、しませんでした私のパスワードを受け入れます
[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
PLAY [localhost] *************************************************************************************************************
TASK [ec2_instance_facts] ****************************************************************************************************
ok: [localhost]
TASK [add_Host] **************************************************************************************************************
changed: [localhost] => (item=xx.xxx.xx.xxx)
changed: [localhost] => (item=yy.yyy.yyy.yyy)
PLAY [instances] *************************************************************************************************************
TASK [Copy gatling.conf] *****************************************************************************************************
ok: [xx.xxx.xx.xxx]
ok: [yy.yyy.yyy.yyy]
Enter passphrase for key '/Users/ccc/.ssh/id_rsa': Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
ask-pass
フラグを使用しないと、タスク[Copy gatling.conf]
が完了せず、ホストにアクセスできなかったという苦情が出ます。フラグを追加することで、この部分はうまくいきますが、私の次のタスクは再びパスを要求します。
この問題をどのように解決すればよいですか?ここで何が間違っていますか?
ssh-add
を1回実行して解決し、パスワードで保護されていない場合のように使用します。
Ansibleでは、パスフレーズで保護された秘密キーを保存するオプションはありません
そのためには、ssh-agentにパスフレーズで保護された秘密鍵を追加する必要があります
バックグラウンドでssh-agentを起動します。
# eval "$(ssh-agent -s)"
SSH秘密鍵をssh-agentに追加します
# ssh-add ~/.ssh/id_rsa
ここで、ホストに対してansible-playbookとsshを実行してみてください。