Ultimamente mi tocca, con molto piacere, rispolverare un pò 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 pò 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