test driven infrastructure na globo - qconsp.com · barulho aprontando altas confusões...
TRANSCRIPT
![Page 1: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/1.jpg)
globo .comTest Driven Infrastructure na Globo.comFernando Carolo e Rogério Schneider QCon São Paulo 2014
![Page 2: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/2.jpg)
Quinta-feira 15:45
![Page 3: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/3.jpg)
![Page 4: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/4.jpg)
Uma turminha do barulho aprontando
altas confusões configurações
![Page 5: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/5.jpg)
Tudo era feito à mão !
!
PARTE 1
![Page 6: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/6.jpg)
globo .com
Configurar um servidor era tarefa manual Instalar pacotes, editar arquivos Alguns arquivos foram para um share NFS /etc, /opt, /usr/local acertados manualmente Trabalho repetido em vários hosts ClusterSSH, Capistrano
![Page 7: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/7.jpg)
globo .com
Uma maneira melhor Infraestrutura = código
![Page 8: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/8.jpg)
globo .com
Mesmos princípios Controle de versão Pair programming e revisão de código Test driven development Integração contínua
![Page 9: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/9.jpg)
globo .com
Ferramentas Controle de versão Automação Máquinas virtuais Integração contínua Escolha as suas
![Page 10: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/10.jpg)
globo .com
Ferramentas que usamos Controle de versão Git Automação Kickstart, Puppet Máquinas virtuais Vagrant Integração contínua Jenkins Não são as únicas
![Page 11: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/11.jpg)
globo .com
Kickstart Instalação padronizada de SO Imagens para boot via PXE Apenas os pacotes básicos Serviços essenciais (resolver, ntp, ldap) Diferenças só por conta do hardware
![Page 12: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/12.jpg)
globo .com
Puppet Configuração do host para um projeto Pacotes de software Arquivos de configuração Controle do startup da máquina
![Page 13: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/13.jpg)
globo .com
Foreman Front-end para o puppet master Atribuição de papéis a cada host Gerência de certificados do puppet Status de cada host
![Page 14: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/14.jpg)
globo .com
Vagrant Gerenciamento de máquinas virtuais Criação de VMs por script Compatível com Virtualbox, VMWare, etc Ambiente completo no seu notebook
![Page 15: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/15.jpg)
globo .com
Jenkins Integração contínua também para infra Testes unitários nos módulos puppet Montagem de ambientes com Vagrant Instalação e testes do projeto
![Page 16: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/16.jpg)
Aprendizado !
!
PARTE 2
![Page 17: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/17.jpg)
globo .com
Puppet é funcional Módulos descrevem o estado desejado Pense em makefile, não em script Dependências devem ser explícitas Use requires e anchors Desfazer é difícil Usar ensure => absent fica confuso Começar do zero é mais fácil
![Page 18: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/18.jpg)
globo .com
Unifique o código do seu projeto Aplicação + módulos puppet Versionamento em conjunto Isole os parâmetros do código Use defines separados ou hiera Código legível é código bonito puppet-lint
![Page 19: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/19.jpg)
globo .com
Separe os ambientes no Foreman Versões para desenvolvimento, QA, produção Cuidado com módulos compartilhados Testes e eterna vigilância Librarian-puppet pode ajudar Decida como aplicar as mudanças Use --onetime ao invés de rodar o agente como daemon
![Page 20: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/20.jpg)
Infraestrutura = código dos outros
!
!
PARTE 3
![Page 21: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/21.jpg)
globo .com
Mudanças acontecem o tempo todo Em outros lugares Principalmente em produção Nem tudo está do jeito desejado Serviços externos, bases de dados, servidores de arquivos, ACLs, etc Precisamos de testes de aceitação
![Page 22: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/22.jpg)
globo .com
Nossa solução: TDI Ferramenta para rodar testes sobre a infra DNS, filesystem, HTTP, etc Prática de TDD Escreva o teste, rode, corrija os erros Plano de teste num arquivo JSON Pode ser gerado no build da aplicação Ajustado ao papel de cada host Torna-se teste de aceitação da infraestrutura
![Page 23: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/23.jpg)
globo .com
TDI Ruby – gem install tdi Open source (github) Beta Curta e compatilhe Pull requests são bem-vindos
![Page 24: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/24.jpg)
Demonstração !
!
PARTE 4
![Page 25: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/25.jpg)
globo .com
Serviços externos via HTTP URLs de serviços públicos na internet
![Page 26: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/26.jpg)
globo .com
{ "app": { "desc": "Test service dependencies", "http": { "http://globoesporte.globo.com/healthcheck": { "match": "WORKING" }, "http://api.sde.globo.com": { "code" : 301 }, "https://api.sde.globo.com": { "code" : 401 }, "https://api.cartola.globo.com/mercado/status.json": { "code" : 200 }, "https://api.cartola.globo.com/wrong-url": { "code" : 200 } } } }
![Page 27: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/27.jpg)
globo .com
![Page 28: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/28.jpg)
globo .com
Acessos de rede Conexões em portas específicas
![Page 29: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/29.jpg)
globo .com
{ "app": { "desc": "Test network connectivity", "acl": { "port": 80, "www.globo.com": { }, "globoesporte.globo.com": { }, "g1.globo.com": { }, "www.example.com": { "port": 9999 }, "localhost": { "port": [22, 80, 65535] } } } }
![Page 30: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/30.jpg)
globo .com
![Page 31: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/31.jpg)
Perguntas !
!
FINAL
![Page 32: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/32.jpg)
CRÉDITOS
![Page 33: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/33.jpg)
globo .com
Fernando Carolo [email protected] Rogério Schneider [email protected]
!
TDI github.com/globocom/tdi rubygems.org/gems/tdi
![Page 34: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/34.jpg)
globo .com
Kickstart fedoraproject.org/wiki/Anaconda/Kickstart Puppet puppetlabs.com/puppet/puppet-open-source
Foreman theforeman.org
Vagrant www.vagrantup.com
![Page 35: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era](https://reader031.vdocuments.site/reader031/viewer/2022021620/5bf8a10109d3f2ff0a8c23c7/html5/thumbnails/35.jpg)
Obrigado