Como fazer um arquivo / dir existe condicional no Puppet?

14

Estou tentando escrever uma função no fantoche que fará um fail se o caminho do diretório passado não existir.

if File["/some/path"] sempre retorna verdadeiro e if defined(File["/some/path"]) somente retorna verdadeiro se o recurso for definido no fantoche, independentemente de existir ou não.

Existe uma maneira de fazer isso com uma simples declaração if ?

Obrigado

    
por ddario 19.06.2013 / 13:26

3 respostas

28

Solução alternativa para isso: use somente em um "teste" de exec e exija na sua ação que você deseja executar:

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

whatever {"foo...":
  .....
  require => Exec["check_presence"],
}
    
por 19.06.2013 / 13:34
4

Lembre-se: os manifestos são compilados no mestre. Eles não sabem nada sobre o cliente, exceto pelos fatos que ele apresenta. Então, escreva um fato que tenha essa informação, ou dê um passo para trás e nos diga o que você está realmente tentando resolver, para que possamos chegar a uma abordagem melhor do que uma declaração if.

    
por 19.06.2013 / 13:29
0

Eu também estava com dificuldades para descobrir como impedir que um módulo fosse executado se um diretório não estivesse presente. Isso é o que eu achei que funcionou para mim.

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

Adicionando o caminho é o que realmente fez o truque para mim. Por algum motivo, mesmo que eu tenha adicionado o caminho para o comando de teste, como /bin/test , ele não funcionou corretamente.

Espero que isso ajude outras pessoas que possam estar tendo o mesmo problema.

    
por 19.05.2017 / 18:34

Tags