2012-12-30 17 views
6

Ich habe eine CentOS-Base-Box in Vagrant, dass ich mit einem Marionettenmanifest aufstehe. Hier ist, was im Manifest ist so weit:Marionettenmanifest - 'Sudo' Befehle?

class base { 
    exec { "sudocmd": 
     path => ["/usr/bin/","/usr/sbin/","/bin"], 
     command => "sudo yum update -y", 
    } 

    package { "man": 
     ensure => present, 
    } 

    package { "bind": 
     ensure => present, 
    } 

    package { "bind-utils": 
     ensure => present, 
    } 
} 

include base 

Aber wenn ich vagrant up sagen, bekomme ich einen Fehler, die sudocmd yum update mit einem 1. verließen die ich im Internet geschaut habe, aber ich habe keine Lösung gefunden das noch nicht. Irgendeine Hilfe?

======== EDIT ========= Ich lese die Antworten und ich stimme zu - danke Jungs. Ich benutze das nur auf einer Dev-Box, um herumzualbern und ich brauchte es, um auf dem neuesten Stand zu sein, bevor ich anfing, daran zu arbeiten.

Antwort

3

So Marionette ist nicht wirklich dazu gedacht, Aufgaben wie ein yum-Update durchzuführen. Es ist ein Konfigurations-Management-Tool, nicht etwas, das diese Art von Aufgabe vollständig ersetzt. Außerdem stößt man hier auf viele Probleme. Was ist, wenn Marionette dämonisch ist? Wird sich das negativ auf unsere Produktionsumgebung auswirken? Was passiert, wenn ein Benutzer Puppet versehentlich ausführt und ein Paket aktualisiert, das unsere Skripte (JDK, MySQL, PHP usw.) beschädigt? Soweit ich weiß, gibt es dafür keine Lösung, weil es nicht wirklich als Problem angesehen wird. Scott Pack über Serverfault lieferte eine sehr beschreibende Antwort auf eine ähnliche Frage.

11

Mit Marionette sollten Sie nicht sudo verwenden müssen, führen Sie einfach den yum Befehl direkt aus. Normalerweise werden Befehle standardmäßig als root ausgeführt, Sie können jedoch angeben, welcher Benutzer.

exec { "sudocmd": 
    path => ["/usr/bin/","/usr/sbin/","/bin"], 
    command => "yum update -y", 
    user => root, 
} 

Allerdings empfehle ich dringend, dass Sie nicht jede Art von nicht-bedingten exec mit Puppe verwenden Sie. Das wird jedes Mal laufen, wenn die Puppe läuft. Als Forrest already said ist es nicht, was für eine Puppe entwickelt wurde. Ich würde keine Marionette für eine yum update verwenden, und meine exec s haben immer creates, onlyif, refreshonly oder unless um sicherzustellen, dass sie nur bei Bedarf laufen.