Comment ignorer la vérification d’authenticité SSH?

Existe-t-il un moyen d’ignorer la vérification de l’authenticité SSH effectuée par Ansible? Par exemple, lorsque je viens de configurer un nouveau serveur, je dois répondre oui à cette question:

GATHERING FACTS *************************************************************** The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is xx:yy:zz:.... Are you sure you want to continue connecting (yes/no)? 

Je sais que c’est généralement une mauvaise idée mais je l’intègre dans un script qui crée d’abord un nouveau serveur virtuel chez mon fournisseur de cloud, puis appelle automatiquement mon playbook Ansible pour le configurer. Je veux éviter toute intervention humaine au milieu de l’exécution du script.

Deux options – la première, comme vous l’avez dit dans votre propre réponse, est de définir la variable d’environnement ANSIBLE_HOST_KEY_CHECKING sur False.

La deuxième manière de le définir est de le placer dans un fichier ansible.cfg, et c’est une option très utile car vous pouvez la définir globalement (au niveau système ou utilisateur, dans /etc/ansible/ansible.cfg ou ~/.ansible.cfg ), ou dans un fichier de configuration dans le même répertoire que le livret que vous exécutez.

Pour ce faire, créez un fichier ansible.cfg dans l’un de ces emplacements et incluez ceci:

 [defaults] host_key_checking = False 

Vous pouvez également définir beaucoup d’autres parameters par défaut, comme de rassembler ou non des faits au début d’un jeu, de fusionner des hachages déclarés à plusieurs endroits ou de les remplacer par un autre, etc. Il y a une grande liste d’options ici dans les documents Ansible.


Edit: une note sur la sécurité.

La validation de clé d’hôte SSH est une couche de sécurité significative pour les hôtes persistants . Si vous vous connectez plusieurs fois à la même machine, il est important d’accepter la clé d’hôte localement.

Pour les instances EC2 à durée de vie plus longue, il serait judicieux d’accepter la clé hôte avec une tâche exécutée une seule fois lors de la création initiale de l’instance:

  - name: Write the new ec2 instance host key to known hosts connection: local shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts" 

Il n’y a aucune valeur de sécurité pour vérifier les clés de l’hôte sur les instances que vous mettez en place dynamicment et que vous supprimez immédiatement après l’exécution du playbook, mais la vérification de la clé hôte pour les machines persistantes présente une valeur de sécurité. Vous devez donc gérer la vérification des clés d’hôte différemment selon l’environnement logique.

  • Laissez la vérification activée par défaut (dans ~/.ansible.cfg )
  • Désactivez la vérification de la clé d’hôte dans le répertoire de travail pour les livrets que vous exécutez sur des instances éphémères ( ./ansible.cfg même temps que le ./ansible.cfg jeu pour les tests unitaires contre les machines virtuelles en attente, automatisation pour les instances ec2 à durée de vie courte)

J’ai trouvé la réponse, vous devez définir la variable d’environnement ANSIBLE_HOST_KEY_CHECKING sur False . Par exemple:

 ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ... 

transmettre à nikobelia

Pour ceux qui utilisent jenkins pour exécuter le livre de lecture, je viens d’append à mon travail jenkins avant d’exécuter ansible-playbook la variable d’environnement ANSIBLE_HOST_KEY_CHECKING = False Par exemple ceci:

 export ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook 'playbook.yml' \ --extra-vars="some vars..." \ --tags="tags_name..." -vv