Como gravar as alterações do servidor?

49

Então, todos nós provavelmente já tivemos essa situação: você depura algum problema, apenas para perceber que ele foi causado por uma alteração de configuração feita há seis meses, e você não consegue se lembrar por que o fez. Então você desfaz e corrige o problema, e agora algum outro problema retorna. Ah sim, agora eu lembro! Então você conserta isso corretamente.

É porque você não anotou direito, seu idiota! Mas o que é uma boa maneira de fazer isso?

Na engenharia, temos vários softwares destinados a nos ajudar a detectar e rastrear alterações. Controle de origem, revisões de código e assim por diante. Cada mudança é rastreada, cada 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 desse modo, pode usar um recurso histórico de "culpabilização" ou uma pesquisa binária para identificar o problema. Essas ferramentas são ferramentas de comunicação e registros históricos muito eficazes.

Mas no serverland, temos 500 serviços diferentes, todos com diferentes formas de configurá-los. E eles nem sempre têm um formato de texto (considere configurar permissões em uma pasta ou alterar a localização do arquivo de paginação), embora possam ter uma representação textual.

Em nosso ambiente, verificamos quais arquivos de configuração podemos usar no Perforce, mas há muito poucos deles. Não é possível fazer o check-in no DB do Active Directory, mesmo que seja um dump que possa ser diferenciado ...

No passado eu tentei manter um registro de mudanças manual em nosso wiki, mas é muito 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 esse problema de rastrear alterações de configuração em seus servidores?

- Atualizar -

Nota: Eu não estou procurando por ferramentas de anotações compartilhadas (eu estou familiarizado com o OneNote, etc), mas sim como ferramentas automatizadas especificamente destinadas a ajudar com o rastreamento de mudanças no servidor. Não há nenhuma ferramenta abrangente para rastrear as alterações na configuração do servidor, mas talvez haja algumas para aplicativos específicos, como os do GPO.

Também estou muito interessado em estratégias específicas que você achou úteis. "Nós compartilhamos notas no Sharepoint" é muito 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, bem como idéias.

    
por Scott Bilas 17.04.2011 / 23:34

12 respostas

19

No terreno do Linux, as pessoas estão buscando algumas estratégias diferentes:

  • Sistemas de restrição de configuração , como cfengine ou fantoche ou chef . Esses são semelhantes aos GPOs do Windows. Apontando que toda a configuração do servidor é intencionalmente documentada em um único local e você sabe em qual granularidade (sala do servidor, grupo, servidor específico) a política é executada. Isso não vai te salvar de "o que diabos foi diferente seis meses atrás?" mas permite que você apenas crie uma configuração de servidor e reconstrua a partir do zero. Você pode colocar as políticas de cfengine e puppet sob controle de revisão para responder à pergunta.
  • Controle de revisões / etc . Geralmente, os programas do Linux armazenam suas configurações em um único local, / etc. Os ousados estão começando a escrever scripts para colocar o / etc no controle de revisão. Um desses programas que conheço é o etckeeper :
Description: store /etc in git, mercurial, bzr or darcs
 The etckeeper program is a tool to let /etc be stored in a git, mercurial,
 bzr or darcs repository. It hooks into APT to automatically commit changes
 made to /etc during package upgrades. It tracks file metadata that version
 control systems do not normally support, but that is important for /etc, such
 as the permissions of /etc/shadow. It's quite modular and configurable, while
 also being simple to use if you understand the basics of working with version
 control.
    
por 19.07.2017 / 20:38
9

Um dos problemas nessa situação é que, na verdade, é um processo combinado de negócios / problema tecnológico. E é definitivamente maior do que apenas acompanhar as alterações feitas por um administrador. Você também precisa ficar atento a alterações inesperadas e a uma boa coordenação entre administradores ou unidades, para que uma alteração em um controlador de AD não quebre uma configuração de permissões de banco de dados em algum servidor departamental. Ou seja, sua pergunta é uma gigantesca lata de worms:)

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 elas. Eles compilam todas as alterações, juntamente com o escopo, os sistemas afetados, os serviços afetados etc. Imponha uma boa documentação sobre as mudanças, bem como os planos de roll-out e roll-back. Organize reuniões semanais (abertas) para rever as mudanças do ambiente, e envie e-mails detalhando todas essas mudanças. O objetivo final desse processo é que, efetivamente, todos na área de TI saibam tudo o que está acontecendo. Isso ajuda a parar o problema, por exemplo, de um SysAdmin instalar um patch do kernel e reiniciar um sistema que derrubará o banco de dados do timeclock.

Quanto ao lado tecnológico, só posso falar dos caras do Unix / Linux, já que não lidei 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 onde se define uma configuração de máquina no servidor, e o cliente puxa essas chances de vez em quando (30 minutos por padrão). Além disso, se houver chances de os arquivos gerenciados serem processados localmente, eles serão revertidos também nesse momento. Nós o usamos para gerenciar serviços em execução, configurações de firewall, autorização do usuário, etc.

Também recomendo investigar algo como o TippingPoint. É um serviço de cliente que observa a configuração do sistema e envia alertas sobre alterações. Isso deixa a gente da segurança mais feliz. É amplamente usado para rastrear alterações maliciosas ou não publicadas.

    
por 23.05.2009 / 15:23
3

Estou em 4 ou 5 empresas e agora não me lembro bem.

Todos nós tivemos esse problema. Nenhum de nós resolveu 100 por cento, mas na empresa em que estou agora, temos a melhor estratégia até o momento.

Sharepoint / Wiki / Evernote / PINs

  • Sharepoint
    • geme o quanto quiser ... tem alguns recursos de lista muito bons.
    • listas de endereços IP
    • inventário
    • contas de serviço e uso
    • alterar registros de notificação
  • Wiki
    • Como fazer
    • listas de tarefas de longo alcance
  • Evernote
    • meu parceiro e eu uso isso para colocar tudo o que não queremos no Wiki
    • mais instruções que são de natureza técnica
    • notas de rascunho que precisamos ver
    • contabilidade de tarefas para a semana
    • listas de tarefas do contratante
    • O
    • cortador de notas do evernote facilita as configurações de AD / direitos de captura de tela
    • disponível em todos os lugares
  • PINs
    • Repositório de senha
por 23.05.2009 / 15:21
1

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

  • Acompanhe alterações de configuração e atualizações / patches por servidor em um wiki particular
  • Também mantenha o howtos e um registro de problemas / soluções no wiki
  • Use o SharePoint ou o Google Docs para manter cópias autoritativas de coisas como listas de IP estático
  • use o Subversion para rastrear alterações nos arquivos de configuração
por 23.05.2009 / 15:32
1

Para Windows, confira a série Microsofts System Center ou qualquer outro concorrente em configuração e gerenciamento de serviços para essa plataforma.

As mudanças precisam ser roteadas por meio de uma rotina decente de gerenciamento de mudanças que, por si só, as aprova e registra antes que elas sejam realmente feitas. Isso pode ser 100% manual para iniciantes. Com algumas das melhores ferramentas integradas, você poderia pedir à ferramenta para fazer as alterações reais e obter logout "automático" para um banco de dados de configuração central - em vez de colocar as mãos nuas no console de um servidor individual, vasculhando as configurações manualmente tente consertar um problema no estilo cowboy.

    
por 23.05.2009 / 15:54
1

Você absolutamente deve ter um processo de gerenciamento de mudanças em vigor, 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, mas a desvantagem é a de induzir a latência no processo de mudança, se você não puder fazer alterações dinamicamente.

Algumas formas de rastrear alterações podem incluir a validação de eventos em seu SEM (supondo que você tenha um Gerenciador de Eventos de Segurança) ou ferramentas como o Nessus (com muito trabalho pode auditar seu ambiente para localizar alterações).

    
por 23.05.2009 / 23:50
1

Esta é uma resposta mais localizada, baseada em * nix. Eu não encontrei nenhuma boa ferramenta para emulá-lo no Windows.

Existem algumas maneiras de implementar isso ... e pegá-lo quando você esquecer.

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 quiser instalar um sistema de controle de revisão em seus servidores de produção, armazenar diretórios de arquivos de configuração local ou remotamente usando algo como rsnapshot dará você tem a maioria dos benefícios de um RCS, mas perde a possibilidade de fazer auditoria ou deixar logs de confirmação (embora isso possa ser contornado com comentários dentro dos próprios arquivos).

Para ajudar você a lembrar-se de registrar as alterações, os relatórios automáticos de alterações de configuração por meio de uma execução cronológica de cronograma tripwire um bom começo. Depois de criar o banco de dados do tripwire do estado atual dos arquivos, qualquer alteração resultará em um email durante a próxima execução. Você continuará recebendo este email até que o banco de dados seja atualizado, "redefinindo" o tripwire.

    
por 27.05.2009 / 13:35
0

Eu usaria um sistema de rastreamento de problemas como o flyspray (qualquer um serve, mas eu gosto do flyspray para coisas que não são de programação). Antes que alguém toque em uma configuração, o aprimoramento / problema deve ser registrado. Quando você corrige / implementa, as alterações vão no ticket.

Um wiki pode ser bom para documentar a configuração atual, mas é fácil ficar desatualizado - e parece exigir 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 enviadas automaticamente por e-mail para o rastreador de problemas, se você quiser.

Eu acho que é apenas uma questão de uma boa política, ferramentas de baixa barreira e disciplina.

    
por 23.05.2009 / 20:27
0

Criamos algo interno para alterar o rastreamento de log 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 que possa causar problemas, seja documentada no sistema de changelog.
    • o lado oposto desta moeda é se você estiver solucionando um problema, procure por entradas recentes ou relacionadas ao changelog.
  • Faça login no sistema e escolha o servidor, serviço ou componente de hardware que você está alterando
    • os componentes são inseridos anteriormente no mesmo sistema com informações básicas 'demográficas' (local, fornecedor, número de série, departamento responsável)
  • Escolha de um menu suspenso de categorias básicas
    • Tempo de inatividade não programado
    • Patch
    • Manutenção de hardware
    • Instalação de software
  • Coloque em detalhes o que você fez, viu, observou
  • uma cópia é enviada para a parte responsável e armazenada como arquivos XML indexados por um appliance.
  • Lucro

Como eu disse, nada extravagante. Ele usa o PERL CGI (que foi escrito há um bilhão de anos) e um appliance do Google para indexação.

Deficiências:

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

De qualquer forma, se depois de tudo você estiver interessado no código, me avise e provavelmente poderei compartilhá-lo.

    
por 26.05.2009 / 23:33
0
Como foi dito, é uma questão cultural - afinal, algumas lojas de desenvolvimento não se incomodam mais com comentários (o código de auto-documentação é uma palavra de moda hoje!) e alguns usam um sistema de controle de versão como um santo graal de registros históricos. . Obviamente, estes não são perfeitos.

Assim, a única maneira verdadeira de consertar isso é torná-lo uma solução cultural. Assegure-se de que todas as razões para mudanças estejam registradas em um bug tracker (ou base de conhecimento, ou wiki), e garanta que todas as mudanças sejam registradas em um sistema de controle de mudanças.

Temos clientes de serviços de emergência, cada mudança que acontece ao sistema deles é registrada, e toda vez que entramos em seu sistema, temos que registrá-lo. Para alguns deles, temos que telefonar primeiro para a permissão (e eu acho que eles também registram isso!). Todas as alterações são registradas, e será uma ofensa disciplinar para alterar o sistema do cliente sem registrá-lo.

Parece oneroso, mas não é. Você rapidamente adquire o hábito de se adicionar ao log de acesso e ao log de alterações - não é pior do que ter que escrever um comentário ao fazer o check-in de uma mudança de código.

Eu recomendo um bugtracker como o log do motivo do controle de alterações, já que eles geralmente são fáceis de atualizar (eu uso o Mantis).

    
por 27.05.2009 / 12:22
0

Se você está procurando a "solução corporativa" (ou seja, você tem mais dinheiro do que deus e quer ter uma ferramenta muito legal), a ferramenta que eu usei para dar suporte e fornecer trabalho no local faz isso como um dos seus recursos multitudinários.

Não há idéia do preço base, mas antes da HP comprar o Opsware, era ~ US $ 350.000 (sem suporte e, acredite, você queria suporte quando eu comecei na Opsware).

Vários clientes que tivemos enquanto eu trabalhava lá usaram os recursos de configuração de aplicativo e snapshot em conjunto com o Tripwire .

Claro, se você não tem orçamento - este é um Bad Choice ™:)

E, fwiw, o anúncio que apareceu no topo desta página para mim quando o recarreguei era para spiceworks . Parece muito semelhante ao HPSA:)

    
por 08.09.2009 / 12:40
0

Se tudo o que você quer fazer é controlar as alterações e não gerenciar todo o processo (por exemplo, Chef ou Puppet), apenas rsync seu diretório etc (onde quer que esteja) 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

Você pode, claro, adicionar outras fontes conforme necessário.

    
por 21.07.2016 / 16:53