Andreas Kuntzagk <andreas.kuntz...@mdc-berlin.de> wrote:

> I want some config depending on memorysize.
> 
> What I tried was
>    if ($memorysize >= 256 * 1024*1024) {
> ...
>    }
> 
> But this fails because $memorysize is a string (and contains a "G")
> and can't be compared to an int.
> 
> Are all facts strings? How do I work with numbers?

Typical problem. Not to mention that you happen to have "G" but that
could very easily be "M". Here's my workaround for that, which I use
for calculations to then set some sysctl.conf values accordingly :

    # This is ugly, but very useful to get a standard kiB total RAM
    # to base further calculations upon. Note that we get a string
    $mem = inline_template("<%
        mem,unit = scope.lookupvar('::memorysize').split
        mem = mem.to_f
        # Normalize mem to KiB
        case unit
            when nil:  mem *= (1<<0)
            when 'kB': mem *= (1<<10)
            when 'MB': mem *= (1<<20)
            when 'GB': mem *= (1<<30)
            when 'TB': mem *= (1<<40)
        end
        %><%= mem.to_i %>")

Here's an example of how I then use it :

    # kernel.shmmax
    if $shmmax {
        $shmmax_final = $shmmax
    } else {
        if $oracle {
            # For non-shm half the RAM for <= 4G, 2G otherwise
            if $mem <= 4294967296 {
                $shmmax_final = $mem / 2
            } else {
                $shmmax_final = $mem - 2147483648
            }
        } else {
            $shmmax_final = $mem
        }
    }

HTH,
Matthias

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to