puppet 尝试定义全局类变量

puppet 尝试定义全局类变量

我正在尝试使用 puppet 作为 unix 用户管理。

这是我为添加新用户创建的类:

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 类中定义这些变量。我尝试过以下方法:

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

但是客户端的 puppetd ​​测试在第一个点(.)处失败,并显示以下消息:

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

这与 ruby​​ 无关,因为我之前尝试过 irb,它似乎只与 puppet 语法有关。是否有可能在类中创建这些变量?怎么做?

非常感谢

答案1

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

是什么让你认为这会起作用?这些都不是 Puppet 语言提供的功能。

看看功能文档看看你能在 Puppet 中直接用字符串做什么(不多)。然后看看模板文档了解如何使用 ERB 模板来解决您的问题。

另外,这不是你的问题,但它是A问题:如果您希望字符串插入变量,那么您必须使用双引号,如下所示:

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

相关内容