Como posso usar o Puppet para manter as chaves de host SSH nas recriações do sistema?

3

Eu tenho alguns ambientes de laboratório onde os computadores são reconstruídos periodicamente, mas precisam manter as mesmas chaves de host ssh para que as pessoas que se conectam aos computadores do laboratório (geralmente de seus próprios sistemas e não sob minha administração) don ' t receber erros de "chave de host alterada" sempre que fizermos upgrade dos sistemas operacionais dos sistemas de laboratório.

(Isso é semelhante à pergunta Fluxo de trabalho mais suave para manipular o host SSH erros de verificação? mas neste caso já decidimos que manter as mesmas chaves nas recriações do sistema é a melhor solução para nós.)

Neste momento, tenho um módulo Puppet chamado ssh que tem a seguinte cláusula:

file { "/etc/ssh/":
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  source  => "puppet:///modules/ssh/$fqdn",
  recurse => true,
  require => Package['openssh-server'],
  notify  => Service['sshd'],
}

No mestre de marionetes, cada host tem seu próprio diretório que contém todos os arquivos de chave do host ( ssh_host_key , ssh_host_dsa_key , ssh_host_rsa_key , etc.), conforme implícito na definição de recurso file . Meu problema é que isso parece mixar código e dados (já que todas as chaves do host residem dentro de um diretório de módulos) e eu tenho que fazer outro commit no Puppet VCS toda vez que eu adiciono um novo conjunto de hosts. Existe uma maneira melhor de gerenciar essas coisas?

    
por asciiphil 16.05.2013 / 21:07

2 respostas

4

My problem is that this feels like mixing code and data (since all of the host keys live inside a module directory) and I have to make another commit to the Puppet VCS every time I add a new set of hosts. Is there a better way to manage these things?

Você pode ajustar seu fileserver.conf e basicamente compartilhar outro diretório que você usa apenas para a configuração ssh se você quiser separar seus arquivos fantoches das configurações / chaves SSH.

fileserver.conf
[sshconfig]
  path /srv/puppet/sshconfig/
  allow *

Com uma configuração como acima, seu manifesto poderia ser exibido abaixo e os arquivos seriam recuperados de /srv/puppet/sshconfig/$fqdn/ .

file { "/etc/ssh/":
  source  => "puppet:///sshconfig/$fqdn",
  ...
}
    
por 16.05.2013 / 21:54
0

Minha sugestão é que você crie um module ou um script onde você envia seu host para um servidor external , então você dá um sort -u neste arquivo, excluindo qualquer entrada duplicada, depois que você faça o upload deste arquivo para todas as suas máquinas, claro, tomando cuidado com as novas entradas neste ssh_known_hosts também.

    
por 16.05.2013 / 21:41

Tags