Puppet assegura que o arquivo é o diretório OU o link. Ou assegure o diretório somente se ausente?

3

2 servidores CentOS nos quais gostaria de aplicar o mesmo manifesto. O manifesto cria um usuário com um local de diretório pessoal personalizado em /var/username

O problema está em um dos servidores /var/username tem como um link simbólico para /data/username . Então, simplesmente executar ensure => 'directory', tentaria substituir o link simbólico.

E eu não posso usar ensure => 'present' porque isso cria um arquivo por padrão se ele não existir. Então, para novos servidores que este manifesto se aplica a um arquivo em branco será criado quando eu realmente precisar que seja um diretório.

  1. Existe uma maneira de fazer o link ensure diretório ou ? Então, se estiver ausente, um diretório será criado. E se é um link, então apenas deixe isso em paz? Por padrão, o tipo Puppet file cria um arquivo ao fazer ensure => 'present' .

  2. Ou uma maneira de fazer if absent ensure directory else leave it alone ?

Que tal exec , fazendo um tipo simples de bash if /var/username not exist then mkdir ?
Desagradável, mas funcionaria.

A solução ideal é provavelmente evitar casos especiais desde o início. Ter várias variantes de configuração em um único manifesto parece um pouco errado. Então, eventualmente eu vou:

  • normalizar as VMs (pode alternar de um link simbólico para uma montagem de ligação, por exemplo)
  • dê a eles manifestos separados, já que a configuração entre eles é diferente

Mas, para os propósitos desta pergunta, gostaria de saber se há alguma opção / sintaxe no Puppet que atualmente não conheço.

    
por batfastad 08.01.2015 / 13:26

1 resposta

2

Você sempre pode usar $hostname ou $certname para lidar com a exceção:

file { "/var/username":
mode    => 440,
ensure  => $hostname ? {
  'oddballserver' => link,
  default  => directory,
  }, 
target => $hostname ? {
  'oddballserver' => '/data/username',
}

Isso não foi testado, mas baseado na lógica que uso para uma variedade de coisas em nossos manifestos. YMMV.

    
por 08.01.2015 / 15:25

Tags