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?
~/.ssh/config
Antworten:
Sie können Ihrer Inventardatei den folgenden Abschnitt hinzufügen:
Hinweis: Vor Ansible 2.0
ansible_user
waransible_ssh_user
.quelle
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
, sodass Sie ihn nicht explizit angeben müssen, sofern nicht anders angegeben. Interessiert es jemanden, der es versteht, Variablen gleichzeitig auf mehr als eine Gruppe anzuwenden (aber nicht auf 'alle'), scheint die Kommatrennung nicht zu funktionieren.Gruppenvariablen
Sie können Variablen festlegen, die für alle Hosts gelten, indem Sie das in Ansibles Best Practices- Dokument angegebene Playbook-Layout verwenden und eine Datei erstellen, in der Sie sie definieren .
group_vars/all
[edit] Ich bin allerdings verwirrt darüber, was du versuchst zu tun. Sie müssen den Ansible-Benutzer oder das Kennwort nicht im Inventar angeben. Wenn Sie Vagrant verwenden, ist dies definitiv nicht der Fall. Wenn Sie Ansible über die Befehlszeile aufrufen, können Sie den Benutzer mit angeben
--user=vagrant
und ihn nach dem Kennwort fragen lassen--ask-pass
.quelle
group_vars/all/main.yml
oder einfachgroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Ich denke, dass es besser ist, die Installation von SSH-Schlüsseln 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 Ansible sich mit Ihrem SSH-Schlüssel anmelden kann. Es ist sicherer, Passwörter nicht im Playbook / Inventar zu speichern.
Dazu sollten Sie Ihr ssh-Schlüsselpaar generieren und anschließend ssh-copy-id für alle Server ausführen.
quelle
Fügen Sie unten den Inventar-Hosts hinzu.
Für Ansible <2.0:
Für Ansible> = 2.0 :
quelle
ansible_ssh_pass
, nichtansible_pass
.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 enthält
Vagrantfile
.Von Vagrant automatisch generierte Ansible Inventory-Datei:
Vagrant erstellt eine Inventardatei mit den Standard-Ansible-Verbindungsvariablen. Suchen Sie es in
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.Diese Datei wird von Vagrant bei Bedarf neu generiert, sodass manuelle Änderungen überschrieben werden. Den Vagrant-Dokumenten zufolge können Sie jedoch mehrere Computer, Gruppenvariablen usw. in angeben
Vagrantfile
, die dieser Inventardatei hinzugefügt werden.Konfigurieren Sie Ansible als Standard für diese Inventardatei:
Um diese Datei als Standard für den
ansible
Befehl festzulegen, wenn Sie sich im Projektverzeichnis (auf dem Host) befinden, fügen Sie eineansible.cfg
Datei mit dem folgenden Inhalt in Ihr Projektverzeichnis ein, und ändern Sie den Pfad nach Bedarf: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
Ansible mit diesen Hosts verwenden:
Aus dem Projektverzeichnis heraus sollten Sie dann in der Lage sein,
ansible
die von Ihnen definierten Hosts wie gewohnt zu verwendenVagrantfile
.Zum Beispiel:
quelle