Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Infraestrutura como Código (IaC): Testes de Infraestrutura

Infraestrutura como Código (IaC): Testes de Infraestrutura

Tornando a produção mais produtiva:
Desenvolvimento baseado em testes – Comportamento e conformidade da Infraestrutua implementada

Adriano Vieira

January 19, 2017
Tweet

More Decks by Adriano Vieira

Other Decks in Programming

Transcript

  1. Infraestrutura como Código (IaC) Tornando a produção mais produtiva: Desenvolvimento

    baseado em testes – Comportamento e conformidade da Infraestrutua implementada Adriano Vieira - SUAS [email protected]
  2. Infraestrutura como código • Infraestruturas dinâmicas • Automação • verificações

    de comportamentos, integridade e consistência de servidores, ambientes ou serviços • Sistemas legados Agenda: • Desafios • Conceitos • Ferramentas • DSL • Demo Nn Adriano Vieira <[email protected]> - SUAS
  3. Infraestrutura como código • Tempo para fazer mudanças ou verificações

    principalmente • Medo da real automação • Testes automatizados Agenda: • Desafios • Conceitos • Ferramentas • DSL • Demo Adriano Vieira <[email protected]> - SUAS
  4. Infraestrutura como código Tipos de testes: • Sintaxe – Testes

    com foco na Testes com foco na sintaxe da linguagem, valida integridade e consistência • Estilo – Testes de estilo focam em padrões de boa escrita na linguagem em questão, como: legibilidade e formatação (ex: espaçamento, identação, classes em arquivos separados) Agenda: ✔ Desafios • Conceitos • Ferramentas • DSL • Demo Adriano Vieira <[email protected]> - SUAS
  5. Infraestrutura como código Tipos de testes: • Unitários – Visam

    avaliar o comportamento do código, em algums pontos específicos e se conforme definido • Aceitação – Teste de comportamento do ambiente onde o código foi aplicado e se este foi aplicado conforme esperado Agenda: ✔ Desafios • Conceitos • Ferramentas • DSL • Demo Adriano Vieira <[email protected]> - SUAS
  6. Infraestrutura como código Algumas ferramentas conhecidas para testes de infraestrutura

    • testinfra: testes unitátios/comportamento – paramiko: teste em múltiplos hosts – pytest-xdist: testes em paralelo • rspec (rspec-puppet): testa o comportamento do Puppet ao compilar o catálago de recursos Agenda: ✔ Desafios ✔ Conceitos • Ferramentas • DSL • Demo Adriano Vieira <[email protected]> - SUAS
  7. Infraestrutura como código Algumas ferramentas conhecidas para testes de infraestrutura

    • rspec (serverspec): testes comportamento, para verificar se o estado atual do servidor está corretamente configurado • beaker: testes de aceitação; objetiva provisionar todo um ambiente para aplicar os módulos e validar o ambiente segundo os módulos aplicados Agenda: ✔ Desafios ✔ Conceitos • Ferramentas • DSL • Demo Adriano Vieira <[email protected]> - SUAS
  8. Infraestrutura como código DSL: shell: Agenda: ✔ Desafios ✔ Conceitos

    ✔ Ferramentas • DSL • Demo $ ./detect_os Adriano Vieira <[email protected]> - SUAS
  9. Infraestrutura como código DSL: puppet: Agenda: ✔ Desafios ✔ Conceitos

    ✔ Ferramentas • DSL • Demo $ facter operatingsystem $ facter operatingsystemmajrelease Adriano Vieira <[email protected]> - SUAS
  10. Infraestrutura como código DSL: testinfra: Agenda: ✔ Desafios ✔ Conceitos

    ✔ Ferramentas • DSL • Demo # testinfra -v test_myinfra.py Adriano Vieira <[email protected]> - SUAS
  11. Infraestrutura como código DSL: beaker Agenda: ✔ Desafios ✔ Conceitos

    ✔ Ferramentas • DSL • Demo $ beaker --host ubuntu-1404-x86_64.yaml --pre-suite install.rb --test mytest.rb Adriano Vieira <[email protected]> - SUAS
  12. Infraestrutura como código DSL: rspec (rspec-puppet) Agenda: ✔ Desafios ✔

    Conceitos ✔ Ferramentas • DSL • Demo $ rake spec Adriano Vieira <[email protected]> - SUAS
  13. Infraestrutura como código DSL: rspec (serverspec) Agenda: ✔ Desafios ✔

    Conceitos ✔ Ferramentas • DSL • Demo $ rake spec Adriano Vieira <[email protected]> - SUAS
  14. Infraestrutura como código Agenda: ✔ Desafios ✔ Conceitos ✔ Ferramentas

    ✔ DSL • Demonstração Adriano Vieira <[email protected]> - SUAS Teconologias e recursos utilizados nesta demonstração de testes de infraestrutura * • Pipeline Gitlab-CI+runners em vagrant+vbox – https://gitlab.com/adrianovieira/gitlab-ci-runner-vagrant_vbox – https://atlas.hashicorp.com/adrianovieira/boxes/centos7-docker1.12-GA • Imagens Docker com ferramentas de testes unitários implementadas (https://gitlab.com/osinfs/containerize) – registry.gitlab.com/osinfs/containerize:base-puppet_tests-alpine34 – registry.gitlab.com/osinfs/containerize:base-puppet3_tests-centos7 – registry.gitlab.com/osinfs/containerize:base-puppet3_tests-debian8 . . . . • vagrant+vbox para realizar testes locais em desktop (https://atlas.hashicorp.com/adrianovieira/boxes/centos7-vbox5.0) – CEntOS-7.3 – VirtualBox Guest Additions-5.0.30 Puppet 3 Puppet 4 CEntOS-7 Debian-8 Alpine-3.4 Ruby-2.0 Ruby-2.1 Ruby-2.3 puppet-3.8.7 Puppet-3.8.7 puppet-4.8.1 rspec-puppet-2.5.0 rspec-puppet-2.5.0 rspec-puppet-2.5.0 serverspec-2.37.2 serverspec-2.37.2 serverspec-2.37.2 r10k-2.5.1 r10k-2.5.1 r10k-2.5.1 * links de recursos em repositórios pessoais
  15. Infraestrutura como código Referências: • Morris, Kief. Infrastructure as Code.

    O'Reilly. 2015 • Test-Driven Infrastructure Development, PuppetConf, 2013, disponível em: https://www.youtube.com/watch?v=S8_a5G1UCdM Ferramentas Usadas na demonstração: • Gitlab-CI (http://www-git.prevnet | http://www-hscm.prevnet): – Runners – Docker (http://docker.com) • puppet (estilo e sintaxe): (http://puppet.com) – RSpec (http://rspec.info) – rspec-puppet: (http://rspec-puppet.com) – serverspec: (http://serverspec.org) Outras: • testinfra (http://testinfra.readthedocs.io) – paramiko: teste em múltiplos hosts – pytest-xdist: testes em paralelo • Beaker: (https://github.com/puppetlabs/beaker) Code highlight: http://markup.su/highlighter/ Desenhos: https://www.draw.io/ Agenda: ✔ Desafios ✔ Conceitos ✔ Ferramentas ✔ DSL ✔ Demonstração