Wie führe ich ein Shell-Skript von Puppet aus?

8

Ich muss installieren, npmwas von gemacht wird curl http://npmjs.org/install.sh | shund ist neu in der Verwendung puppet. Ich bin ein bisschen verwirrt darüber, wie dies gemacht werden soll.

Ich bin mir bewusst, package {}dass ich einen Eintrag erstellen muss , der ein execZiel aufruft , aber wenn ich npmvon der Quelle aus installiere , wird dies nicht zu einer Kürzung führen.

Ich möchte natürlich nicht npmjedes Mal bauen, wenn ich puppeteinen Pull mache, also muss ich irgendwie überprüfen, ob er installiert ist oder nicht, also exec {}reicht es auch nicht aus , nur einen alleine zu machen.

Was kann ich machen?

Industriell
quelle

Antworten:

15

Etwas wie

exec { "install npm":
    command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
    creates => "/some/directory/somewhere"
}

Sollte den Trick machen.

Ich würde jedoch dringend davon abraten, da dies Ihren Installationsprozess von so vielen anderen Dingen abhängig macht, die ordnungsgemäß funktionieren, und nicht verfolgte Dateien, die wissen, wo in Ihrem Dateisystem abgelegt werden (und das noch bevor wir über die Auswirkungen auf die Sicherheit sprechen) nicht vertrauenswürdigen und nicht überprüfbaren Code automatisch ausführen). Sie sind weitaus besser dran, ein natives Paket für Ihr Betriebssystem zu erstellen, es in einem lokalen Repo abzulegen und dieses mithilfe einer Paketressource zu installieren.

womble
quelle
4

Ich würde alles, was Womble über das Verpacken und Installieren über Paketverwaltungstools aus einem lokalen Repository sagte, "unterstützen". Abhängig von der Plattform gibt es möglicherweise auch zuverlässige Repositorys von Drittanbietern, die Sie verwenden können.

Ein kleiner Trottel in Bezug auf Wombles Antwort: der Puppet Style Guide empfiehlt die Verwendung von einfachen Anführungszeichen, es sei denn, Sie benötigen doppelte Anführungszeichen für die variable Interpolation. In dem Code, den Womble anzeigt, gibt es keine Variablen, daher sollten alle "stattdessen sein".

Beachten Sie, dass ein Großteil der Puppendokumentation nicht aktualisiert wurde, um diese Empfehlung widerzuspiegeln, sodass Sie selbst in den offiziellen Dokumenten an vielen Stellen doppelte Anführungszeichen sehen. Der Styleguide und Puppet-Lint spiegeln die aktuell empfohlenen Best Practices wider, und die Dokumente werden hoffentlich irgendwann behoben.

Tim
quelle