wake-up-neo.com

Ansible Bereitstellung ERROR! Die Verwendung eines SSH-Passworts anstelle eines Schlüssels ist nicht möglich

Ich möchte meine letzten drei Knoten mit Ansible bereitstellen.

Mein Host-Computer ist Windows 10.

Meine Vagrantfile sieht so aus:

Vagrant.configure("2") do |config|

  (1..3).each do |index|
    config.vm.define "node#{index}" do |node|

      node.vm.box = "ubuntu"
      node.vm.box = "../boxes/ubuntu_base.box"

      node.vm.network :private_network, ip: "192.168.10.#{10 + index}"

      if index == 3
        node.vm.provision :setup, type: :ansible_local do |ansible|
          ansible.playbook = "playbook.yml"
          ansible.provisioning_path = "/vagrant/ansible"
          ansible.inventory_path = "/vagrant/ansible/hosts"
          ansible.limit = :all
          ansible.install_mode = :pip
          ansible.version = "2.0"
        end
      end

    end
  end

end

Mein Spielbuch sieht so aus:

---

# my little playbook

- name: My little playbook
  hosts: webservers
  gather_facts: false
  roles:
    - create_user

Meine hosts-Datei sieht folgendermaßen aus:

[webservers]
192.168.10.11
192.168.10.12

[dbservers]
192.168.10.11
192.168.10.13

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant

Nach der Ausführung von vagrant up --provision erhielt ich den folgenden Fehler:

Bringing machine 'node1' up with 'virtualbox' provider...
Bringing machine 'node2' up with 'virtualbox' provider...
Bringing machine 'node3' up with 'virtualbox' provider...
==> node3: Running provisioner: setup (ansible_local)...
    node3: Running ansible-playbook...

PLAY [My little playbook] ******************************************************

TASK [create_user : Create group] **********************************************
fatal: [192.168.10.11]: FAILED! => {"failed": true, "msg": "ERROR! Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this Host's fingerprint to your known_hosts file to manage this Host."}
fatal: [192.168.10.12]: FAILED! => {"failed": true, "msg": "ERROR! Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this Host's fingerprint to your known_hosts file to manage this Host."}

PLAY RECAP *********************************************************************
192.168.10.11              : ok=0    changed=0    unreachable=0    failed=1
192.168.10.12              : ok=0    changed=0    unreachable=0    failed=1

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

Ich habe mein Vagrantfile um ansible.limit = :all erweitert und [all:vars] zur Hostdatei hinzugefügt, kann den Fehler aber immer noch nicht beheben.

Hat jemand das gleiche Problem festgestellt?

6
Mark

Erstellen Sie eine Datei ansible/ansible.cfg in Ihrem Projektverzeichnis (d. H. ansible.cfg im provisioning_path auf dem Ziel) mit folgendem Inhalt:

[defaults]
Host_key_checking = false

vorausgesetzt, dass Ihre Vagrant-Box sshpass bereits installiert hat - ist dies unklar, da die Fehlermeldung in Ihrer Frage darauf hinweist, dass sie installiert wurde (andernfalls wäre "ERROR!" Programm "), aber in Ihrer Antwort fügen Sie es explizit hinzu (Sudo apt-get install sshpass), als wäre es nicht

20
techraf

Ich verwende Ansible Version 2.6.2 und Lösung mit Host_key_checking = false funktioniert nicht.

Hinzufügen der Umgebungsvariablen export ANSIBLE_Host_KEY_CHECKING=False Überspringen der Fingerabdruckprüfung.

8
Branko

Dieser SO post gab die Antwort.

Ich habe die Datei known_hosts auf dem Rechner, der für die Bereitstellung verantwortlich ist, wie folgt erweitert:

Ausschnitt aus meiner modifizierten Vagrantfile:

...
if index == 3
    node.vm.provision :pre, type: :Shell, path: "install.sh"

    node.vm.provision :setup, type: :ansible_local do |ansible|
...

Meine install.sh sieht folgendermaßen aus:

# add web/database hosts to known_hosts (IP is defined in Vagrantfile)
ssh-keyscan -H 192.168.10.11 >> /home/vagrant/.ssh/known_hosts
ssh-keyscan -H 192.168.10.12 >> /home/vagrant/.ssh/known_hosts
ssh-keyscan -H 192.168.10.13 >> /home/vagrant/.ssh/known_hosts
chown vagrant:vagrant /home/vagrant/.ssh/known_hosts

# reload ssh in order to load the known hosts
/etc/init.d/ssh reload
4
Mark

Dieser Fehler kann auch durch einfaches Exportieren der Variable ANSIBLE_Host_KEY_CHECKING behoben werden.

export ANSIBLE_Host_KEY_CHECKING=False

quelle: https://github.com/ansible/ansible/issues/9442

1
Erman