Frage Gibt es eine elegantere Möglichkeit, den Chef-Client remote auszuführen?


Dies ist der Weg, der im Schnellstart-Tutorial von Chef empfohlen wird:

knife ssh name:mynode -a ipaddress  -x ubuntu -i mycredentials.pem "sudo chef-client"

Das ist wirklich tollpatschig. Gibt es wirklich keinen besseren Weg, oder ist es die Idee, dass Knoten in einer realen Produktionsumgebung sowieso automatisch aktualisiert werden?


21
2017-07-23 06:57


Ursprung


Wie denkst du, ist das "ungeschickt"? - womble♦
Nun, sag es so. Das wäre nicht ungeschickt: "Messer Update Name: Mynode". Sowohl die Verbindung mit dem Client als auch der Name des Befehls chef client (und die Tatsache, dass er mit sudo-Berechtigungen ausgeführt werden muss) müssen nicht eindeutig sein. Das Messer ist gut darin, viel anderes Chaos zu abstrahieren - warum nicht? - Steve Bennett


Antworten:


Das ist ungefähr so, wie Sie die Dinge beginnen, aber es muss nur einmal getan werden. Die anfängliche Ausführung von Chef-Client aktiviert und startet den Chef-Client-Daemon typischerweise als init.d-Dienst.

Wenn du es wirklich eleganter machen wolltest, könntest du Messer-SSH ablegen und ssh direkt ausführen:

ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client

das wird wahrscheinlich schneller sein, da knife-ssh eine Suche gegen den Chef-Server durchführt, um Knoten abzurufen, die mit dem Suchbegriff übereinstimmen (in diesem Fall) name:dynode), die Sie nicht unbedingt tun müssen, wenn Sie die IP-Adresse bereits kennen.


11
2017-07-23 08:59



Ok, ich denke, das beantwortet die Frage - nein, es gibt keinen besseren Weg. Schade, dass "Messer Bootstrap" kann nicht auch tatsächlich Chef-Client laufen. - Steve Bennett
Normalerweise führe ich den Chef-Client am Ende meines Bootstrap-Skripts aus, um dieses spezielle Problem zu lösen. Wenn Sie jedoch Messer-Ssh nicht mögen, dann werden Sie wahrscheinlich denken, dass die Messer-Bootstrap-Einbauten ebenso unbeholfen sind. Dort ist ein Beispielskript auf GitHub. - Tim Potter
Das ec2 server create Messer Plugin läuft nur Bootstrap gefolgt von SSH + Chef-Client. Wenn Sie sich also besser fühlen, haben die Chefkoch-Autoren nichts besonders Klügeres herausgefunden. - kgilpin
Wenn sich der Chef-Client etwas Zeit nimmt, bekommen Sie eine Auszeit. :( ssh: Verbindung zum Host herstellen xx.xx.xx.xx Port 22: Zeitüberschreitung der Verbindung - gdanko
In dem Fall, in dem der Chef-Client nach dem Bootstrapping als Daemon ausgeführt wird, und ungeachtet des gesetzten Intervalls, ist der eleganteste Weg, ihn aufzurufen: ssh ubuntu @ ipaddress -i mycredentials.pem -f -n "sudo killall -USR1 Chef -Klient". Fork ssh dies gleichzeitig zu einer Liste von Knoten zu tun. - Andrew S


Du könntest benutzen Messer ssh Führen Sie den Chef-Client auf allen Boxen aus, die eine bestimmte Rolle oder ein bestimmtes Rezept enthalten:

knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo 

Oder wenn Sie in EC2 sind:

knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname 

11
2018-02-04 22:09





Sie könnten ansible verwenden, um den Chef-Client zu implementieren und auszuführen.

$ ansible -i hosts all -a 'chef-client'

ansible ist einfach mit pip zu installieren:

pip install ansible

Ihre Inventardatei (im Beispiel "Hosts" genannt) könnte folgendermaßen aussehen:

[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root

(notice "all" ist der Name der Gruppierung in der Konfigurationsdatei für unser Beispiel - dies ist beliebig und kann alles sein. Ihre Inventardatei kann auch andere Gruppierungen enthalten, zB [web_wervers], [database_servers], [chef_servers] , usw.)

Also, noch einmal, alles zusammen:

> ansible -i hosts all -a 'chef-client'

oder vielleicht:

> ansible -i hosts all -a 'systemctl status'


2
2018-05-22 05:36





Ich verwende Jenkins CI, um die Läufe zu verwalten. Der Linux-Server ist als Arbeitsstation eingerichtet und Jenkins ist darauf installiert. So kann ich die Knoten mit modifizierter run_list booten. Der Bootstrapping-Prozess führt am Ende einen Chef-Client.

Für die Adhoc-Ausführung führt der Jenkins-Job Messerbefehle aus, um die run_list für einen Knoten zu modifizieren und das SSH-Plugin zum Ausführen des Chef-Clients auf dem gewünschten Knoten zu verwenden.


0
2018-05-19 14:52





Es ist schade, dass wir einen ssh-Unterstrich verwenden müssen, um einen Befehl an den Chef-Client zu senden.

Es scheint, dass, obwohl jeder Chef-Client hat eine sichere Verbindung mit Chef-Server eingerichtet, aber Chef Server bietet keine Befehls-Multiplexer über diese sichere Verbindung, warum?


0
2018-03-07 06:16