web-dev-qa-db-fra.com

Comment définir Host_key_checking = false dans le fichier d'inventaire ansible?

Je voudrais utiliser la commande ansible-playbook au lieu de 'vagrant provision'. Cependant, définir 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?

75
mbdev

Étant donné que j'ai répondu à cette question en 2014, j'ai mis à jour ma réponse afin de prendre en compte les versions les plus récentes d'ansible.

Oui, vous pouvez le faire au niveau hôte/inventaire (ce qui est devenu possible sur les versions les plus récentes ) ou au niveau mondial:

inventaire:

Ajoutez ce qui suit.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Hôte:

Ajoutez 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 affirmer que l'inventaire et les hôtes sont plus sécurisés, car leur étendue est plus limitée.

global:

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

    [defaults]
    Host_key_checking = False
    
  • Ou vous pouvez le passer depuis la ligne de commande:

    ansible-playbook -e 'Host_key_checking=False' yourplaybook.yml
    
  • Ou vous pouvez configurer et variable env (cela pourrait ne pas fonctionner avec les versions les plus récentes):

    export ANSIBLE_Host_KEY_CHECKING=False
    
117
Rico

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é des hôtes requis pour cela (par exemple, des systèmes de test, des machines de développement local).

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

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

ou

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

à votre définition d’hôte (voir Paramètres d’inventaire comportemental Ansible ).

Cela fonctionnera à condition que vous utilisiez 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'

Exécuter Ansible sera alors réussi sans changer aucune variable d'environnement.

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

Si vous souhaitez le faire pour un groupe d'hôtes, voici une suggestion pour en faire un groupe supplémentaire pour un groupe existant, comme ceci:

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

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
57
gertvdijk

Je ne pouvais pas utiliser: 

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

dans le fichier d'inventaire. Il semble que ansible ne considère pas cette option dans mon cas (ansible 2.0.1.0 à partir de pip in 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
vskubriev

Dans /etc/ansible/ansible.cfg, ne commentez pas la ligne:

Host_key_check = False

et dans /etc/ansible/hosts décommentez la ligne

client_ansible ansible_ssh_Host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

C'est tout

1
user8759294

L'ajout de la commande suivante à la configuration ansible fonctionnait avec les commandes ansible ad-hoc:

[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
dnafication