it-swarm.com.de

Wie setze ich den Standardbenutzernamen / das Standardkennwort für die SSH-Verbindung?

Ich verwende Ansible und habe diese Konfiguration in meinem Inventar/all:

[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[all:children]
master
slave

Ich möchte nicht alle Parameter für jede neue Instanz wiederholen. Wie kann ich sie nur an einem Ort konfigurieren? Gibt es eine Datei mit diesen Parametern?

71
Robert

Sie können Ihrer Inventardatei folgenden Abschnitt hinzufügen:

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

Hinweis : Vor Ansible 2.0 ansible_user war ansible_ssh_user.

96
Alexey Labzov

Gruppenvariablen

Sie können Variablen festlegen, die für alle Hosts gelten, indem Sie das in Ansible Best Practices angegebene Dokument Playbook-Layout verwenden und eine group_vars/all - Datei erstellen, in der Sie definiere sie .

---
# file: group_vars/all
ansible_connection: ssh 
ansible_ssh_user: vagrant 
ansible_ssh_pass: vagrant

Ich bin allerdings verwirrt darüber, was Sie versuchen zu tun. Sie sollten den Ansible-Benutzer oder das Kennwort nicht im Inventar angeben müssen. Wenn Sie Vagrant verwenden, tun Sie dies definitiv nicht. Wenn Sie Ansible über die Befehlszeile aufrufen, können Sie den Benutzer mit --user=vagrant Angeben und ihn mit --ask-pass Nach dem Kennwort fragen lassen. .

24
Philip Wilson

Ich denke, dass es besser ist, die SSH-Schlüsselinstallation auf allen Servern über den Pull zu verwenden. Sie sollten ssh-copy-id nur pro Knoten ausführen und Ihren ssh-Schlüssel überall installieren, damit sich ansible mit Ihrem ssh-Schlüssel anmelden kann. Es ist sicherer, Passwörter nicht in Playbook/Inventar zu speichern.

Dazu sollten Sie generieren Sie Ihr SSH-Schlüsselpaar und anschließend die SSH-Copy-ID für alle Server ausführen.

5
podarok

Fügen Sie unten zu Inventar-Hosts hinzu.

Für Ansible <2.0:

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

Für Ansible> = 2. :

[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant
4
Mithril

Haftungsausschluss: Ich habe dies nur unter OSX getestet. Aufgrund der verschiedenen Dokumente erwarte ich, dass es auf anderen Plattformen funktioniert.

"Projektverzeichnis" bezieht sich auf das Basisverzeichnis für das Vagrant-Projekt - das Verzeichnis, das Vagrantfile enthält.

Ansible Inventory-Datei, die von Vagrant automatisch generiert wird:

Vagrant erstellt eine Inventardatei mit den Standard-Ansible-Verbindungsvariablen. Suchen Sie danach in <project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory.

Diese Datei wird von Vagrant nach Bedarf neu generiert, sodass manuelle Änderungen überschrieben werden. Gemäß den Vagrant-Dokumenten können Sie jedoch mehrere Computer, Gruppenvariablen usw. in Vagrantfile angeben, die dieser Inventardatei hinzugefügt werden.

Konfigurieren Sie Ansible als Standard für diese Inventardatei:

Um diese Datei zum Standard zu machen, der vom Befehl ansible verwendet wird, wenn Sie sich im Projektverzeichnis (auf dem Host) befinden, fügen Sie eine ansible.cfg - Datei mit diesem Inhalt in Ihr Projektverzeichnis ein und ändern Sie den Pfad wie benötigt:

[defaults]
inventory = ./path/to/inventory

Um zu bestätigen, dass diese Inventardatei verwendet wird, suchen Sie sie als Standard, der von ansible gemeldet wird:

(aus dem Projektverzeichnis)

$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory Host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or

So bestätigen Sie Ihre Gastgeber:

$ ansible all --list-hosts hosts (2): master slave

Verwenden von Ansible mit diesen Hosts:

Innerhalb des Projektverzeichnisses sollten Sie dann in der Lage sein, ansible wie gewohnt mit den Hosts zu verwenden, die Sie in Vagrantfile definiert haben.

Zum Beispiel:

ansible slave -a 'hostname'
2
kentr