6. It’s own DSL…if/else, etc.
package { "ssh":
name => $operatingsystem ?
/(Red Hat|CentOS|Fedora|Ubuntu|Debian)/ =>
"openssh-server",
Solaris => "openssh",
},
ensure => installed,
}
My recommendation: RTFB …. Read The Fowler Book on DSL
7. Audit
file { '/etc/hosts':
audit => [ owner, group, mode ],
}
audit change: previously recorded value owner root
has been changed to owner daemon
12. TDD - rspec
require 'spec_helper'
describe 'logrotate::rule' do
let(:title) { 'nginx' }
it { should include_class('logrotate::rule') }
it do
should contain_file('/etc/logrotate.d/nginx').with({
'ensure' => 'present',
'owner' => 'root',
'group' => 'root',
'mode' => '0444',
})
end
context 'with compress => true' do
let(:params) { {:compress => true} }
it do
should contain_file('/etc/logrotate.d/nginx')
.with_content(/^s*compress$/)
end
end
context 'with compress => false' do
let(:params) { {:compress => false} }
13. TDD - cucumber
Feature: General catalog policy
In order to ensure applicability of a host's catalog
As a manifest developer
I want all catalogs to obey some general rules
Scenario Outline: Compile and verify catalog
Given a node specified by "features/yaml/<hostname>.example.com.yaml"
When I compile its catalog
Then compilation should succeed
And all resource dependencies should resolve
Examples:
| hostname |
| localhost |