2013-07-17 7 views
12

So che le basi di ordinare in fantoccio per eseguire apt-get update prima di un pacchetto specifico, ma vorrebbe specificare di eseguire solo apt-get update solo una volta e poi eseguire il resto del file fantoccio. È possibile?puppet apt-get update solo una volta prima di qualsiasi altra cosa?

Tutti i metodi elencati Here devono eseguire apt-get prima di ogni pacchetto o utilizzare le frecce o è necessario specificare ciascun pacchetto.

risposta

28

Questa sarebbe la mia raccomandazione da quella lista:

exec { "apt-update": 
    command => "/usr/bin/apt-get update" 
} 

Exec["apt-update"] -> Package <| |> 

Questo farà sì che l'exec viene eseguito prima qualsiasi pacchetto, non che l'exec viene eseguito prima ogni pacchetto. In realtà, qualsiasi risorsa fantoccio sarà sempre solo eseguito al massimo una volta al burattino run.

Ma se hai intenzione exec che si verifichi prima di qualsiasi tipo di risorsa Credo che si potrebbe fare qualcosa di simile:

exec { "apt-update": 
    command => "/usr/bin/apt-get update", 
    before => Stage["main"], 
} 

The Stage "principale" è la fase di default per ogni risorsa, quindi questo fare in modo che l'exec si verifichi prima di ogni altra cosa.

Spero che questo aiuti.

+0

Grazie Sekm. Ho frainteso il modo in cui ha funzionato e ho pensato che se ci fossero 5 pacchetti, ad esempio, eseguirebbe apt-get update 5 volte. Grazie per averlo spiegato e anche per la seconda opzione in quanto potrebbe tornare utile per altre cose. – isimmons

1

Con modulo puppetlabs-apt, dovrebbe essere sufficiente per definire la dipendenza del modulo per qualsiasi pacchetto che verrà installato:

Class['apt'] -> Package<| |> 

Ciò presuppone configurazione di base di apt, ad esempio:

class { 'apt': 
    update => { 
     frequency => 'daily', 
    }, 
    purge => { 
     'sources.list' => false, 
     'sources.list.d' => true, 
    }, 
    } 
+0

Questa è la risposta migliore; è quello raccomandato nei documenti di Puppet ed evita di dover specificare manualmente un comando da eseguire. –

Problemi correlati