Die Konfigurationsdatei kann unter Mac OS X nicht unter "/ etc / ansible /" gefunden werden

15

Ich bin unter Mac OS X und neu bei Ansible . Ich habe vergessen, wie ich es installiert habe. Ich denke über pip:

$ pip freeze
altgraph==0.12
ansible==1.9.2

Nach dem, was ich lese, sollte sich auf jeden Fall eine Konfigurationsdatei darin befinden /etc/ansible/, aber der Inhalt dieses Verzeichnisses ist nur:

$ ls -a /etc/ansible/
.       ..      .hosts.swp  hosts       roles

Es sieht auch nicht so aus, als wäre eine Umgebungsvariable definiert:

$ echo $ANSIBLE_CONFIG
# blank line

Ansible funktioniert soweit ich das beurteilen kann (ohne ein lokales ansible.cfgund es gibt nichts im ansibleOrdner im Benutzerverzeichnis), aber ich bin verwirrt.

Kann mir bitte jemand erklären, was ich hier nicht bekomme?

MikeiLL
quelle

Antworten:

14

Soweit ich weiß, befindet sich die Ansible- Konfigurationsdatei ( ansible.cfg) möglicherweise hier für Konfigurationseinstellungen auf Benutzerebene:

~/.ansible.cfg

Sowie die systemweite Konfiguration hier; Wo Sie angeben, dass Sie keine solche Datei finden können:

 /etc/ansible/ansible.cfg

Wenn Sie irgendwie mehrere Benutzer auf Ihrem System haben, befindet sich möglicherweise ein ~/.ansible.cfgFloating in einem ihrer Benutzerverzeichnisse, das Sie vergessen haben?

Sie geben an, dass Sie es möglicherweise mit installiert haben pip, aber wenn Sie die Homebrew-Formel für Ansible überprüfen , wurde es erst kürzlich am 4. September von Version 1.9.2 auf 1.9.3 gestoßen . Vielleicht haben Sie es über Homebrew installiert?

Und Ihr Hauptanliegen scheint zu sein, ob das ansible.cfgnotwendig ist:

Ansible funktioniert soweit ich das beurteilen kann (ohne ein lokales ansible.cfgund es gibt nichts im ansibleOrdner im Benutzerverzeichnis), aber ich bin verwirrt.

Kann mir bitte jemand erklären, was ich hier nicht bekomme?

Ja, es sollte ohne Konfiguration gut funktionieren. Bei den meisten Softwareteilen überschreibt eine Konfigurationsdatei lediglich die Standardeinstellungen des Kernsystems. Wenn dies ansible.cfgfehlt, funktioniert Ansible weiterhin, verwendet jedoch nur die Standardeinstellungen des Kernsystems. Wie in der offiziellen Dokumentation von Ansible erläutert :

Bestimmte Einstellungen in Ansible können über eine Konfigurationsdatei angepasst werden. Die Bestandskonfiguration sollte für die meisten Benutzer ausreichend sein, es kann jedoch Gründe geben, warum Sie sie ändern möchten.

Änderungen können vorgenommen und in einer Konfigurationsdatei verwendet werden, die in der folgenden Reihenfolge verarbeitet wird:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
JakeGould
quelle
nicht an beiden Orten. und ich bin der einzige Benutzer. Ich denke, ich könnte es einfach aus dem Git-Repo kopieren und in eines dieser Verzeichnisse legen.
MikeiLL
Guter Anruf. Es wurde nicht über Homebrew installiert, aber es war Version 1.9.2. Neuinstallation über Pip im Moment ...
MikeiLL
Jetzt bei 1.9.3, kann aber immer noch kein Konfigurationsverzeichnis an einem der oben genannten Speicherorte finden. Es gibt ~/.ansible/cpund /etc/ansible/mit dem gleichen Inhalt.
MikeiLL
Vielen Dank. Macht Sinn. Ich war mir nur nicht sicher, ob die Bestandskonfiguration normalerweise in einer der ansible.cfgDateien gespeichert ist, auf die verwiesen wird .
MikeiLL
1
@ MikeiLL Nein, mach dir keine Sorgen. Meine letzte Änderung war, als ich endlich Ihre Bedenken verstand. Ich kann mir ehrlich gesagt keine bekannte Software vorstellen, die nicht nach der Logik von "Ich habe Kernstandards, aber wenn ich eine Benutzerkonfigurationsdatei finde, die die Standardeinstellungen überschreibt" funktioniert. Das große Sicherheits- / Stabilitätsrisiko, das Sie erhalten, wenn Ihr gesamtes System von einer externen Konfigurationsdatei abhängig ist, besteht darin, dass das gesamte System zusammenbricht, wenn diese Datei nicht mehr vorhanden ist. Kein guter Plan. Glücklich, dass Sie jetzt verstehen, dass nichts Schlimmes passiert, wenn die Konfigurationsdatei fehlt.
JakeGould
13

Die homebrewFormel ersetzt die Zeichenfolge /etc/ansiblein constants.pymit /usr/local/etc/ansible. Scheint mir ein schlechter Juju zu sein.

Ich hatte nicht /usr/local/etc/ansibledanach brew install ansible. Ich habe jedoch bestätigt, dass ein gültiger ansible.cfgWert (vorerst) anerkannt wird.

Meine Empfehlungen:

  1. Nicht brewzur Installation verwenden Ansible.
  2. Seien Sie explizit über Ihre Konfiguration, hängen Sie nicht von globalen Systemumgebungsbedingungen ab, wie z /etc/ansible/ansible.cfg.

Code Refs:

Ersatz für ansible Formeln # 475: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb#L475

ansible constants.py # 61: https://github.com/ansible/ansible/blob/v1.9.3-1/lib/ansible/constants.py#L61

Mike D.
quelle
Homebrew arbeitet im User Space, so dass alles unter / usr / local ist. Das ist okay.
Gagarine
3

Unter OSX hatte ich ansible mit pip installiert und festgestellt, dass ansible.cfg nicht in / etc / ansible oder in meinem Home-Verzeichnis vorhanden ist.

Quelle: https://github.com/ansible/ansible/issues/18512

pip installiert im Allgemeinen keine Konfigurationsdateien und pip mit ansible ist nicht anders. Wenn Sie nur ansible ausprobieren möchten, funktioniert dies im Allgemeinen ohne die Datei ansible.cfg. (Sie müssen zwar Inventar angeben, dies können Sie jedoch in der Befehlszeile und nicht in einer Datei tun, wenn Sie möchten.) Wenn Sie eine Beispielkonfigurationsdatei zum Anpassen erhalten möchten, können Sie diese hier aus dem Tarball oder dem Quell-Repository herunterladen: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

Inventardateien werden hier erklärt: http://docs.ansible.com/ansible/intro_inventory.html Um Hosts für Inventar in der Befehlszeile anzugeben, gehen Sie einfach wie folgt vor:

ansible -i 'host1,host2,host3'  all -m command -a 'hostname'

Wenn Sie einen einzelnen Host über die Befehlszeile angeben möchten, verwenden Sie ein nachfolgendes Komma in der Inventarzeichenfolge:

ansible -i 'host1,' all -m command -a 'hostname'
Vaichidrewar
quelle
2

Ich habe festgestellt, dass Homebrew weder ein /etc/ansibleVerzeichnis noch eine Konfigurations- oder Hostdatei erstellt. Wenn Sie jedoch das /etc/ansibleVerzeichnis erstellen und die Konfiguration aus dem Github-Repository in das /etc/ansibleVerzeichnis kopieren , wird dies als Konfiguration erkannt.

Sie können auch in diese Konfiguration gehen und die Zeile auskommentieren, in der auch der Inventarort angegeben ist, um:

Inventar = / etc / ansible / hosts

Auf diese Weise führt ansible bei einer Homebrew-Installation dieselbe Leistung aus wie bei jeder anderen Installation, und die online gefundene Dokumentation kann mit der Homebrew-Version verwendet werden.

Guardius
quelle
/ usr / local / etc / wurde nicht erkannt. Versucht, das Verzeichnis / etc / ansible / zu erstellen und Hosts und ansible.cfg zu verschieben, hat gut funktioniert!
Aelkz