Mantendo arquivos de ponto do servidor no bash

3

Digamos que eu esteja administrando uma configuração do Ubuntu com vários usuários para minha organização.

Temos um .bash_profile e .bashrc padrão com aliases, configurações de prompt, PATH declarações, etc ... que queremos que todos os usuários usem. Quando um servidor é girado, ele será inicializado com o chef, que será usado para instalar esses arquivos no sistema.

Qual é a melhor maneira de fazer isso? Eu vejo algumas opções, mas todas têm suas desvantagens -

  1. Instale-os em /etc (por exemplo, /etc/profile ). Prós: Todo usuário lerá esse local em todo o sistema. Contras: Ele sobrescreve qualquer versão existente das moscas que vêm pré-instaladas. Nós poderíamos sempre copiá-los para o nosso para começar, mas depois temos que atualizá-los e mantê-los. Pode não ser um problema, dependendo de quantas vezes as versões do Ubuntu acabam mudando os dotfiles padrão

  2. Instale-os em /etc , mas com outros nomes (por exemplo, /etc/bash_configs ) e, em seguida, anexe uma linha aos arquivos de estoque profile e bashrc para acessar nossos novos arquivos. Prós: Ele também funcionará e nossas configurações serão fontes. Contras: parece realmente hackear e depende de anexar programaticamente uma linha ao final dos arquivos de ações para source de nossos arquivos personalizados adicionais.

  3. Instale-os em /etc/skel para que, sempre que um novo usuário for criado, esses modelos sejam copiados para o diretório inicial. Prós: Cada usuário receberá sua cópia dos arquivos corretamente. Contras: E se atualizarmos os arquivos, eles serão atualizados em cada diretório individual? Eu estou supondo agora. Seria melhor se houvesse uma maneira de criar links simbólicos para que todos os usuários apontem para os mesmos arquivos.

Eu posso estar complicando demais isso, mas parece que tem que haver uma maneira mais limpa de fazer isso do que estou sentindo falta. Eu estaria mais interessado se houvesse uma maneira de implementar o nº 3 com algum tipo de mecanismo de atualização automática.

Obrigado!

    
por user2490003 12.06.2015 / 00:03

2 respostas

2

Acho que escolheria uma mistura de 2 e 3. Coloque seus arquivos modificados em /etc/bash_config ou qualquer outro lugar. Em seguida, modifique os padrões em /etc/skel e faça com que eles acessem os arquivos em /etc/bash_config .

Isso tem algumas das vantagens de 2 e 3:

  • Novos usuários terão os arquivos certos;
  • Quaisquer alterações serão imediatamente propagadas desde a origem dos arquivos;
  • Isso permite que os usuários ainda modifiquem seus próprios dotfiles conforme desejarem.
  • Não envolve a edição dos arquivos% de estoque/etc/bash.bashrc ou /etc/profile . Isso significa que as atualizações não irão quebrar seu sistema.

Observe que as atualizações que modificam os arquivos /etc/skel podem causar problemas, pois isso significaria que suas modificações foram removidas. Isso não deve ser um grande problema embora.

Quanto a ser hacky, bem, tudo bem. Um pouco. Não muito ruim, tudo que você precisa é executar algo assim uma vez:

echo ". /path/to/my_bashrc/" >> /etc/skel/.bashrc
echo ". /path/to/my_profile/" >> /etc/skel/.bashrc
    
por terdon 12.06.2015 / 01:28
1

Basta fazer modificações em /etc/profile.d/ com .sh extensão (por exemplo, /etc/profile.d/MYCOMPANY.sh ). Eles serão chamados por /etc/profile automaticamente.

Dessa forma, você sempre pode atualizar e todos os usuários receberão essas atualizações.

    
por Germar 12.06.2015 / 02:59