Como gravar alterações no servidor?

52

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.

Scott Bilas
fonte

Respostas:

20

No Linux, as pessoas estão adotando algumas estratégias diferentes:

  • Sistemas de restrição de configuração , como cfengine ou fantoche ou chef . Eles são semelhantes aos GPOs do Windows. Aponte que toda a configuração do servidor é intencionalmente documentada em um único local e você sabe em que granularidade (sala de servidores, grupo, servidor específico) a política é promulgada. Isso não vai te salvar de "o que diabos era diferente seis meses atrás?" mas permite alterar a configuração de um servidor e reconstruí-lo do zero. Você pode colocar as políticas cfengine e fantoche sob controle de revisão para responder à pergunta.
  • Revisão controlador / etc . Geralmente, os programas Linux armazenam suas configurações em um único local, / etc. Os mais ousados ​​estão começando a escrever scripts para colocar / etc no controle de revisão. Um desses programas que conheço é o etckeeper :
Descrição: store / etc em git, mercurial, bzr ou darcs
 O programa etckeeper é uma ferramenta para permitir que o / etc seja armazenado em um git, mercurial,
 repositório bzr ou darcs. Ele se conecta ao APT para confirmar automaticamente as alterações
 feito para / etc durante atualizações de pacotes. Ele rastreia os metadados do arquivo nessa versão
 sistemas de controle normalmente não suportam, mas isso é importante para / etc, como
 como as permissões de / etc / shadow. É bastante modular e configurável, enquanto
 também é simples de usar, se você entender o básico de como trabalhar com a versão
 ao controle.
jldugger
fonte
11
+1 para mencionar os dois tipos de sistema, e especificamente o etckeeper, o que facilita bastante - funciona com git ou hg.
RichVel 8/08
11
Eu uso um para instalar o outro e, portanto, tenho os dois.
Dan Garthwaite
Para sua informação, o link cfengine aponta para www.cfengine.org, que agora está quebrado. O site oficial agora está localizado em www.cfengine.com . Também o ectkeeper agora tem uma home page no etckeeper.branchable.com
e_i_pi
@e_i_pi e também puppet não é mais puppetlabs.
Jdugger
10

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.

Scott Pack
fonte
Quando você armazenar arquivos de configuração de marionetas em um VCS, você tem uma história completa e registro de suas configurações de servidor, muito puro :) Mas, convertendo tudo para um script fantoche requer outra disciplina: D
hayalci
Eu nunca disse que era fácil, apenas útil :) O truque com o fantoche é fazer um uso prolífico dos módulos e lembrar que seus esforços serão recompensados. Agora se somente RSA enVision teve um analisador para os logs ...
Scott pacote de
Você está absolutamente certo de que o problema é maior do que apenas a tecnologia de gravação de alterações. Mas também não vamos expandir o problema para o reino do insolúvel. Ter uma ferramenta eficaz pode focar sua equipe e não ter uma destrói o moral de tentar efetuar uma mudança em sua maneira de pensar. Eu implementei alguns sistemas diferentes, o melhor provavelmente ainda é a página wiki com uma tabela de alterações, mas ainda não é perfeita. / etckeeper é definitivamente uma vantagem, mas difícil de escalar entre sistemas. e o mais importante: Active Directory! Essa é a necessidade principal.
CKG
4

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

  • Sharepoint
    • lamentar tudo o que você quiser ... ele tem alguns recursos muito legais da lista.
    • Listas de endereços IP
    • inventário
    • contas de serviço e uso
    • alterar logs de notificação
  • Wiki
    • Como fazer
    • listas de tarefas de longo alcance
  • Evernote
    • meu parceiro e eu usamos isso para colocar tudo o que não queremos na Wiki
    • mais instruções que são de natureza técnica
    • notas de rascunho, nós dois precisamos ver
    • contabilização de tarefas da semana
    • listas de tarefas do contratante
    • O evernote clipper facilita a captura de tela AD / rights settings
    • disponível em qualquer lugar
  • PINs
    • Repositório de senhas
Thomas Denton
fonte
2

Provavelmente, existem ferramentas melhores para algumas delas, mas é isso que usamos:

  • Rastrear alterações de configuração e atualizações / patches por servidor em um wiki privado
  • Mantenha também os howtos e um registro de problemas / soluções no wiki
  • Use o Sharepoint ou o Google Docs para manter cópias autorizadas de coisas como listas de IP estáticas
  • use o Subversion para rastrear alterações nos arquivos de configuração
Brent
fonte
eu gosto de usar o controle de origem nos arquivos de configuração - você aplica comentários "úteis" ao fazer check-in ou sair de uma versão?
Warren
Não, de fato, escrevi alguns scripts (enviar e reverter) para facilitar o envio e a reversão de alterações. No entanto, agora estamos experimentando o etckeeper.
Brent
2

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.

Oskar Duveborn
fonte
2

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).

David Yu
fonte
2

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.

Greg Work
fonte
1

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.

Draemon
fonte
1

Criamos algo caseiro para fazer o rastreamento do log de alterações em nosso ambiente; não é nada super complicado, e funciona muito bem.

  • Uma política de autopoliciamento é configurada para que qualquer alteração que, em sua estimativa, se desvie de uma configuração pronta para uso ou possa causar problemas, deva ser documentada no sistema de registro de alterações.
    • O lado oposto dessa 'moeda' é se você estiver solucionando um problema, procure entradas recentes ou relacionadas no registro de alterações.
  • Entre no sistema e escolha o servidor, serviço ou componente de hardware que você está alterando
    • os componentes foram inseridos anteriormente no mesmo sistema com informações 'demográficas' básicas (localização, fornecedor, número de série, departamento responsável)
  • Escolha em um menu suspenso de categorias básicas
    • Tempo de inatividade não programado
    • Remendo
    • Manutenção de Hardware
    • Instalação de software
  • Coloque em detalhes o que você fez, viu, observou
  • uma cópia é enviada à parte responsável e armazenada como arquivos XML indexados por um appliance.
  • Lucro

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:

  • É difícil trabalhar em grupos de serviços; por exemplo, você acabou de adicionar o mesmo patch a todos os 25 controladores de domínio; não temos um grupo "Controlador de domínio", por isso temos que selecioná-los manualmente
  • Não se integra aos relatórios de erro de hardware, software ou log de eventos para ajudar na solução de problemas
  • relacionado, entrada manual de dados para todos os dados 'demográficos', como eu disse acima

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.

Guamaniac
fonte
1

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).

gbjbaanb
fonte
1

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 :)

Warren
fonte
1

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 rsyncseu etcdiretório (onde quer que seja) em um repositório local do git.

for HOST in alpha bravo charlie delta ...; do

    rsync -avz --exclude-from=exclusions -e ssh admin@$HOST:/opt/local/etc/ ./$HOST

done

Obviamente, você pode adicionar outras fontes, conforme necessário.

PartialOrder
fonte