19 votos

¿Cómo hacer que un archivo / directorio exista condicional en Puppet?

Estoy tratando de escribir una función en títere que hará un fail si la ruta del directorio pasada no existe.

if File["/some/path"] siempre devuelve verdadero, y if defined(File["/some/path"]) solo devuelve verdadero si el recurso está definido en títere, independientemente de si realmente existe.

¿Hay alguna manera de hacer esto con una simple declaración if

Gracias

34voto

Pascal Schmiel Puntos 1318

Solución alternativa para esto: use onlyif en una "prueba" ejecutiva y solicítela en la acción que desea ejecutar:

 exec {"check_presence":
  command => '/bin/true',
  onlyif => '/usr/bin/test -e /path/must/be/available',
}

whatever {"foo...":
  .....
  require => Exec["check_presence"],
}

0voto

Mike Taylor Puntos 1

Yo también estaba teniendo dificultades para descubrir cómo evitar que un módulo se ejecutara si un directorio no estaba presente. Esto es lo que encontré que funcionó para mí.

 exec { 'module_name':
   command => "command to run with variables", # Double quotes for Variable interpolation
   path   => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:",
   onlyif => 'test -d /mydirectory',
   }

Agregar el camino es lo que realmente hizo el truco para mí. Por alguna razón, incluso si agregué la ruta al comando de prueba, como /bin/test , no pareció funcionar correctamente.

Espero que esto ayude a otras personas que puedan estar teniendo el mismo problema.

-1voto

Mike Puntos 1

También puede usar la función incorporada find_file () para ello ... devuelve undef cuando el archivo / ruta no existe y una cadena si existe.



https://puppet.com/docs/puppet/5.5/function.html#findfile

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: