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 prático: Como configurar o OpenLDAP para aumentar a disponibilidade do seu ambiente

O que é OpenLDAP? LDAP é uma sigla para Lightweight Directory Access Protocol. Este serviço é usado essencialmente para armazenar informações de usuários, grupos, sistemas etc. O que não é

Treinamentos

Descubra o mundo da Cloud Computing com o curso gratuito da 4Linux

Cloud Computing, ou computação em nuvem, é a entrega sob demanda de recursos de TI via internet com preços pré-pagos. Ao invés de comprar, possuir e manter centros de dados

Infraestrutura TI

Automatizando Tarefas com Shell Script

Já se aventurou pela linha de comando de sistemas Unix ou Linux? Se sua resposta for sim, então provavelmente já ouviu falar de Shell Script. Mas o que seria exatamente