Comment définir la vérification de la clé hôte = false dans le fichier d'inventaire ansible?

Je voudrais utiliser la commande ansible-playbook au lieu de ' vagrant provision'. Cependant, la définition de host_key_checking=false dans le fichier hosts ne semble pas fonctionner.

# hosts file
vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 
ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1 
host_key_checking=false

Existe-t-il une variable de configuration en dehors de Vagrantfile qui peut remplacer cette valeur?

69
demandé sur chicks 2014-04-15 07:59:03

5 réponses

en raison du fait que j'ai répondu à cela en 2014, j'ai mis à jour ma réponse pour tenir compte des versions plus récentes d'ansible.

Oui, vous pouvez le faire au niveau hôte / inventaire (ce qui est devenu possible sur les nouvelles versions ansible) ou au niveau global:

Inventaire:

Ajouter ce qui suit.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Hôte :

Ajouter ce qui suit.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

Les hôtes/options d'inventaire fonctionneront avec le type de connexion ssh et non paramiko. Certaines personnes peuvent fortement soutenir que l'inventaire et les hôtes sont plus sûrs parce que la portée est plus limitée.

Global:

  • , Vous pouvez le faire soit dans le /etc/ansible/ansible.cfg ou ~/.ansible.cfg fichier:

    [defaults]
    host_key_checking = False
    
  • Ou vous pouvez le passer à partir de la ligne de commande:

    ansible-playbook -e 'host_key_checking=False' yourplaybook.yml
    
  • Ou vous pouvez configurer et env variable (cela peut ne pas fonctionner sur les nouvelles versions ansible):

    export ANSIBLE_HOST_KEY_CHECKING=False
    
99
répondu Rico 2018-02-17 03:39:33

Oui, vous pouvez définir ceci au niveau inventaire/hôte.

avec une réponse déjà acceptée, je pense que c'est une meilleure réponse à la question sur la façon de gérer cela au niveau de l'inventaire. Je considère cela plus sûr en isolant ce paramètre non sécurisé aux hôtes requis pour cela (par exemple, systèmes de test, machines de développement locales).

Ce que vous pouvez faire au niveau de l'inventaire est d'ajouter

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Ou

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

À votre hôte définition (voir Ansible Comportementale de l'Inventaire des Paramètres).

Cela fonctionnera à condition d'utiliser le type de connexion ssh, Pas paramiko ou autre chose).

Par exemple, une définition D'hôte Vagabond ressemblerait à...

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Ou

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

L'exécution D'Ansible réussira alors sans changer de variable d'environnement.

$ ansible vagrant -i <path/to/hosts/file> -m ping
vagrant | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Si vous voulez faire cela pour un groupe d'hôtes, voici une suggestion pour en faire une Var de groupe supplémentaire pour un groupe existant comme celui-ci:

[mytestsystems]
test[01:99].example.tld

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
54
répondu gertvdijk 2017-08-02 10:08:30

Je ne pouvais pas utiliser:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Dans le fichier d'inventaire. Il semble qu'ansible ne considère pas cette option dans mon cas (ansible 2.0.1.0 de pip dans ubuntu 14.04)

J'ai décidé d'utiliser:

server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null'

Ça m'a aidé.

Vous pouvez également définir cette variable dans le groupe à la place pour chaque hôte:

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
1
répondu vskubriev 2016-04-21 12:37:30

Dans /etc/ansible/ansible.cfg décommenter la ligne:

host_key_check = False

Et dans /etc/ansible/hosts décommenter la ligne

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

C'est tout

0
répondu user8759294 2017-10-11 20:21:08

L'ajout suivant à Ansible config a fonctionné lors de l'utilisation des commandes ad-hoc ansible:

[ssh_connection]
# ssh arguments to use
ssh_args = -o StrictHostKeyChecking=no

Version Ansible

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg
0
répondu dnafication 2018-10-05 04:24:43