Teste sua infraestrutura com InSpec: auditoria automatizada e eficiente

Teste sua infraestrutura com InSpec: auditoria automatizada e eficiente

Você conhece a ferramenta da Chef, o InSpec? Vamos realizar um teste básico de infraestrutura utilizando InSpec!

Muita das vezes quando trabalhamos com integração continua não temos a certeza que nossa configuração está sendo realizada com sucesso dentro do nosso ambiente, para nos auxiliar usamos uma ferramenta de Compliance as a Code como o InSpec.

O InSpec é uma ferramenta  para teste e auditoria de aplicações e infraestrutura, que pode ser resumido como a capacidade organizacional de automatizar a implementação, verificação, correção, monitoramento e relatório do status de conformidade.

Benefícios do InSpec: 

  • Agora você consegue saber qual e o estado atual da sua infra independente da situação.
  • Possui um shell interativo podendo executar testes rápidos.
  • Funciona no Linux, Mac e Windows.

Ambiente: 

Para testar o InSpec iremos criar um ambiente composto por uma maquinas usando o Vagrant (Ferramenta para criação de Maquinas Virtuais.)
Dentro da maquina será instalado o Apache “Servidor Web” com uma pagina em html com o seguinte conteúdo “Webserver com InSpec”.
  • Caso vocês queiram replicar o ambinte segue o arquivo de configuração:

Vagrantfile:

BOX_SRV = "debian/buster64"
Vagrant.configure("2") do |config|
  config.vm.define "server1" do |server1|
    server1.vm.box = BOX_SRV
    server1.vm.network "private_network", ip: "10.5.25.10"
    server1.vm.provision "shell",
      inline: "wget https://packages.chef.io/files/stable/inspec/4.21.3/debian/10/inspec_4.21.3-1_amd64.deb ; dpkg -i inspec_4.21.3-1_amd64.deb"
    server1.vm.provision "shell",
      inline: "apt update; apt install apache2 -y ; echo \"Webserver com Inspec\" > /var/www/html/index.html"
  end
end

Instalação: 

Basta acessar o site oficial da chef e realizar o download.

InSpec Shell: 

O InSpec Shell é um shell interativo, utilizado para executar rapidamente controles e testes do InSpec sem precisar escrever um arquivo. Podemos utilizar também o InSpec Shell para verificar os comandos aceitos pela ferramenta.
Ao iniciar o shell será solicitado o aceite do licenciamento da Chef.
Execute: “Inspec shell” para iniciar o shell.

Recursos:

O InSpec trabalha com recursos (resources) que são os módulos de trabalho da ferramenta.
Execute  “help resources” para listar todos os recursos disponíveis:
Observação: Para ver o manual de algum recurso basta digitar “help nome-do-recurso”.
Iremos usar o recurso package para verificar se o apache2 está instalado junto a sua versão.

Controles:

Depois que conhecemos oque são recursos agora está na hora de começar a fazer múltiplos testes com Controls.
Controles são usados pelo InSpec para expressar expectativas com relação ao estado de um recurso, como por exemplo: propriedades, condições, comparadores e resultados esperados.
Vamos descrever um controle para realizar os mesmos teste “instalação e versão do apache”.
  • Usando controles o InSpec irá verificar todos os elementos que você desejar.

Profiles: 

Profiles são utilizados pelo InSpec para organizar múltiplos controles “Controls” em um único arquivo.
Com isso podemos descrever uma bateria de testes dentro de um arquivo e posteriormente executa-lás dentro de um servidor.
Teste a ser realizado:
  • Pacote apache2 está instalado?
  • Serviço apache2 em execução?
  • A pagina inicial do Web server tem o conteúdo “Webserver com InSpec”?
  • Porta 80 Aberta no servidor?

Webserver.rb:

title 'Testes de webserver'
  control 'Pacote Webserver' do
    title 'Verificando a instalação do Apache2'
    describe package('apache2') do
      it { should be_installed}
      its('version') { should cmp '2.4.38-3+deb10u3' }
    end
  end

  control 'Serviço Webserver' do
    title 'Verificando se o apache está em execução'
    describe service('apache2') do
      it { should be_installed }
      it { should be_enabled } 
      it { should be_running }
    end
  end

  control 'Arquivo Webserver' do
    title 'Verificando pagina do Webserver'
    describe file('/var/www/html/index.html') do
      it { should be_file}
      its('content') { should include 'Webserver com Inspec'}
    end
  end

  control 'Porta Webserver' do
    title 'Verificando Porta'
    describe port('80') do
      it { should be_listening }
    end
   end
Após descrever todo o teste em um Profile vamos executa-lo.
  • inspec exec webserver.rb
E esse foi resultado obtido pela ferramenta.

Conclusão:

Após uma implementação na sua infraestrutura o InSpec e a ferramenta ideal para apurar se tudo está no estado desejável.

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Entenda o que é um Framework e como ele pode facilitar seus projetos digitais
Próxima Transformando sua empresa com a metodologia ágil: um guia passo a passo

About author

Você pode gostar também

Infraestrutura TI

Guia completo sobre PromQL: a linguagem de consulta do Prometheus

Nesse post vamos falar sobre o PromQL, que nada mais é do que uma linguagem de consulta do Prometheus, ela nos possibilita selecionar e agregar dados de séries temporais em

Infraestrutura TI

Gerando Dados Aleatórios com Paralelização no Shell: Guia Prático

Gerar dados aleatórios com paralelização no shell. Falando assim parece até alguma coisa muito importante ou difícil, mas vamos entender sua utilidade na prática. Vez ou outra preciso de uma

Cloud

Descubra como otimizar sua experiência de jogos no Linux

Jogar é um excelente passatempo. Pessoas de todos os cantos do mundo se reúnem em grupos, seja para atirar, pilotar, construir, ou simplesmente socializar enquanto salvamos alguns reféns em perigo