precisamos falar sobre testes de infraestrutura
TRANSCRIPT
Precisamos falar sobre teste de infra
Infradel Team
Quem somos
Infradel:● Objetivo: Consultoria para migração de projetos
do modelo centralizado para cloud, com automação e auto-serviço.
● Membros:○ Rafael Gomes (PoA - Brasil)○ Rafael Nunes (PoA - Brasil)○ Augusto Amaral (PoA - Brasil)○ Fernando Laimer (PoA - Brasil)○ Vinicius Gama (Belo Horizonte - Brasil)○ Ronak Jain (Belo Horizonte - Brasil)○ Chris Briesemeister ( Chicago - EUA)○ Luisa Emme ( Quito - Equador)
● Principais tecnologias○ Cloud (AWS)○ Automação de infra (Ansible, Cloudformation)○ Testes de infraestrutura (ServerSpec, Testinfra)○ Container (Docker)○ Programação (Python e Ruby)
Quem sou eu
Rafael Gomes:● Soteropolitano● Apaixonado por compartilhamento● Consultor na Thoughtworks● Blog: techfree.com.br● Twitter/github: @gomex● Áreas de interesse/foco:
○ Cultura DevOps○ Cloud○ Entrega contínua○ Automação de infraestrutura○ Teste de infraestrutura○ Monitoramento
O que estou fazendo de relevante agora
Livro:
http://tinyurl.com/docker-devel
● Pague quanto quiser, inclusive nada
● Não precisa saber nada de Docker
● Licenciado com Creative Commons
O que estou fazendo de relevante agora
Livro Impresso:
● Livro numerado
● Autografado
● Recompensa de R$ 40,00 com entrega
https://www.catarse.me/versao_impressa_do_livro_docker_para_desenvolvedores_c403?ref=project_link
Pra que testar?Pergunta sincera...
O que acontece quando não testo
Como os testes eram feitos antigamente
● Falta de padronização● Testes insuficientes● Sem rastreabilidade● Pouco interesse em reproduzir● Necessidade de conhecimento especializado
Problemas dos testes manuais
Manutenção de ambientes
Dev
Necessidade de Ambientes
agent1
agent2
dev
ticket ops
devTestes
manuais
git
server app A
server app Bserver app C
teste uat prod
Manutenção de ambientes
Dev
Deploy nosAmbientes
ticket ops
Testes manuais
teste
uat
prodTestes manuais
Testes manuais
Teste pós
UAT pós
Prod pós
Manutenção de ambientes
AtualizaçãoNo ambiente
Testes manuais
ops
teste
uat
prodTestes manuais
Testes manuais
Teste pós
UAT pós
Prod pós
Infraestrutura virou código!
Imperativo vs Declarativo
Automação de ambientes
ops
teste
uat
prod
Teste pós
UAT pós
Prod pós
ops
commit
no git repo
git
● Não há como atender a
demanda de infra sem automação
● Automação como método de garantia de padronização
Infra virou código
Fatos:● Atualização de servidores
não se fazem de forma manual
● Até mesmo redes já tem SDN
Se infra virou código, precisamos testar!
Necessidade de teste
ops
teste
uat
prod
Teste pós
UAT pós
Prod pós
commit Dockerfile
no git repo
git
CDAtualiza
Testes manuais?
Testes manuais
ops
teste
uat
prodTestes manuais
Testes manuais
Teste pós
UAT pós
Prod pós
Necessidade de teste
ops
teste
uat
prod
Teste pós
UAT pós
Prod pós
commit Dockerfile
no git repo
git
CD
Testa
Atualiza
TDD para infra?
Soluções de teste
● Boa documentação
● Facilidade na execução dos testes automatizados
Soluções
Fatos:● Abstração que permitem
não DEV criarem testes
● Tem boas opções escritas em ruby e python
Veja como é fácil testar automaticamente
Arquivo "test_mytest.py":def test_nginx_is_installed(Package): nginx = Package("nginx") assert nginx.is_installed assert nginx.version.startswith("1.2")
Comandos para executar o teste:
# pip install testinfra# testinfra --sudo --connection=ssh --hosts=servidor_a_ser_testado test_mytest.py
Soluções
Lista:● Serverspec
○ Escrita em ruby, mais popular
● Testinfra○ Escrita em python
● Inspec○ Escrita em ruby, mantida pela Chef
● Beaker○ Escrita em ruby, mantida pela Puppet
Sysadmin, você sabe desenvolver?
Como construir seus testes!
Pirâmide de testes de infra
Dúvidas?