it-swarm.com.de

Festlegen von Host_key_checking = false in einer anzeigbaren Inventardatei

Ich möchte statt ansible-playbook den Befehl vagrant provision verwenden. Die Einstellung Host_key_checking=false in der hosts-Datei scheint jedoch nicht zu funktionieren. 

# 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

Gibt es eine Konfigurationsvariable außerhalb von Vagrantfile, die diesen Wert überschreiben kann?

75
mbdev

Da ich dies 2014 beantwortet habe, habe ich meine Antwort für neuere Versionen von ansible aktualisiert.

Ja, Sie können dies auf der Host-/Inventarebene (die auf neueren verfügbaren Versionen möglich wurde) oder auf globaler Ebene durchführen:

inventar:

Fügen Sie folgendes hinzu.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

Host:

Fügen Sie folgendes hinzu.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

hosts/Inventaroptionen funktionieren mit dem Verbindungstyp ssh und nicht mit paramiko. Einige Leute argumentieren mit Nachdruck, dass Inventar und Hosts sicherer sind, weil der Umfang eingeschränkt ist.

global:

  • Sie können dies entweder in der Datei /etc/ansible/ansible.cfg oder ~/.ansible.cfg tun:

    [defaults]
    Host_key_checking = False
    
  • Oder Sie können es von der Kommandozeile aus übergeben:

    ansible-playbook -e 'Host_key_checking=False' yourplaybook.yml
    
  • Oder Sie können die Variable setup und env einrichten (dies funktioniert möglicherweise nicht bei neueren anzeigbaren Versionen):

    export ANSIBLE_Host_KEY_CHECKING=False
    
117
Rico

Ja, Sie können dies auf Inventar/Host-Ebene einstellen .

Wenn eine bereits akzeptierte Antwort vorliegt, ist dies meiner Meinung nach eine bessere Antwort auf die Frage, wie damit auf Inventarebene umgegangen werden soll. Ich halte dies für sicherer, indem ich diese unsichere Einstellung auf die dafür erforderlichen Hosts (z. B. Testsysteme, lokale Entwicklungscomputer) isoliere.

Was Sie auf Inventarebene tun können, ist Hinzufügen

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

oder

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

zu Ihrer Host-Definition (siehe Ansible Behavioral Inventory Parameters ).

Dies funktioniert, sofern Sie den Verbindungstyp ssh und nicht paramiko oder etwas anderes verwenden.

Zum Beispiel würde eine Vagrant Host-Definition so aussehen ...

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

oder

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

Das Ausführen von Ansible ist dann erfolgreich, ohne dass Umgebungsvariablen geändert werden.

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

Wenn Sie dies für eine Gruppe von Hosts tun möchten, ist hier ein Vorschlag, um es zu einer ergänzenden Gruppenvariable für eine vorhandene Gruppe wie diese zu machen:

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

[insecuressh:children]
mytestsystems

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

Ich konnte nicht verwenden: 

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

in der Inventardatei. Es scheint, dass Ansible diese Option in meinem Fall nicht berücksichtigt (Ansible 2.0.1.0 von pip in Ubuntu 14.04)

Ich entschied mich zu verwenden:

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

Es hat mir geholfen.

Sie können diese Variable stattdessen auch für jeden Host in einer Gruppe festlegen:

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
1
vskubriev

In /etc/ansible/ansible.cfg kommentieren Sie die Zeile aus:

Host_key_check = False

und in /etc/ansible/hosts kommentieren Sie die Zeile aus

client_ansible ansible_ssh_Host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

Das ist alles

1
user8759294

Das Hinzufügen von ansible config funktionierte während der Verwendung von adressierbaren Ad-hoc-Befehlen:

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

Ansible Version

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg
0
dnafication