Omnibus installierte Chef- und RVM-Probleme

Omnibus installierte Chef- und RVM-Probleme

Ich versuche, eine Sache herauszufinden und hätte gerne die Meinung von jemand anderem dazu. Ich habe Chef auf meinem Ubuntu-Server (11.10) über das tolleOmnibus-Installation. Es hat einwandfrei funktioniert. Ich konnte Chef-Client ausführen und es lief ohne Probleme.

Dann habe ich RVM und zwei Rubine installiert - und da fingen meine Probleme an. Direkt danach habe ich RVM systemweit installiert, d. h. durch Ausführen von:

curl -L https://get.rvm.io | sudo bash -s stable

Und nachdem ich 2 Rubies installiert hatte (eins davon als Standardruby auf dem System festgelegt), konnte ich Chef-Client nicht mehr ausführen. Ich bekam die Meldung „Befehl nicht gefunden“, wenn ich es als normaler Benutzer ausführte. Ich dachte, RVM bringt einige Pfade durcheinander, und das war der Grund. Ich dachte, ich würde es als Root ausführen, d. h.:

sudo su -
chef-client

gleiches Ergebnis. Dann habe ich rvmsudo ausprobiert, wie es von einigen Leuten vorgeschlagen wurde, aber das hat auch nicht geholfen. Dann habe ich es ein letztes Mal versucht - ich habe es als

sudo chef-client

Und das hat gut funktioniert! Ich bin wirklich verwirrt, warum das oben genannte funktioniert und warum das Ausführen von chef -client als Root (d. h. sudo su -; chef-client) NICHT funktioniert. Übersehe ich etwas? Ich wäre für alle Hinweise oder Erklärungen sehr dankbar, da ich ein wenig ratlos bin. Ich möchte chef-client als Daemon als Root ausführen und das kann ich mit dem obigen sudo-Befehl nicht tun – ich weiß, dass ich einen Benutzer mit nopasswd einrichten könnte und es wahrscheinlich funktionieren würde, aber ich würde wirklich gerne verstehen, was hier vor sich geht ;)

Antwort1

Sieht aus, als ob Sie ein Problem beim Laden des Pfads haben.

Das Omnibus-Installationsprogramm installiert Chef in /opt/chef/bin/chef-clientund erstellt dann einen symbolischen Link zu/usr/bin/chef-client Referenz 1damit es allen Benutzern in zur Verfügung steht $PATH.

Sobald Sie RVM installieren, wird es mit $PATH herumspielen, insbesondere damit, welches Ruby von Chef verwendet werden soll, da esLaden des Ruby der aktuell laufenden Umgebungbeim Ausführen.

Wenn Sie mit ausführen sudo su -, wechseln Sie zur rootUmgebung von und führen alle zugehörigen Profil-/Bashrc-/Bash_Profile-Loader aus, die die Umgebung eines Benutzers einrichten.

Beim Ausführen mit sudoladen Sie nicht die gesamte Umgebung, sodass RVM die Pfade nicht ändert.

Um die Auswirkung der Shell-Unterschiede zu ermitteln, können Sie einen weiteren Test durchführen:

sudo which ruby
sudo su - which ruby

Und vergleichen Sie die Unterschiede.

Vielleicht möchten Sie einen Blick auf dieChef-KundeCookbook, das Ihnen nach der Ausführung dabei hilft, einen Service-Daemon zur Steuerung/Konfiguration Ihres Chef-Client-Dienstes einzurichten (wir verwenden dies auf allen unseren Servern).

Da RVM standardmäßig systemweit installiert ist, müssen Sie es möglicherweise für Root (oder den Benutzer, als den Sie Chef ausführen möchten, aber ich würde Root vorschlagen) deaktivieren.

verwandte Informationen