Frage Wie setze ich den Standard-Benutzernamen / das Passwort für die SSH-Verbindung?


Ich benutze Ansible und ich habe diese Konfiguration in meinem Inventar / alle:

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


35
2017-09-16 19:11


Ursprung


~/.ssh/config - ceejayoz
@ceejayoz Könntest du ein wenig erklären? - Robert
google.com/webhp?#q=ssh%20config - ceejayoz
Ich bin kein Ansible-Administrator und die Dokumente sind trübe zu diesem Thema (Ist das eine "Variable" oder ein "Parameter" und gibt es einen Unterschied?) Aber es sieht so aus, als ob Sie Variablen auf Gruppenebene definieren können. - DerfK


Antworten:


Sie können folgenden Abschnitt zu Ihrer Inventardatei 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.


42
2017-12-11 10:12



Über Ansible 2.0 sollte es sein: [all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin - zx1986
@ zx1986 wo hast du das gelesen? - 030
@ 030 hier: docs.ansible.com/ansible/ ... - zx1986
Beachten Sie, dass Port 22 der Standard für ist ansible_portSie müssen es also nicht explizit angeben, es sei denn, es ist anders. Wenn jemand weiß, wie man Variablen gleichzeitig auf mehr als eine Gruppe anwenden kann (aber nicht auf "alle"), scheint die Kommatrennung nicht zu funktionieren. - William Turrell
@WilliamTurrell ein wenig spät, aber .. Sie können eine Gruppe von Gruppen (mit dem Modifizierer: children) erstellen und anschließend die Variablen (mit dem Modifizierer: vars) festlegen. - Lasse Halberg Haarbye


Gruppenvariablen

Sie können Variablen, die für alle Hosts gelten, mithilfe von Layout des Spielbuchs spezifiziert in Ansible's Best Practices dokumentieren und erstellen group_vars/all Datei wo Sie definiere sie.

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

[Bearbeiten] Ich bin jedoch verwirrt, was du versuchst zu tun. Sie sollten den Ansible-Benutzer oder das Passwort im Inventar nicht angeben müssen. Wenn Sie Vagrant verwenden, tun Sie das auf keinen Fall. Wenn Sie Ansible über die Befehlszeile aufrufen, können Sie den Benutzer mit angeben --user=vagrant und lassen Sie es mit dem Passwort nachfragen --ask-pass.


15
2017-09-16 21:31



Ich brauche nur eine bessere Organisation meiner Infrastruktur. Wenn immer ich vagrant: vagrant verwenden werde ich es Konfiguration an einem Ort, wo Ansible laden standardmäßig legen, aber ich weiß nicht wo. Jede Verbindung, die ausgeführt werden soll, muss sie verwenden. - Robert
Muss die Datei benannt sein group_vars/all/main.yml oder einfach group_vars/all? - realtebo


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

Dafür solltest du erzeuge dein ssh-Schlüsselpaar  und führen Sie anschließend ssh-copy-id für alle Server aus.


3
2017-09-18 07:33



Wenn jemand das Passwort aus Ihrer Konfigurationsdatei stehlen kann, wird es wahrscheinlich auch Ihre ssh-Schlüssel können. Und das hat überhaupt nichts mit der Beantwortung von OP-Fragen zu tun. Bei dieser Frage wurde nicht nach Alternativen gefragt. - Muh Fugen
@MuhFugen> Wie kann ich sie nur an einem Ort konfigurieren? Gibt es eine Datei mit diesen Parametern? Dies ist eine genaue Formulierung, die die Tür für die Meinung sowie die Antwort gibt ein Verständnis für die richtige Richtung. Stealing Konfiguration (die in der Git Repo irgendwo leben könnte) ist nicht das gleiche wie Diebstahl privaten Schlüssel. - podarok


Disclaimer: Ich habe das nur auf 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 enthält Vagrantfile.

Ansible Inventory-Datei, automatisch erstellt von Vagrant:

Landstreicher Erstellt eine Inventardatei mit der Standard-Ansible-Verbindung vars. Halte Ausschau danach <project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory.

Diese Datei wird bei Bedarf von Vagrant neu erstellt, so dass manuelle Änderungen überschrieben werden. Laut den Dokumenten von Vagrant können Sie jedoch mehrere Maschinen, Gruppenvariablen usw. angeben Vagrantfile und sie werden dieser Inventardatei hinzugefügt.

Konfigurieren Sie Ansible als Standard für diese Inventardatei:

Um diese Datei zum Standard zu machen, der von ansible Wenn Sie sich im Projektverzeichnis (auf dem Host) befinden, fügen Sie ein ansible.cfg Datei in Ihrem Projektverzeichnis mit diesen Inhalten und ändern Sie den Pfad nach Bedarf:

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

Um zu überprüfen, ob diese Inventardatei verwendet wird, suchen Sie nach dem von ansible angegebenen Standard:

(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

Um deine Gastgeber zu bestätigen:

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

Verwenden von Ansible mit diesen Hosts:

Aus dem Projektverzeichnis sollten Sie dann in der Lage sein zu verwenden ansible wie bei den Hosts, die Sie definiert haben Vagrantfile.

Zum Beispiel:

ansible slave -a 'hostname'

2
2017-12-14 20:52





Fügen Sie unten Inventar-Hosts hinzu.

Für Ansible <2.0:

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

Zum Ansible> = 2,0:

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

1
2017-11-03 07:23



Der Link erwähnt ansible_ssh_passnicht ansible_pass. - Matthias Weiler