Teste de marionetes, se houver um arquivo

8

Estou procurando uma maneira de testar se existe um arquivo no meu cliente (apenas teste, não criação). Eu encontrei o caminho (File.exists) no chef, mas isso não foi simples com o fantoche.

Desde já, obrigado.

bazic
fonte

Respostas:

6

A maneira "nativa" de fazer isso sem executivos, se você estiver no Puppet 2.6.6+:

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

(Essa funcionalidade existe desde o Puppet 2.6.0, mas houve uma série de problemas com a auditoria que realmente foram aprimorados com a versão 2.6.6.)

Se você estiver em uma versão mais antiga, também poderá solicitar ao recurso que execute no noopmodo, que exibirá apenas uma mensagem quando o Puppet for executado e o arquivo não existir:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}
jgoldschrafe
fonte
sim. isso é ótimo com a nova versão do fantoche. Eu tenho trabalhado com a versão 2.6.0 e tenho que escrever minha própria função ruby ​​para o arquivo existir / verificação vazia.
MealstroM
9

Você deve criar sua própria função ou usar exec com o comando onlyif. algo como :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
fonte
garantir => presente criará o arquivo se ele não existir. O bazic quer apenas testar e não criá-lo. Veja docs: docs.puppetlabs.com/references/stable/type.html#file
shakalandy
Obrigado, mas nada de interessante nos documentos.
bazic
Eu atualizei minha resposta
MealstroM 12/04/11
1
@MealstroM: " creates => '/etc/blabla'" Não seria melhor que um " onlyif"?
precisa
1
@EalstroM: neste caso em particular, createsteria o mesmo resultado e seria muito mais simples (e um pouco mais rápido). Sim, em geral onlyif, fornece mais flexibilidade.
Freiheit