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.

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',
}

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 
}

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.