Variável eval do Puppet apenas uma vez

3

Eu gero uma senha para novos usuários com apg

Simples:

$password = generate('/etc/puppet/utils/gen_password')

O único problema com este comando é que eu preciso dele apenas uma vez, mas ele é avaliado toda vez que um fantoche é executado.

Esta variável é usada dentro de uma declaração Exec .

Existe alguma possibilidade de avaliar o varable apenas se for necessário? Por exemplo, se for usado pela primeira vez.

    
por Tomasz Olszewski 16.12.2013 / 14:33

2 respostas

3

Você pode usar várias opções para executar o exec condicionalmente. Escolha qual deles atende às suas necessidades:

  • a menos que - Se este parâmetro for definido, este exec será executado a menos que o comando retorna 0.
  • cria - Um arquivo para procurar antes de executar o comando. O comando só será executado se o arquivo não existir.
  • onlyif - Se este parâmetro for definido, este exec só será executado se o o comando retorna 0.
  • refreshonly - O comando só deve ser executado como um mecanismo de atualização para quando um dependente objeto é alterado.
por 16.12.2013 / 15:02
1

Se você não estiver usando a senha em um Exec, os métodos sugeridos por Kazimieras Aliulis podem não funcionar para você .

Se fosse eu, provavelmente apenas modificaria o script /etc/puppet/utils/gen_password para sempre retornar a mesma senha por serviço / host. Você teria um fantoche chamando o genero assim generate("/etc/puppet/utils/gen_password $::clientcert") .

Em seguida, no script, você verificaria se uma senha foi gerada para esse sistema e se ele foi retornado. Caso contrário, gere um novo, armazene-o e devolva-o.

Se possível, não armazene e retorne a senha não criptografada. Em vez disso, gere e retorne o hash de senha salgada.

É claro que se você pudesse pular senhas completamente e usar certificados ou chaves para autenticação seria ainda melhor.

    
por 16.12.2013 / 21:30

Tags