J'ai un groupe de mise à l'échelle automatique sur Amazon EC2
et j'ai ajouté ma clé publique lorsque je crée AMI avec packer
pour pouvoir exécuter ansible-playbook et ssh sur les hôtes.
Mais il y a un problème lorsque j'exécute le playbook comme ceci ansible-playbook load.yml
Je reçois ce message dont j'ai besoin pour écrire mon mot de passe
Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':
Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':
Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':
Le problème est qu'il n'accepte pas mon mot de passe (je suis sûr que je tape correctement mon mot de passe).
J'ai ensuite découvert que je pouvais envoyer mon mot de passe avec ask-pass
flag donc j'ai changé ma commande en ansible-playbook load.yml --ask-pass
et j'ai obtenu des progrès mais encore une fois pour une autre tâche, il demande à nouveau le mot de passe et il n'a pas accepté mon mot de passe
[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':
Si je n'utilise pas ask-pass
signaler même la tâche [Copy gatling.conf]
ne se termine pas et se plaindre n'a pas pu accéder aux hôtes. En ajoutant le drapeau, cette partie se passe bien, mais ma prochaine tâche demande à nouveau la passe.
Comment dois-je résoudre ce problème? Qu'est-ce que je fais mal ici?
Je l'ai résolu en exécutant ssh-add
une fois et utilisez-le comme s'il n'était pas protégé par mot de passe.
In ansible Il n'y a pas d'option pour stocker la clé privée protégée par mot de passe
Pour cela, nous devons ajouter la clé privée protégée par mot de passe dans l'agent ssh
Démarrez l'agent ssh en arrière-plan.
# eval "$(ssh-agent -s)"
Ajouter la clé privée SSH à l'agent ssh
# ssh-add ~/.ssh/id_rsa
Essayez maintenant d'exécuter ansible-playbook et ssh sur les hôtes.