Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
## output Apr 28 13:21:32 monitor1 puppetmasterd[12401]: HUZZAH Apr 28 13:21:32 monitor1 puppetmasterd[12401]: log2universe Apr 28 13:21:32 monitor1 puppetmasterd[12401]: universe Apr 28 13:21:32 monitor1 puppetmasterd[12401]: MATCHED ## func module Puppet::Parser::Functions newfunction(:currhost_containedin, :type => :rvalue) do |args| fromhosts = lookupvar('fromhosts') hostname = lookupvar('hostname') Puppet.notice("HUZZAH") Puppet.notice("#{fromhosts}") Puppet.notice("#{hostname}") if fromhosts.include?("#{hostname}") Puppet.notice("MATCHED") else Puppet.notice("NOMATCH") end end end ## manifest class ssh_keys { # User keys @ssh_userkeys { "storage": privkeyname => "id_rsa", fromhosts => ["log2","universe"], dotsshpath => "/home/storage/.ssh"; } define ssh_userkeys( $dotsshpath, $privkeyname, $type = "rsa", $fromhosts ){ $pubkey_contents = file("/etc/puppet/files/usersshkeys/${name}_${privkeyname}.pub") $privkey_contents = file("/etc/puppet/files/usersshkeys/${name}_${privkeyname}") $authkeysfile = "$dotsshpath/authorized_keys" # Public key ssh_authorized_key { "$name ($authkeysfile)": user => $name, ensure => "present", target => $authkeysfile, type => $type ? { rsa => "ssh-rsa", default => "ssh-dsa" }, key => chomp($pubkey_contents), require => File[$dotsshpath,$authkeysfile]; } # Private key $copypriv = currhost_containedin($fromhosts) if $copypriv == "true" { file { "privkey_${name}_${privkeyname}": owner => $name, group => $name, ensure => "file", path => "$dotsshpath/$privkeyname", mode => "0600", content => $privkey_contents; } } }
This paste will be private.
From the Design Piracy series on my blog: