come impostare il percorso quando si applica il singolo modulo fantoccio?


12

Sto cercando di eseguire un singolo modulo in questo modo:

puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'

Tuttavia, ottengo questo tipo di errore, indicando che il percorso non è impostato

Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.

Non voglio specificare esplicitamente il percorso in ciascuna di queste posizioni, e funziona bene quando viene eseguito come parte di una corsa di marionette completa. Come posso specificare il percorso quando eseguo un singolo modulo?


1
Potresti per favore accettare la risposta appropriata?
Kenorb,

Risposte:


15

I comandi in una Execrisorsa devono essere pienamente qualificati (ovvero /usr/bin/testinvece di test) oppure l' pathattributo di quella Execrisorsa deve essere impostato.

Se puoi modificare i manifest Puppet (s) puoi semplicemente aggiungere la seguente definizione per impostare un pathattributo predefinito per tutte le Execrisorse a /bin:

Exec { path => "/bin" }

Come soluzione (più o meno) sporca puoi anche semplicemente impostare il valore predefinito pathper qualsiasi Execrisorsa sulla riga di comando:

$ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp

Puntatori alla documentazione:


2

Quello ... non dovrebbe funzionare come parte di una corsa completa. È necessario un percorso completo per l'eseguibile nel unlesscomando. Forse hai un percorso impostato in un file globale che fa parte delle tue corse complete?

Prova unless => '/usr/bin/[ -e "${logfile}" ]', invece.


1

Concordo con Shane che il percorso predefinito è probabilmente impostato in un manifest con ambito globale. Potresti fare lo stesso ma non puoi passarlo come argomento, quindi usa stdin:

$ puppet apply -v --modulepath=moduleshere --noop <<EOF
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin" }
include myclass
EOF

oppure metti Exec e includi le linee example.ppe poi usa puppet apply -v ... example.pp.


1

È necessario utilizzare un percorso completo.

Ad esempio:

exec { "sample":
  command => "/usr/bin/test",
}

o:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.