Puis-je contourner la vérification de la clé hôte dans Ansible?

19

J'utilise un playbook Ansible avec un hack subtil pour travailler sur un port transmis arbitrairement (donc je peux utiliser une machine sans accès direct à beaucoup de machines).

J'ai une pré-tâche pour changer la ansible_portvariable, donc quand je commence à exécuter mes tâches et rôles réels, je suis invité à accepter les clés d'hôte pour localhost sur un port aléatoire.

Parce que je suis naïf et ne me soucie pas de la sécurité, je voudrais que ssh accepte automatiquement et redirige vers /dev/null(ou un autre fichier pour la journalisation).

Est-ce possible?

Peter Turner
la source
Vous pouvez le faire via les options ssh que vous passez à la configuration ansible.
Jiri Klouda

Réponses:

26

Cela se fait généralement en définissant la valeur suivante dans ansible.cfg:

[defaults]
host_key_checking = False

Si vous ne souhaitez pas modifier, ansible.cfgvous pouvez définir une variable d'environnement comme ceci:

export ANSIBLE_HOST_KEY_CHECKING=False

Source: http://docs.ansible.com/ansible/intro_getting_started.html#host-key-checking

Zlemini
la source
J'utilise MacOS et je définis host_key_checking = False mais j'ai quand même "AVERTISSEMENT: POSSIBLE DNS SPOOFING DETECTED!". J'ai résolu ce problème après avoir réalisé que je me suis connecté à un hôte cible du même nom plus tôt, puis je l'ai reconstruit pour qu'il y ait une ancienne clé dans ./ssh/known_hosts.
Chad Juliano
21

Dans votre ansible.cfgfichier, vous devez ajouter la ligne suivante:

ssh_args = -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

Vous pouvez également ajouter ces options dans votre ~/.ssh/configsur chaque machine à partir de laquelle vous l'exécutez quelque chose comme ceci:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null
Jiri Klouda
la source
1
Cela devrait fonctionner. Consultez également le fichier ansible.cfg pour plus de paramètres :)
Dawny33
+1 pour l'ajout de Dawny, car ceux qui utilisent Paramiko devront utiliser ansible.cfg
Woodland Hunter
1
Existe-t-il un moyen approprié de mettre cela dans le playbook? J'ai essayé ansible_ssh_common_argset ansible_ssh_extra_argscela ne remplace pas ce que j'ai dans le fichier ansible.cfg. J'ai un ansible.cfg que j'utilise pour tout le reste et préférerais simplement remplacer ces paramètres pour ce type de playbook plutôt que de le copier juste pour faire ce changement.
Peter Turner
3
Je ne peux pas parler de ces variables, Peter, mais vous pouvez mettre un ansible.cfg modifié dans le répertoire avec ce playbook, et il aura priorité.
Woodland Hunter
1
UserKnownHostsFile = / dev / null complètement rompre la sécurité ssh
mmv-ru