¿Cómo establecer la ruta al aplicar un solo módulo de marionetas?

12

Estoy tratando de ejecutar un solo módulo como este:

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

Sin embargo, recibo este tipo de error, que indica que la ruta no está configurada

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

No quiero especificar explícitamente la ruta en cada ubicación, y funciona bien cuando se ejecuta como parte de una carrera de títeres completa. ¿Cómo puedo especificar la ruta cuando ejecuto un solo módulo?

Cabra hess
fuente
1
¿Podría por favor aceptar la respuesta adecuada?
kenorb

Respuestas:

15

Los comandos en un Execrecurso tienen que estar completamente calificados (es decir, en /usr/bin/testlugar de test) o se debe establecer el pathatributo de ese Execrecurso.

Si puede modificar los manifiestos de Puppet, simplemente puede agregar la siguiente definición para establecer un pathatributo predeterminado para todos los Execrecursos para /bin:

Exec { path => "/bin" }

Como solución alternativa (más o menos) sucia, también puede establecer el valor predeterminado pathpara cualquier Execrecurso en la línea de comando:

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

Punteros de documentación:

joschi
fuente
2

Eso ... no debería funcionar como parte de una carrera completa. Necesita una ruta completa al ejecutable en el unlesscomando. ¿Quizás tiene una ruta establecida en un archivo global que forma parte de sus ejecuciones completas?

Intenta unless => '/usr/bin/[ -e "${logfile}" ]', en cambio.

Shane Madden
fuente
1

Estoy de acuerdo con Shane en que la ruta predeterminada probablemente esté establecida en un manifiesto de alcance global. Puedes hacer lo mismo pero no puedes pasarlo como argumento, así que usa stdin:

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

o ponga Exec e incluya líneas en example.ppy luego use puppet apply -v ... example.pp.

Dominic Cleal
fuente
1

Necesita usar una ruta totalmente calificada.

Por ejemplo, ya sea:

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

o:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
kenorb
fuente