summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorJeffrey J McCune <jeff.mccune@northstarlabs.net>2007-08-14 09:50:42 -0400
committerJeffrey J McCune <jeff.mccune@northstarlabs.net>2007-08-14 09:50:42 -0400
commit58e3855bb1c98e45f7e366d0f1fc6d834e0e5e43 (patch)
treee76dfcaf9411eb2764e407a8bf93f03fc26bd82b /examples
parentab42534ae243c24c8c702e38195a954ab52eaed9 (diff)
downloadpuppet-58e3855bb1c98e45f7e366d0f1fc6d834e0e5e43.tar.gz
puppet-58e3855bb1c98e45f7e366d0f1fc6d834e0e5e43.tar.xz
puppet-58e3855bb1c98e45f7e366d0f1fc6d834e0e5e43.zip
Added optional per-module lib directory.
Puppet now looks for a lib directory inside each module bundle, and adds the directory to the list searched by Puppet::Util::Autoload. The intent is to facilitate more sophisticated virtual types and flexibility within modules.
Diffstat (limited to 'examples')
-rw-r--r--examples/code/modules/sample-module.pp10
-rw-r--r--examples/code/modules/sample-module/README.txt17
-rw-r--r--examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb36
-rw-r--r--examples/code/modules/sample-module/manifests/init.pp12
-rw-r--r--examples/code/modules/sample-module/templates/sample.erb5
5 files changed, 80 insertions, 0 deletions
diff --git a/examples/code/modules/sample-module.pp b/examples/code/modules/sample-module.pp
new file mode 100644
index 000000000..57079a0aa
--- /dev/null
+++ b/examples/code/modules/sample-module.pp
@@ -0,0 +1,10 @@
+# Jeff McCune <jeff.mccune@northstarlabs.net>
+# 2007-08-14
+#
+# Use:
+# puppet --verbose --debug --modulepath=`pwd` ./sample-module.pp
+#
+# sample-module demonstrates the use of a custom language function
+# included within the module bundle.
+
+include sample-module
diff --git a/examples/code/modules/sample-module/README.txt b/examples/code/modules/sample-module/README.txt
new file mode 100644
index 000000000..ee4b8201a
--- /dev/null
+++ b/examples/code/modules/sample-module/README.txt
@@ -0,0 +1,17 @@
+Jeff McCune <jeff.mccune@northstarlabs.net>
+2007-08-14
+
+This small, sample module demonstrates how to extend the puppet language
+with a new parser function.
+
+See:
+manifests/init.pp
+lib/puppet/parser/functions/hostname_to_dn.rb
+templates/sample.erb
+
+Note the consistent naming of files for Puppet::Util::Autoload
+
+Reference Documents:
+http://reductivelabs.com/trac/puppet/wiki/ModuleOrganisation
+http://reductivelabs.com/trac/puppet/wiki/WritingYourOwnFunctions
+http://reductivelabs.com/trac/puppet/wiki/FunctionReference
diff --git a/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb b/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb
new file mode 100644
index 000000000..9f732b5bc
--- /dev/null
+++ b/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb
@@ -0,0 +1,36 @@
+# Copyright (C) David Schmitt <david@schmitt.edv-bus.at>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the Author nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+# Jeff McCune <jeff.mccune@northstarlabs.net>
+# 2007-08-14
+# See: http://reductivelabs.com/trac/puppet/wiki/WritingYourOwnFunctions
+
+module Puppet::Parser::Functions
+ newfunction(:hostname_to_dn, :type => :rvalue, :doc => "Given 'foo.bar.com', return 'dc=foo,dc=bar,dc=com'.") do |args|
+ args[0].split(/\./).map do |s| "dc=%s"%[s] end.join(",")
+ end
+end
diff --git a/examples/code/modules/sample-module/manifests/init.pp b/examples/code/modules/sample-module/manifests/init.pp
new file mode 100644
index 000000000..1af8dff1f
--- /dev/null
+++ b/examples/code/modules/sample-module/manifests/init.pp
@@ -0,0 +1,12 @@
+# Jeff McCune <jeff.mccune@northstarlabs.net>
+#
+# Demonstration of a custom parser function and erb template within
+# a module, working in concert.
+
+class sample-module {
+ $fqdn_to_dn = hostname_to_dn($domain)
+ $sample_template = template("sample-module/sample.erb")
+
+ notice("hostname_to_dn module function returned: [$fqdn_to_dn]")
+ info("sample.erb looks like:\n$sample_template")
+}
diff --git a/examples/code/modules/sample-module/templates/sample.erb b/examples/code/modules/sample-module/templates/sample.erb
new file mode 100644
index 000000000..b13561b45
--- /dev/null
+++ b/examples/code/modules/sample-module/templates/sample.erb
@@ -0,0 +1,5 @@
+
+## Jeff McCune <jeff.mccune@northstarlabs.net>
+fqdn: <%= fqdn %>
+basedn: <%= fqdn_to_dn %>
+## end sample.erb ##