Coleção sshkey Puppet para sistemas não fantoches

2

Nos meus sistemas, eu uso os recursos exportados e a coleta de recursos para gerenciar o ref / etc / ssh / known_hosts do meus sistemas. Isso funciona muito bem para todos os meus hosts SSH gerenciados via fantoche. Mas também tenho sistemas que não são gerenciados por fantoches (switches, roteadores, etc.) e não tenho planos imediatos para começar a gerenciá-los.

Existe alguma maneira elegante de obter as chaves do host para esses sistemas não gerenciados em fantoches? Agora eu só tenho todos eles em uma única classe grande e feia, mas deve haver uma maneira melhor. Eu pensei em alguma forma tentando mover as chaves para esses hosts no hiera, ou outra coisa, mas eu não encontrei uma solução que não seja feia.

Alguém tem um bom método / padrão que eu possa seguir aqui?

    
por Zoredache 17.06.2014 / 00:09

2 respostas

4

I have thought about somehow trying to move the keys for these hosts in to hiera, or something else, but I haven't found a solution that isn't ugly.

Existem várias maneiras de conseguir isso. Eu tento manter minhas classes genéricas, com todos os meus dados de configuração no hiera. Quando estou lidando com coleções de dados, tento usar um hiera hash, assim nunca preciso mudar minha classe ou definir código.

1: Use um hash hiera para armazenar uma coleção de chaves.

hiera_key_hash:
    key-1:
        name: cisco500
        type: router
        key: xxx
    key-2:
        name: cisco100
        type: switch
        key: xxx

2: Crie uma classe que chame um create_resource para cada chave (isso chamará a definição de 'chave').

class keys {
  create_resources( "key", hiera('hiera_key_hash') )
}

3: Crie uma definição que faça o trabalho para cada chave.

define key($name, $type, $key) {
  // code goes here
}

Nota: Em algum momento, você pode acabar armazenando informações confidenciais no seu hiera. Você pode querer considerar criptografar alguns de seus valores confidenciais.

    
por 17.06.2014 / 00:32
1

Hmm ... talvez no Hiera, com um hiera_array coletando os dados, alimentando esse array em recursos através de um tipo definido? Como você precisa do nome do host e da chave, você precisará colocá-los em uma string e split() no tipo definido, ou ter o array com algo mais complexo (provavelmente um hash).

Ainda é uma dor de cabeça para gerenciar o preenchimento e mantê-lo atualizado; talvez um pequeno script com uma lista de nós para se conectar, coletar as chaves e gerar os dados hiera?

    
por 17.06.2014 / 00:22