diff options
-rw-r--r-- | README.md | 24 | ||||
-rw-r--r-- | manifests/file.pp | 38 | ||||
-rw-r--r-- | manifests/init.pp | 2 | ||||
-rw-r--r-- | manifests/params.pp | 9 | ||||
-rw-r--r-- | spec/defines/tftp_file_spec.rb | 75 |
5 files changed, 113 insertions, 35 deletions
@@ -32,13 +32,16 @@ Example: Parameters: -* ensure: file type, default file. -* recurse: file recurse, default false. -* owner: file owner, default tftp. -* group: file group. default tftp. -* mode: file mode, default 0644 (puppet will change to 0755 for directories). -* content: file content. -* source: file source. +* ensure: file type, default file. +* owner: file owner, default tftp. +* group: file group. default tftp. +* mode: file mode, default 0644 (puppet will change to 0755 for directories). +* content: file content. +* source: file source, defaults to puppet:///module/${caller_module_name}/${name} for files without content. +* recurse: directory recurse, default false. +* purge: directory recurse and purge. +* replace: replace directory with file or symlink, default undef, +* recurselimit: directory recurse limit, default undef, Example: @@ -51,9 +54,14 @@ Example: } tftp::file { 'pxelinux.cfg/default': - source => 'puppet:///modules/acme/default', + ensure => file, + source => 'puppet:///modules/acme/pxelinux.cfg/default', } +The last example can be abbreviated to the following if it's in the acme module: + + tftp::file { 'pxelinux.cfg/default': } + ## Example 1. tftp directories not in the OS package defaults should be managed as file resources. diff --git a/manifests/file.pp b/manifests/file.pp index ec67f2c..3628188 100644 --- a/manifests/file.pp +++ b/manifests/file.pp @@ -2,18 +2,37 @@ # # Parameters: # +# [*ensure*]: file type, default file. +# [*owner*]: file owner, default tftp. +# [*group*]: file group. default tftp. +# [*mode*]: file mode, default 0644 (puppet will change to 0755 for directories). +# [*content*]: file content. +# [*source*]: file source, defaults to puppet*]:///module/${caller_module_name}/${name} for files without content. +# [*recurse*]: directory recurse, default false. +# [*purge*]: directory recurse and purge. +# [*replace*]: replace directory with file or symlink, default undef, +# [*recurselimit*]: directory recurse limit, default undef, +# # Actions: # -# Requires: +# Deploy files into the tftp directory. # # Usage: # +# tftp::file { 'pxelinux.0': +# source => 'puppet:///modules/acme/pxelinux.0', +# } +# +# tftp::file { 'pxelinux.cfg': +# ensure => directory, +# } +# define tftp::file ( $ensure = file, - $recurse = false, $owner = 'tftp', $group = 'tftp', $mode = '0644', + $recurse = false, $purge = undef, $replace = undef, $recurselimit = undef, @@ -22,17 +41,28 @@ define tftp::file ( ) { include 'tftp' + if $source { + $source_real = $source + } elsif $ensure != 'directory' and ! $content { + if $caller_module_name { + $mod = $caller_module_name + } else { + $mod = $module_name + } + $source_real = "puppet:///modules/${mod}/${name}" + } + file { "${tftp::directory}/${name}": ensure => $ensure, - recurse => $recurse, owner => $owner, group => $group, mode => $mode, + recurse => $recurse, purge => $purge, replace => $replace, recurselimit => $recurselimit, content => $content, - source => $source, + source => $source_real, require => Class['tftp'], } } diff --git a/manifests/init.pp b/manifests/init.pp index 13954b5..9dfab37 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -18,7 +18,7 @@ # # Usage: # -# class tftp { +# class { 'tftp': # directory => '/opt/tftp', # address => $::ipaddress, # options => '--ipv6 --timeout 60', diff --git a/manifests/params.pp b/manifests/params.pp index 564e0f2..e658184 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,13 +1,6 @@ # Class: tftp::params # -# Parameters: -# -# Actions: -# -# Requires: -# -# Usage: -# +# TFTP class parameters. class tftp::params { $address = '0.0.0.0' $port = '69' diff --git a/spec/defines/tftp_file_spec.rb b/spec/defines/tftp_file_spec.rb index 6a032c0..0de1b6f 100644 --- a/spec/defines/tftp_file_spec.rb +++ b/spec/defines/tftp_file_spec.rb @@ -11,10 +11,10 @@ describe 'tftp::file' do it { should include_class('tftp') } it { should contain_file('/srv/tftp/sample').with({ 'ensure' => 'file', - 'recurse' => false, 'owner' => 'tftp', 'group' => 'tftp', - 'mode' => '0644' + 'mode' => '0644', + 'recurse' => false, }) } end @@ -25,29 +25,29 @@ describe 'tftp::file' do it { should include_class('tftp') } it { should contain_file('/var/lib/tftpboot/sample').with({ 'ensure' => 'file', - 'recurse' => false, 'owner' => 'tftp', 'group' => 'tftp', - 'mode' => '0644' + 'mode' => '0644', + 'recurse' => false, }) } end describe 'when deploying with parameters' do - let(:params) { {:ensure => 'directory', - :recurse => true, - :owner => 'root', - :group => 'root', - :mode => '0755' }} + let(:params) { {:ensure => 'directory', + :owner => 'root', + :group => 'root', + :mode => '0755', + :recurse => true }} let(:facts) { { :operatingsystem => 'Debian', :path => '/usr/local/bin:/usr/bin:/bin', } } it { should include_class('tftp') } it { should contain_file('/srv/tftp/sample').with({ 'ensure' => 'directory', - 'recurse' => true, 'owner' => 'root', 'group' => 'root', - 'mode' => '0755' + 'mode' => '0755', + 'recurse' => true, }) } end @@ -61,14 +61,14 @@ describe 'tftp::file' do 'recurse' => false, 'purge' => nil, 'replace' => nil, - 'recurselimit' => nil + 'recurselimit' => nil, }) } end describe 'when deploying with recurse parameters' do let(:params) { {:ensure => 'directory', - :recurse => true, :mode => '0755', + :recurse => true, :recurselimit => 42, :purge => true, :replace => false }} @@ -78,13 +78,60 @@ describe 'tftp::file' do it { should include_class('tftp') } it { should contain_file('/srv/tftp/sample').with({ 'ensure' => 'directory', - 'recurse' => true, 'owner' => 'tftp', 'group' => 'tftp', 'mode' => '0755', + 'recurse' => true, 'recurselimit' => 42, 'purge' => true, 'replace' => false, }) } end + + describe 'when deploying directory' do + let(:params) { {:ensure => 'directory', + :mode => '0755' }} + let(:facts) { { :operatingsystem => 'Debian', + :caller_module_name => 'acme', + :path => '/usr/local/bin:/usr/bin:/bin', } } + + it { should include_class('tftp') } + it { should contain_file('/srv/tftp/sample').with({ + 'ensure' => 'directory', + 'mode' => '0755', + 'source' => nil, + }) } + end + + describe 'when deploying file from another module' do + let(:params) { {:ensure => 'file', + :mode => '0755' }} + let(:facts) { { :operatingsystem => 'Debian', + :caller_module_name => 'acme', + :path => '/usr/local/bin:/usr/bin:/bin', } } + + it { should include_class('tftp') } + it { should contain_file('/srv/tftp/sample').with({ + 'ensure' => 'file', + 'mode' => '0755', + 'source' => 'puppet:///modules/acme/sample' + }) } + end + + describe 'when deploying file with content' do + let(:params) { {:ensure => 'file', + :content => 'hi', + :mode => '0755' }} + let(:facts) { { :operatingsystem => 'Debian', + :caller_module_name => 'acme', + :path => '/usr/local/bin:/usr/bin:/bin', } } + + it { should include_class('tftp') } + it { should contain_file('/srv/tftp/sample').with({ + 'ensure' => 'file', + 'mode' => '0755', + 'content' => 'hi', + 'source' => nil, + }) } + end end |