[Spacewalk-list] Code Snippet Question
Josh Preston
JoshPreston at dswinc.com
Fri Apr 13 18:35:26 UTC 2012
Greg,
You won't be able to use ksmeta data inside of a #raw ... #end raw block the way you are trying to... The #raw block tells cobbler not to process $variables ... use it mainly when there are tons of shell variables that cobbler should not process. I'd recommend limiting the use of #raw as much as possible and when you do have to use it, use it to avoid a lot of shell variable escaping. It might help to think of cobbler as the pre/post script GENERATOR, not the shell interpreter.
For example:
#raw
echo $test
#end raw
is equivalent to:
echo \$test
Neither of which cobbler would process and would end up as:
echo $test
in the kickstart script / snippet
--OR --
You could do something like:
env = $getVar("$env", "")
#raw
...
echo $env
...
#end raw
This will declare the variable for the shell, so when your script it running, $env is set and cobbler didn't need to do the substitution.
---
For reference, I use this formula in my snippets so that I can use ksmeta, command line options or cobbler system data (notice the minimal use of #raw):
# 1. if the system's hostname is not set or equals localhost.localdomain or it's set to ip address
# a. configure the hostname using the kernel command line options
# b. configure the hostname using cobbler system data
# 2. create our valid /etc/hosts entries
#set $HOSTNAME = $getVar("$hostname", "$hostname")
#set $GATEWAY = $getVar("$gateway", "$gateway")
#set $IP = $getVar("$ip", "$ip")
HOSTNAME="$HOSTNAME"
GATEWAY="$GATEWAY"
IP="$IP"
#if $getVar("$system_name", "") == ""
#raw
for I in $(cat /proc/cmdline); do
case "$I" in *=*)
eval $I; export $I;
esac;
done
#end raw
#end if
Josh Preston
Shoe Lover & Unix Admin
More information about the Spacewalk-list
mailing list