Como posso pré-assinar certificados de marionetes?

25
O

Puppet exige certificados entre o cliente (fantoche) que está sendo gerenciado e o servidor (mestre-de-marigmas). Você pode executar manualmente no cliente e ir até o servidor para assinar o certificado, mas como automatizar esse processo para clusters / máquinas de nuvem?

    
por Ranguard 02.10.2008 / 18:32

4 respostas

28

No servidor (puppetmaster), execute:

puppetca --generate <NAME>

Copie o seguinte do servidor para o cliente:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

Se você deseja assinar <NAME> como algo diferente do nome do host, use:

puppetd --fqdn=<NAME>

E adicione /etc/puppet/puppet.conf se estiver executando o daemon

[puppetd]
certname=<NAME>
    
por 02.10.2008 / 18:32
7

Resposta simples: assine automaticamente novas solicitações. Isto, obviamente, é perigoso porque você confia cegamente em qualquer sistema que se conecte ao seu mestre de marionetes, que é o propósito de exigir a assinatura manual.

[puppetmasterd]
autosign = true

Você pode especificar false e um arquivo para determinar quais teclas devem ser assinadas também.

Veja a referência de configuração no wiki da marionete.

Outra opção é usar uma ferramenta como Capistrano , onde você especifica o nó do puppetmaster e cria os nós da instância do cliente e, no tarefa:

  • Crie o nó da instância, digamos com a API do EC2 com o Ruby.
  • Execute o puppetd na instância, conectando-se ao servidor.
  • Executar puppetca --sign para solicitação da instância (já que sabemos o nome da instância como foi fornecido no bit de criação acima).
  • Execute o puppetd novamente na instância, dessa vez conectando-se com sucesso à medida que o certificado é assinado.
por 04.06.2009 / 09:09
6

Se você tiver um banco de dados do host, poderá usar o recurso de autosign. No seu arquivo puppet.conf , no [puppetmasterd] , adicione:

autosign = /path/to/autosign.conf

Em seguida, use um crontab para gerar esse arquivo. O arquivo de autosign é apenas uma lista de hosts para autosign quando eles se conectam primeiro ao puppetmaster. Eu uso o LDAP para configurar meus hosts de marionetes, então meu cron se parece com:

* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf

Tenho certeza de que as pessoas que usam o iClassify podem escrever uma consulta para fazer o mesmo.

Claro, você precisa ter alguma confiança na rede. Eu uso isso no EC2. Meu servidor puppetmaster está em um grupo que permite apenas conexões de outros grupos confiáveis. Eu não recomendaria isso se o seu puppetmaster estivesse aberto à internet.

    
por 16.10.2008 / 02:06
4

No servidor (puppetmaster), execute:

puppetca --generate <NAME>

Copie o seguinte do servidor para o cliente:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

Se você quiser usar algo diferente do nome do host:

puppetd --fqdn=<NAME>

E adicione /etc/puppet/puppet.conf se estiver executando o daemon

[puppetd]
certname=<NAME>
    
por 04.06.2009 / 08:32