Estou usando o fantoche para distribuir chaves SSH, assim:
ssh_authorized_key { "[email protected]":
ensure => present,
key => 'xxxx',
type => 'ssh-rsa',
user => 'deploy',
}
O arquivo ~ / .ssh / allowed_keys acaba contendo uma mistura de chaves de várias classes, que é o resultado desejado. No entanto, se uma chave for adicionada manualmente a $ HOME / .ssh / allowed_keys, o Puppet a deixará no lugar. Existe uma maneira de sempre remover qualquer chave que não tenha sido explicitamente definida em um manifesto?
Eu tenho a versão fantoche 2.7.1.
Respostas:
A partir do Puppet 3.6, agora é possível limpar chaves autorizadas de SSH não gerenciadas através do
user
tipo. Por exemplo,fonte
Em vez de usar
ssh_authorized_key
recursos, decidi definir umauthorized_keys
recurso, que leva uma lista de todas as chaves SSH para um único usuário. A definição é assim:$ssh_keys
O parâmetro usa todas as chaves necessárias como uma lista. Oauthorized_keys.erb
modelo fica assim:Uso
Adicionar chaves SSH condicionalmente (por exemplo, em diferentes classes) também é fácil, graças ao
+>
operador do Puppet :Com esse método, o usuário nunca terá chaves que não estão especificadas explicitamente na configuração do Puppet. A cadeia de teclas é usada em chaves_autorizadas assim como é, portanto, adicionar opções e restrições é trivial.
Ficaria feliz em saber se outras pessoas usaram esse método com sucesso!
fonte
Você deve conseguir fazer isso usando o metatipo de recursos . POR EXEMPLO
A configuração
noop => true,
impede que a remoção ocorra. Em vez disso, o fantoche informará o que seria removido. Se for o que você deseja, remova a instrução noop .A sintaxe ideal para executar operações em recursos não gerenciados está em discussão .
EDIT: Como mencionado nos comentários, esta resposta não funciona.
fonte
puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory.
tentei adicionar um usuário e, em seguida, ele dizCould not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user
. Alguma ideia?No Puppet Forge, um módulo foi publicado sob a Licença Apache, versão 2.0, que oferece essa capacidade.
Depende do Puppet concat em vez de modelos.
https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests
Em vez de passar uma matriz de chaves como parâmetro, você define entradas separadas para cada chave.
Abordagem diferente da de Mikko, mas mesmo resultado líquido.
fonte