Ferramenta de teste de infraestrutura baseada no Docker

4

No momento, estou tentando migrar uma infraestrutura baseada em VM para uma baseada em Docker e aproveitar a chance de adicionar testes de comportamento a essa infraestrutura. Então eu pretendo ter todas as alterações que eu faço na configuração do sistema básico no código (por exemplo, em um Dockerfile), git versionado e (em um mundo ideal) cada mudança deve ter um efeito testável.

Exemplos de testes que quero fazer:

  • Se eu adicionar uma conta de usuário e uma regra de permissão em meu contêiner "postgres", o usuário "x" poderá acessar (apenas) o banco de dados "y" (somente) do contêiner "web".
  • Se eu alterar a configuração do postfix como inserir alteração aqui , os usuários humanos deverão autenticar, mas os usuários do sistema poderão enviar e-mails não autenticados.
  • Se eu alterar a configuração do Apache como inserir alteração aqui , o tempo médio de resposta ficará abaixo de x ms.

Coisas que eu realmente não quero testar (não machuca se eu puder, no entanto):

  • O arquivo x deve estar presente.
  • O serviço y deve ser instalado.

Eu queria saber qual é uma abordagem boa / comum para fazer testes de infra-estrutura, como acima, e ficaria feliz em receber conselhos ou ouvir as práticas recomendadas. (Eu descobri serverspec , mas pareceu-me que isso apoiaria o segundo tipo de testes; em todos os exemplos que eu lia, preferia verifique o estado do sistema do que o comportamento do sistema.)

    
por tgpfeiffer 26.12.2014 / 03:32

1 resposta

0

Em um único "teste de comportamento" você está misturando várias ideias. Teste de segurança (acesso ...), monitoramento de aplicativo (tempo de resposta ...), conformidade de infraestrutura (arquivo / serviço deve estar presente ...).

Como você está indo para o infra como um código de versão, você deve primeiro testá-lo como qualquer código, e o serverspec é uma boa ferramenta para isso. Eu pessoalmente prefiro testinfra, o framework equivalente baseado em Python. Há outros, como goss, robotframework, inspec ... Lá você pode testar muitas coisas: ouvir a porta 80, serviço em execução, arquivo de configuração existe. E mais, desde que você pode ligar qualquer parte do código, você pode ler um arquivo de configuração e verificar se o usuário X tem acesso ao banco de dados Y, mas não ao banco de dados Z.

Quanto ao tempo de resposta, que é um tópico de monitoramento, se for sobre o ambiente ao vivo, ou teste de carga, se for sobre o teste de preparo antes da ativação. Existem muitas possibilidades de monitoramento, como o nagios, o zabbix ... Para testes de carga, eu prefiro o gafanhoto.

    
por 05.09.2018 / 10:53