2012-12-30 12 views
6

Ho una scatola base CentOS in Vagrant che sono in piedi con un manifest di marionette. Ecco cosa c'è nel manifesto finora:manifest Puppet - comandi 'sudo'?

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 

Ma quando dico vagrant up, ottengo un errore che sudocmd yum update uscito con un 1. Ho cercato sul web, ma non ho trovato una soluzione per questo ancora. Qualsiasi aiuto?

======== EDIT ========= Ho letto le risposte e sono d'accordo - grazie ragazzi. Sto solo usando questo su una scatola di sviluppo per fare casino e avevo bisogno che fosse aggiornato prima di iniziare a lavorare su di esso.

risposta

3

Quindi Puppet non è pensato per eseguire attività come un aggiornamento di yum. È uno strumento di gestione della configurazione, non qualcosa che sostituisce completamente questo tipo di attività. Inoltre ti imbatti in molti problemi con questo. Cosa succede se Puppet viene demonizzato? Ciò influirà negativamente sul nostro ambiente di produzione? Cosa succede se un utente esegue accidentalmente Puppet e aggiorna un pacchetto che rompe i nostri script (JDK, MySQL, PHP, ecc.). Per quanto ne so, non c'è soluzione a questo perché non è davvero considerato un problema. Scott Pack over su Serverfault ha fornito una risposta molto descrittiva a una domanda simile.

11

Con puppet, non è necessario utilizzare sudo, è sufficiente eseguire direttamente il comando yum. Normalmente i comandi verranno eseguiti come root per impostazione predefinita, ma è possibile specificare quale utente.

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

Tuttavia, vi consiglio vivamente di non utilizzare alcun tipo di non-condizionale exec con il burattino. Funzionerà ogni volta che scatta il burattino. Come Forrest already said, non è ciò per cui è progettato il burattino. Non utilizzerei puppet per un yum update e il mio exec s ha sempre creates, onlyif, refreshonly o unless per garantire che funzionino solo quando necessario.