Então todos nós provavelmente já tivemos essa situação: você depura algum problema, apenas para perceber que foi causado por uma alteração na configuração que você fez seis meses atrás, e você não consegue se lembrar por que fez isso. Então você desfaz e corrige o problema, e agora outro problema volta. Ah sim, agora eu lembro! Então você o corrige corretamente.
É porque você não tomou notas apropriadas, seu tolo! Mas qual é uma boa maneira de fazer isso?
Na engenharia, temos um monte de software destinado a nos ajudar a detectar e rastrear alterações. Controle de origem, revisões de código e assim por diante. Toda mudança é rastreada, toda mudança requer um comentário sobre o que é. E os departamentos de engenharia típicos exigem bons comentários para que, em seis meses, quando você descobrir por que o quebrou dessa maneira, você possa usar um recurso histórico de "culpa" ou a criação de pesquisas binárias para identificar o problema. Essas ferramentas são ferramentas de comunicação muito eficazes e registros históricos.
Mas na área de servidores, temos 500 serviços diferentes, todos com maneiras diferentes de configurá-los. E eles nem sempre têm um formato de texto (considere definir permissões em uma pasta ou alterar o local do arquivo de paginação), embora possam ter uma representação textual.
Em nosso ambiente, verificamos quais arquivos de configuração podemos no Perforce, mas há muito poucos deles. Não é possível verificar exatamente no banco de dados do Active Directory ... embora talvez um despejo que possa ser dif ...
No passado, eu tentei manter um registro de alterações manual em nosso wiki, mas é super difícil manter a disciplina para fazer isso (eu sei, não é uma boa desculpa, mas é realmente difícil).
MINHA PERGUNTA: Quais estratégias e ferramentas você usa para lidar com este problema de rastreamento de alterações na configuração de seus servidores?
- Atualização -
Nota: Não estou procurando ferramentas de anotações compartilhadas (estou familiarizado com o OneNote, etc.), mas sim ferramentas automatizadas especificamente destinadas a ajudar no rastreamento de alterações no servidor. Não existe uma ferramenta abrangente para rastrear alterações na configuração do servidor, mas talvez haja algumas para aplicativos específicos, como os GPOs.
Também estou muito interessado em estratégias específicas que você achou úteis. "Compartilhamos anotações no Sharepoint" é bastante vago. Como você mantém a disciplina? Qual formato você usa para rastrear suas alterações? Como você organiza seus dados alterados? Eu realmente gostaria de exemplos e idéias.
fonte
Um dos problemas nessa situação é que, na verdade, é uma combinação de processo de negócios / problema tecnológico. E é definitivamente maior do que apenas rastrear as alterações que um administrador fez. Você também deve estar atento a alterações inesperadas e boa coordenação entre administradores ou unidades para que uma alteração em um controlador do AD não quebre uma configuração de permissões de banco de dados em algum servidor departamental. Ou seja, sua pergunta é uma lata gigante de vermes :)
Na minha organização, levamos cerca de um ano para implantar processos e sistemas para resolver isso. Para o lado do processo de negócios, formamos uma equipe de Gerenciamento de Mudanças. De acordo com o SOP, todas as alterações nos ambientes de produção são coordenadas por eles. Eles compilam todas as alterações, juntamente com o escopo, os sistemas afetados, os serviços afetados, etc. Aplique uma boa documentação sobre as alterações, bem como os planos de rollback e rollback. Organize reuniões semanais (abertas) para examinar as próximas mudanças no ambiente e depois envie e-mails detalhando todas essas alterações. O objetivo final desse processo é que, efetivamente, todo mundo em TI saiba tudo o que está acontecendo. Isso ajuda a parar o problema de, por exemplo, um SysAdmin instalar um patch do kernel e reiniciar um sistema que derrubará o banco de dados do relógio de ponto.
Quanto ao lado tecnológico, só posso falar do pessoal do Unix / Linux, pois não ligo com o Windows. Eles estão lançando o Puppet, da Reductive Labs, para gerenciamento de configuração de todos esses sistemas. Simplesmente, é um sistema cliente / servidor em que se define uma configuração de máquina no servidor e o cliente realiza essas chances de vez em quando (30 minutos por padrão). Além disso, se houver chances de arquivos gerenciados localmente, eles também serão revertidos nesse momento. Nós o usamos para gerenciar serviços em execução, configurações de firewall, autorização de usuário etc.
Eu também recomendaria procurar algo como o TippingPoint. É um serviço ao cliente que observa a configuração do sistema e envia alertas sobre alterações. Isso nos deixa mais felizes com o pessoal da segurança. É amplamente utilizado para rastrear alterações maliciosas ou não publicadas.
fonte
Eu estive em 4 ou 5 empresas agora, eu realmente não me lembro.
Todos nós tivemos esse problema. Nenhum de nós resolveu 100 por cento, mas na empresa em que estou agora temos o que considero ser a melhor estratégia até hoje.
Sharepoint / Wiki / Evernote / PINs
fonte
Provavelmente, existem ferramentas melhores para algumas delas, mas é isso que usamos:
fonte
Para Windows, confira a série Microsofts System Center ou qualquer outro concorrente em gerenciamento de configuração e serviço para essa plataforma.
As alterações precisam ser roteadas através de uma rotina decente de gerenciamento de alterações que, por si só, as aprova e registra antes de serem concluídas. Isso pode ser 100% manual para iniciantes. Com algumas das melhores ferramentas integradas, você pode solicitar que a ferramenta faça as alterações reais e faça logon "automático" dele em um banco de dados de configuração central - em vez de ir diretamente ao console de um servidor individual, procurando nas configurações manualmente tente corrigir um problema no estilo cowboy.
fonte
Você absolutamente deve ter um processo de gerenciamento de mudanças, especialmente se houver várias pessoas com capacidade / acesso para fazer alterações no nível do sistema em seu ambiente. Isso também fornece uma maneira de o gerenciamento assinar possíveis alterações, no entanto, a desvantagem que isso induz à latência no processo de mudança se você não puder fazer alterações em tempo real.
Algumas maneiras de rastrear alterações podem incluir a validação de eventos no seu SEM (supondo que você tenha um Security Event Manager) ou ferramentas como o Nessus (com muito trabalho, você pode auditar seu ambiente para encontrar alterações).
fonte
Esta é uma resposta mais localizada, baseada em * nix. Não encontrei boas ferramentas para emular no Windows.
Existem algumas maneiras de implementar isso ... e capturá-lo quando você esquecer.
Os sistemas de controle de revisão, como subversion, git, cvs ou RCS, são uma boa maneira de rastrear o histórico de um arquivo de configuração. Se você não deseja instalar um sistema de controle de revisão em seus servidores de produção, o armazenamento de diretórios de arquivos de configuração local ou remotamente usando algo como rsnapshot fornecerá a maioria dos benefícios de um RCS, mas você perde a possibilidade de auditar ou sair do commit logs (embora isso possa ser contornado com comentários dentro dos próprios arquivos).
Para ajudá-lo a lembrar-se de registrar as mudanças, relatórios automatizados de alterações de configuração através de um noturno, cron'ed tripwire corrida é um bom começo. Após criar o banco de dados do tripwire do estado atual dos arquivos, qualquer alteração neles resultará em um email durante a próxima execução. Você continuará recebendo este e-mail até que o banco de dados seja atualizado, "redefinindo" o tripwire.
fonte
Eu usaria um sistema de rastreamento de problemas como flyspray (qualquer um servirá, mas eu gosto de flyspray para coisas que não são de programação). Antes que alguém toque em uma configuração, a melhoria / problema deve ser registrado. Quando você o corrige / implementa, as alterações entram no ticket.
Um wiki pode ser legal para documentar a configuração atual, mas é fácil ficar desatualizado - e parece ser necessário mais esforço para atualizar o IMO.
Você não encontrará algo automatizado para fazer isso - embora você provavelmente possa configurá-lo para que as alterações em determinados arquivos de configuração sejam automaticamente enviadas por e-mail ao rastreador de problemas, se você quiser.
Eu acho que é apenas uma questão de boa política, ferramentas de baixa barreira e disciplina.
fonte
Criamos algo caseiro para fazer o rastreamento do log de alterações em nosso ambiente; não é nada super complicado, e funciona muito bem.
Como eu disse, nada extravagante. Ele usa PERL CGI (foi escrito há um bilhão de anos atrás) e um appliance do Google Search para indexação.
Deficiências:
De qualquer forma, se depois de tudo o que você estiver interessado no código, avise-me e eu provavelmente posso pegá-lo para compartilhar.
fonte
Como já foi dito, muitas vezes é uma questão cultural - afinal, algumas lojas de desenvolvimento não se preocupam mais com comentários (o código de auto-documentação é hoje um chavão na moda!) E algumas usam um sistema de controle de versão como um santo graal dos registros históricos. Obviamente, estes não são perfeitos.
Portanto, a única maneira verdadeira de corrigi-lo é torná-lo uma solução cultural. Assegure-se de que todos os motivos da mudança sejam registrados em um rastreador de erros (ou base de conhecimento ou wiki) e garanta que todas as alterações sejam registradas em um sistema de controle de alterações.
Temos clientes de serviços de emergência, todas as alterações que acontecem no sistema são registradas e toda vez que fazemos logon no sistema, precisamos registrá-lo. Para alguns deles, primeiro precisamos telefonar para obter permissão (e acho que eles também registram isso!). Toda alteração é registrada e será uma ofensa disciplinar alterar o sistema do cliente sem registrá-lo.
Parece oneroso, mas não é. Você adquire rapidamente o hábito de se adicionar ao registro de acesso e ao registro de alterações - não é pior do que escrever um comentário ao fazer o check-in de uma alteração de código.
Eu recomendo um rastreador de erros como o log do motivo do controle de alterações, pois eles geralmente são fáceis de atualizar (eu uso o Mantis).
fonte
Se você está procurando a "solução corporativa" (ou seja, você tem mais dinheiro que Deus e deseja ter uma ferramenta muito interessante), a ferramenta que eu usei para dar suporte e fornecer trabalho no local faz isso como um de seus vários recursos.
Não tenho idéia de qual é o preço base, mas antes de a HP comprar o Opsware, eram cerca de US $ 350.000 EUA (sem suporte e confie em mim - você queria suporte quando eu comecei com o Opsware).
Vários clientes que tivemos enquanto eu trabalhava lá usavam os recursos de configuração e instantâneo de aplicativos em conjunto com o Tripwire .
Claro, se você não tem orçamento - esta é uma Má Escolha ™ :)
E, fwiw, o anúncio que apareceu no topo desta página para mim quando o recarreguei era para trabalhos de arte . Parece muito semelhante ao HPSA :)
fonte
Se tudo o que você quer fazer é acompanhar as alterações e não gerenciar todo o processo (por exemplo, via Chef ou Puppet), apenas
rsync
seuetc
diretório (onde quer que seja) em um repositório local do git.Obviamente, você pode adicionar outras fontes, conforme necessário.
fonte