Ultimamente mi tocca, con molto piacere, rispolverare un po’ di argomenti passati sulla parte di test di infrastrutture tramite Chef.

Al posto di scrivermi il solito spiegone in markdown direi che un post ci sta tutto 🙂

Iniziamo con scegliere il framework.

5924439

e il DSL da utilizzare per i nostri test.

InSpecLogo

Userò InSpec. Riporto il link della documentazione dove sono elencati vari costrutti e metodi da utilizzare.

In .kitchen.yml, all’interno del cookbook, selezioniamo il verifier.

verifier:
  name: inspec

Il file da editare è test/smoke/default/default_test.rb.

Di seguito un po’ di test fatti per verificare il ruolo di base di alcuni server.

  • Controllo di un nameserver in /etc/resolv.conf
describe file('/etc/resolv.conf') do
  its('content') { should match(/^nameserver\ 8.8.8.8$/) }
end
  • Controllo NTP
[
 /^server\ ntp1.inrim.it.*/,
 /^server\ ntp2.inrim.it.*/
].each do |ntp|
 describe file('/etc/ntp.conf') do
 its('content') { should match(ntp) }
 end
end
  • Selinux è disabilitato?
describe command('getenforce') do
 it { should exist }
 its('matcher') { should eq 'Permissive' }
end

Ora lanciamo ‘kitchen verify’ e verifichiamo il risultato dei test.

File /etc/resolv.conf
 ✔ content should match /^nameserver\ 8.8.8.8$/
 File /etc/resolv.conf
 ✔ content should match /^nameserver\ 8.8.4.4$/
 File /etc/ntp.conf
 ✔ content should match /^server\ ntp1.inrim.it.*/
 File /etc/ntp.conf
 ✔ content should match /^server\ ntp2.inrim.it.*/

Test Summary: 4 successful, 0 failures, 0 skipped