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?
É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
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'
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'
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
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