
Desejo configurar um PPA para enviar alterações simples para várias centenas de máquinas Ubuntu 12.04 em campo. Mudanças simples significam alterações no script bash e atualizações de arquivos de configuração e possivelmente outras atualizações de software, incluindo novas instalações de software que podem ser instaladas via apt-get install. Várias perguntas que me vieram à mente são:
- O PPA pode ser usado para enviar atualizações de script?
- Posso configurar máquinas clientes para obter atualizações apenas deste PPA e instalá-las automaticamente, como atualizações autônomas? (Claro que sei que esta opção é possível, mas espera-se um bom conjunto de ferramentas para conseguir isso).
Eu sei que esta é uma pergunta ampla, mas uma resposta com poucas dicas é muito apreciada.
Responder1
Eu queria fazer a mesma coisa, mas optei por usar um repositório privado feito reprepro
em PPAs. Todos os meus clientes estão na mesma LAN, então é mais simples para mim. Acho que isso é bastante viável, independentemente de você usar PPAs ou um repositório privado.
- A modificação dos arquivos de configuração existentes é melhor feita usando
dpkg
desvios, IMO.config-package-dev
é uma bênção para isso. OWiki do Debiané um bom ponto de partida para obter informações sobre isso. - Adicionar arquivos de script ou seu próprio software não é tão difícil empacotando-os. Existem muitos guias de embalagem. Novamente, oWiki do Debiané um ótimo ponto de partida. É mais simples criar pacotes binários do que a introdução, o que será o caso de scripts e arquivos de configuração.
- Adicionar novo software de outros repositórios pode ser feito tornando-os dependências de seus pacotes. Especifique uma versão exata ou use
apt
fixação. - As atualizações autônomas para repositórios personalizados já foram tratadas:Como habilitar atualizações automáticas silenciosas para qualquer repositório?Não conheço nenhuma maneira de um servidor enviar atualizações para um cliente. Você pode querer considerar
puppet
(viakick
ing) ou algo parecido. Ou você pode escrever um script no servidor que use SSH para executar atualizações no cliente. Ou tenha um script que verifique atualizações quando a rede for ativada. - Acima de tudo, certifique-se de que seus scripts de manutenção de pacotes (
preinst, postinst, prerm, postrm
) sejam idempotentes e que a remoção de pacotes desfaça todas as alterações. Esses scripts podem fazer muitas coisas, mas não afetam nadaapt
nelesdkpg
. Minimize o trabalho realizado nesses scripts.
No meu caso, eu uso um pacote para configurar LDAP e NTP, adicionar vimrc
opções comuns de habilitação global personalizada, fazer várias alterações de configuração (como habilitar sudo
um grupo, proibir desligamento), adicionar um usuário/grupo local sem privilégios, etc. nosso certificado CA autogerado e chave de assinatura do repositório e os marca como confiáveis no postinst
script e adiciona uma entrada sources.list.d
para nosso repositório.
Ainda não converti todos os sistemas para este processo, por isso não posso comentar ainda sobre a sua eficácia.