Linux

puppet 試圖定義全域類變數

  • September 16, 2021

我正在嘗試將 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 and $ 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語法有關。無論如何都可以在類中創建這些變數嗎?怎麼做?

非常感謝

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

是什麼讓你認為這會奏效?這些都不是 Puppet 語言提供的功能。

查看函式文件以了解您可以直接在 Puppet 中對字元串執行哪些操作(不多)。然後查看模板文件以了解如何使用 ERB 模板,這將解決您的問題。

此外,這不是您的問題,但這是一個問題:如果您希望字元串插入變數,那麼您必須使用雙引號,如下所示:

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

引用自:https://serverfault.com/questions/424543