diff options
-rw-r--r-- | manifests/init.pp | 30 | ||||
-rw-r--r-- | spec/defines/init_spec.rb | 60 |
2 files changed, 89 insertions, 1 deletions
diff --git a/manifests/init.pp b/manifests/init.pp index 8741ec7..8398e92 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -30,6 +30,30 @@ # will have an number prefix of 10, you can use the order option # to control that and thus control the order the final file gets built in. # +# You can also specify a path and use a different name for your resources: +# +# # You can make this something dynamic, based on whatever parameters your +# # module/class for example. +# $vhost_file = '/etc/httpd/vhosts/01-my-vhost.conf' +# +# concat{'apache-vhost-myvhost': +# path => $vhost_file, +# } +# +# # We don't care where the file is located, just what to put in it. +# concat::fragment {'apache-vhost-myvhost-main': +# target => 'apache-vhost-myvhost', +# content => '<virtualhost *:80>', +# order => 01, +# } +# +# concat::fragment {'apache-vhost-myvhost-close': +# target => 'apache-vhost-myvhost', +# content => '</virtualhost>', +# order => 99, +# } +# +# # SETUP: # The class concat::setup uses the fact concat_basedir to define the variable # $concatdir, where all the temporary files and fragments will be @@ -66,6 +90,10 @@ # Sets up so that you can use fragments to build a final config file, # # OPTIONS: +# - path The path to the final file. Use this in case you want to +# differentiate between the name of a resource and the file path. +# Note: Use the name you provided in the target of your +# fragments. # - mode The mode of the final file # - owner Who will own the file # - group Who will own the file @@ -94,6 +122,7 @@ # - The final file can be referened as File["/path/to/file"] or # File["concat_/path/to/file"] define concat( + $path = $name, $owner = $::id, $group = $concat::setup::root_group, $mode = '0644', @@ -189,6 +218,7 @@ define concat( } file { $name: + path => $path, ensure => present, alias => "concat_${name}", group => $group, diff --git a/spec/defines/init_spec.rb b/spec/defines/init_spec.rb index 34fb24b..172929a 100644 --- a/spec/defines/init_spec.rb +++ b/spec/defines/init_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'concat' do basedir = '/var/lib/puppet/concat' let(:title) { '/etc/foo.bar' } - let(:facts) { { + let(:facts) { { :concat_basedir => '/var/lib/puppet/concat', :id => 'root', } } @@ -54,4 +54,62 @@ describe 'concat' do end end +describe 'concat' do + + basedir = '/var/lib/puppet/concat' + let(:title) { 'foobar' } + let(:target) { '/etc/foo.bar' } + let(:facts) { { + :concat_basedir => '/var/lib/puppet/concat', + :id => 'root', + } } + let :pre_condition do + 'include concat::setup' + end + + directories = [ + "#{basedir}/foobar", + "#{basedir}/foobar/fragments", + ] + + directories.each do |dirs| + it do + should contain_file(dirs).with({ + 'ensure' => 'directory', + 'backup' => 'puppet', + 'group' => 0, + 'mode' => '0644', + 'owner' => 'root', + }) + end + end + + files = [ + "foobar", + "#{basedir}/foobar/fragments.concat", + ] + + files.each do |file| + it do + should contain_file(file).with({ + 'ensure' => 'present', + 'backup' => 'puppet', + 'group' => 0, + 'mode' => '0644', + 'owner' => 'root', + }) + end + end + + it do + should contain_exec("concat_foobar").with_command( + "#{basedir}/bin/concatfragments.sh " + + "-o #{basedir}/foobar/fragments.concat.out " + + "-d #{basedir}/foobar " + ) + end + + +end + # vim:sw=2:ts=2:expandtab:textwidth=79 |