我正在尝试使用 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",
...