Permalink
Browse files

(A) move cheetah_macro content to contrib, since we don't want to enc…

…ourage usage of any specific macros, especially Perl one liners, which folks should probalby use a CMS... (B) fix podchecker errors (B=jlaska).
  • Loading branch information...
1 parent 8380e6f commit aefc7252b23f019338e99f1c9e2530d2a7623d01 Michael DeHaan committed Dec 18, 2008
Showing with 256 additions and 254 deletions.
  1. +1 −252 config/cheetah_macros
  2. +253 −0 contrib/cheetah_macros
  3. +2 −2 docs/cobbler.pod
View
@@ -1,253 +1,2 @@
-
-## Comment every line containing the $pattern given
-## Ex: preserve a record of an old value before changing it.
-##
-## $comment_lines('/etc/resolv.conf', 'nameserver')
-## echo "nameserver 192.168.0.1" >> /etc/resolv.conf
-##
-#def comment_lines($filename, $pattern, $commentchar='#')
-perl -npe 's/^(.*${pattern}.*)$/${commentchar}\${1}/' -i '$filename'
-#end def
-
-## Comments every line which contains only the exact pattern.
-## This one works like comment_lines(), except that a line cannot contain any
-## additional text.
-#def comment_lines_exact($filename, $pattern, $commentchar='#')
-perl -npe 's/^(${pattern})$/${commentchar}\${1}/' -f '$filename'
-#end def
-
-## Uncomments every (commented) line containing the pattern
-## Patterns should not contain the #
-## Ex: enable all the suggested values in the Samba configuration
-## (This isn't the greatest example, but it makes a point)
-##
-## $uncomment_lines('/etc/samba/smb.conf', ';')
-##
-#def uncomment_lines($filename, $pattern, $commentchar='#')
-perl -npe 's/^[ \t]*${commentchar}(.*${pattern}.*)$/\${1}/' -i '$filename'
-#end def
-
-## Nullify (by changing to 'true') all instances of a given sh command. This
-## does understand lines with multiple commands (separated by ';') and also
-## knows to ignore comments. Consider other options before using this
-## method.
-## Ex: remove 'exit 0' commands from a shell script, so that we can append the
-## script and be relatively certain that the new parts will be executed.
-##
-## $delete_command('etc/cron.daily/some_script.sh', 'exit[ \t]*0')
-## echo '# More scipt' >> /etc/cron.daily/some_script.sh
-##
-#def delete_command($filename, $pattern)
-sed -nr '
- h
- s/^([^#]*)(#?.*)$/\1/
- s/((^|;)[ \t]*)${pattern}([ \t]*($|;))/\1true\3/g
- s/((^|;)[ \t]*)${pattern}([ \t]*($|;))/\1true\3/g
- x
- s/^([^#]*)(#?.*)$/\2/
- H
- x
- s/\n//
- p
-' -i '$filename'
-#end def
-
-## Replace a configuration parameter value, or add it if it doesn't exist.
-## Assumes format is [param_name] [value]
-## Ex: Change the maximum password age to 30 days
-##
-## $set_config_value('/etc/login.defs', 'PASS_MAX_DAYS', '30')
-##
-#def set_config_value($filename, $param_name, $value)
-if [ -n \"\$(grep -Ee '^[ \t]*${param_name}[ \t]+' '$filename')\" ]
-then
- perl -npe 's/^([ \t]*${param_name}[ \t]+)[\x21-\x7E]*([ \t]*(#.*)?)$/\${1}${sedesc($value)}\${2}/' -i '$filename'
-else
- echo '$param_name $value' >> '$filename'
-fi
-#end def
-
-## Replace a configuration parameter value, or add it if it doesn't exist.
-## Assues format is [param_name] [delimiter] [value], where [delimiter] is
-## usually '='.
-## This works the same way as set_config_value(), except that this version
-## is used if a character separates a parameter from its value.
-#def set_config_value_delim($filename, $param_name, $delim, $value)
-if [ -n \"\$(grep -Ee '^[ \t]*${param_name}[ \t]*${delim}[ \t]*' '$filename')\" ]
-then
- perl -npe 's/^([ \t]*${param_name}[ \t]*${delim}[ \t]*)[\x21-\x7E]*([ \t]*(#.*)?)$/${1}${sedesc($value)}${2}/' -i '$filename'
-else
- echo '$param_name$delim$value' >> '$filename'
-fi
-#end def
-
-## Copy a file from the server to the client.
-## Ex: Copy a template for samba configuration
-##
-## (once at the top of the kickstart template)
-## #set files = $snippetsdir + '/files/'
-## (when you need to copy a file)
-## $copy_over_file('etc/samba/smb.conf', '/etc/samba/smb.conf')
-##
-## Additionally, copied files can be templated:
-## ---------etc/samba/smb.conf-------------
-## ...
-## [global]
-## server string = $profile_name
-## ...
-## ----------------------------------------
-#def copy_over_file($serverfile, $clientfile)
-cat << 'EOF' > '$clientfile'
-#include $files + $serverfile
-EOF
-#end def
-
-## Copy a file from the server and append the contents to a file on the
-## client.
-## This works the same as copy_over_file(), except it appends the file rather
-## than replacing the file.
-#def copy_append_file($serverfile, $clientfile)
-cat << 'EOF' >> '$clientfile'
-#include $files + $serverfile
-EOF
-#end def
-
-## Convenience function: Copy/append several files at once. This accepts a
-## list of tuples. The first element indicates whether to overwrite ('w') or
-## append ('a'). The second element is the file name on both the server and
-## the client (a '/' is prepended on the client side).
-## Ex: copy a template for samba and audit configuration
-##
-## $copy_files([
-## ('w', 'etc/samba/smb.conf'),
-## ('w', 'etc/audit.rules'),
-## ])
-##
-#def copy_files($filelist)
-#for $thisfile in $filelist
-#if $thisfile[0] == 'a'
-$copy_append_file($thisfile[1], '/' + $thisfile[1])
-#else
-$copy_over_file($thisfile[1], '/' + $thisfile[1])
-#end if
-#end for
-#end def
-
-## Append some content to the todo file. NOTE: $todofile must be defined
-## before using this (unless you want unexpected results). Be sure to end
-## the content with 'EOF'
-## Ex: Instruct the admin to set an appropriate nameserver.
-##
-## (once at the top of the kickstart template)
-## #set global $todofile = '/root/kstodo'
-## (as needed)
-## $TODO()
-## Edit /etc/resolv.conf to configure your local nameserver
-## EOF
-##
-## This will prevent inconsistency and accidents. You should avoid using:
-##
-## echo "Edit /etc/resolv.conf..." >> /root/kstodo
-##
-## It's easy to forget to use >> to append instead of >, which will clobber all
-## previous todo notices. It's also easy to forget the filename, was it kstodo
-## or ks-todo?
-#def TODO()
-cat << 'EOF' >> '$todofile'
-#end def
-
-## Set the owner, group, and permissions for several files. Assignment can
-## be plain ('p') or recursive. If recursive you can assign everything ('r')
-## or just files ('f'). This method takes a list of tuples. The first element
-## of each indicates which style. The remaining elements are owner, group,
-## and mode respectively. If 'f' is used, an additional element is a find
-## pattern that can further restrict assignments (use '*' if no additional
-## restrict is desired).
-## NOTE: I used the word 'plain' instead of 'single', because wildcards can
-## still be used in 'plain' mode.
-## Ex: correct the permissions of serveral important files and directories:
-##
-## $set_permissions([
-## ('p', 'root', 'root', '700', '/root'),
-## ('f', 'root', 'root', '600', '/root', '*'),
-## ('r', 'root', 'root', '/etc/cron.*'),
-## ('p', 'root', 'root', '644', '/etc/samba/smb.conf'),
-## ])
-##
-#def set_permissions($filelist)
-#for $file in $filelist
-#if $file[0] == 'p'
-#if $file[1] != '' and $file[2] != ''
-chown '$file[1]:$file[2]' '$file[4]'
-#else
-#if $file[1] != ''
-chown '$file[1]' '$file[4]'
-#end if
-#if $file[2] != ''
-chgrp '$file[2]' '$file[4]'
-#end if
-#end if
-#if $file[3] != ''
-chmod '$file[3]' '$file[4]'
-#end if
-#elif $file[0] == 'r'
-#if $file[1] != '' and $file[2] != ''
-chown -R '$file[1]:$file[2]' '$file[4]'
-#else
-#if $file[1] != ''
-chown -R '$file[1]' '$file[4]'
-#end if
-#if $file[2] != ''
-chgrp -R '$file[2]' '$file[4]'
-#end if
-#end if
-#if $file[3] != ''
-chmod -R '$file[3]' '$file[4]'
-#end if
-#elif $file[0] == 'f'
-#if $file[1] != '' and $file[2] != ''
-find $file[4] -name '$file[5]' -type f -exec chown -R '$file[1]:$file[2]' {} \;
-#else
-#if $file[1] != ''
-find $file[4] -name '$file[5]' -type f -exec chown -R '$file[1]' {} \;
-#end if
-#if $file[2] != ''
-find $file[4] -name '$file[5]' -type f -exec chgrp -R '$file[2]' {} \;
-#end if
-#end if
-#if $file[3] != ''
-find $file[4] -name '$file[5]' -type f -exec chmod -R '$file[3]' {} \;
-#end if
-#end if
-#end for
-#end def
-
-## Cheeseball an entire directory.
-## This will include (in sequence) all file in a given directory into a
-## kickstart template.
-## Ex: include a 'misc' directory of templates
-##
-## $includeall('misc')
-##
-## Now in cobbler/snippets/misc:
-## ---------------avinstall-----------------
-## wget http://some.server.com/some-av-package.tar.gz
-## tar -xzf some-av-package.tar.gz
-## ./some-av-package/install.sh
-## rm some-av-package.tar.gz
-## rm -rf some-av-package
-## -----------------------------------------
-## ---------------fwinstall-----------------
-## wget http://some.server.com/fw-linux-installer.sh
-## chmod +x fw-linux-installer.sh
-## ./fw-linux-installer.sh
-## rm fw-linux-installer.sh
-## -----------------------------------------
-##
-#def includeall($dir)
-#import os
-#for $file in $os.listdir($snippetsdir + '/' + $dir)
-#include $snippetsdir + '/' + $dir + '/' + $file
-#end for
-#end def
+## define Cheetah functions here and reuse them throughout your templates
Oops, something went wrong.

0 comments on commit aefc725

Please sign in to comment.