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
e il DSL da utilizzare per i nostri test.
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