试图定义全局类variables的木偶

我试图用puppet作为unix用户pipe理

以下是我创build的用于添加新用户的类:

class unix_accounts( $username, $forename, $name, $email, $uid) { user { $username: comment => '$forename $name', home => '/home/$username', shell => '/bin/bash', uid => $uid, groups => [$username, 'sudo'], } 

我想,基本上可以从$ name和$ forename中推导出电子邮件和用户名,以便在unix_accounts类中定义这些variables。 我试过这个:

 $username = $forename[0].chr.downcase+name.downcase $email = $forename.downcase+'.'+$name.downcase+'@localnet.lan' 

但是客户端的puppetdtesting在第一个点(。)出现以下消息:

 Error 400 on server: Syntax error at '.'; expected '}' at .... 

这与ruby没有任何关系,因为我之前用irb试过了,似乎只和puppet语法有关。 是否有可能在一个类中创build这些variables? 怎么做?

非常感谢

 $username = $forename[0].chr.downcase+name.downcase $email $forename.downcase+'.'+$name.downcase+'@localnet.lan' 

是什么让你觉得这将起作用? 这些都不是Puppet语言提供的function。

看看http://docs.puppetlabs.com/references/stable/function.html看看你可以直接在Puppet中使用string(不是很多)。 然后看看http://docs.puppetlabs.com/guides/templating.html看看如何使用ERB模板,这将解决您的问题。

此外,这不是你的问题,但它是一个问题:如果你想让你的string插入variables,那么你必须使用双引号,如下所示:

 user { $username: comment => "$forename $name", ...