Prueba de marionetas si existe un archivo

8

Estoy buscando una forma de probar si existe un archivo en mi cliente (solo prueba, no creación). He encontrado el camino (File.exists) en chef, pero eso no fue simple con títeres.

Gracias por adelantado.

bazic
fuente

Respuestas:

6

La forma "nativa" de hacer esto sin ejecutivos si está en Puppet 2.6.6+:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(Esta funcionalidad existe desde Puppet 2.6.0, pero hubo una serie de problemas con la auditoría que solo se resolvieron con la versión 2.6.6).

Si tiene una versión anterior, también puede indicarle al recurso que se ejecute en noopmodo, que solo mostrará un mensaje cuando Puppet se ejecute y el archivo no exista:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}
jgoldschrafe
fuente
Si. Esto es genial con la nueva versión de Títere. He estado trabajando con pre 2.6.0 y tengo que escribir mi propia función ruby ​​para el archivo existe / verificación vacía.
MealstroM
9

Debe crear su propia función o usar exec con el comando onlyif. algo como :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
fuente
sure => present creará el archivo si no existe. bazic solo quiere probar y no crearlo. Ver documentos: docs.puppetlabs.com/references/stable/type.html#file
shakalandy
Gracias, pero nada interesante en los documentos.
bazic
ive actualizado mi mi respuesta
MealstroM
1
@MealstroM: ¿No sería " creates => '/etc/blabla'" mejor que un " onlyif"?
Freiheit
1
@MealstroM: en este caso particular, createstendría el mismo resultado y sería mucho más simple (y un poco más rápido). Sí, en general onlyifproporciona más flexibilidad.
Freiheit