使用 Puppet 更改用户密码

使用 Puppet 更改用户密码

我有这个类,运行时应该允许用户更改密码。但是,当我用 运行它时puppet agent --test,它会在第 9 行(设置密码的地方)给出语法错误,但我不知道那一行有什么问题。这是我目前的代码。“$6”是因为它是 SHA-512 散列的,而不是 MD5 的 $1,这是默认值。

class pwdchange ($newpwd = '', $targetuser = $::id) {
   $hash  = inline_template("<%
     require 'digest'
     Digest::SHA1.hexdigest(newpwd)
   %>")
   $encryptedpwd = '$6'+template($hash)
   user {"$targetuser":
     ensure   => present
     password => $encryptedpwd
  }
}

谁能告诉我我做错了什么?

答案1

您需要在资源定义中用逗号终止行,同时建议引用变量:

class pwdchange ($newpwd = '', $targetuser = $::id) {
   $hash  = inline_template("<%
     require 'digest'
     Digest::SHA1.hexdigest(newpwd)
   %>")
   $encryptedpwd = '$6'+template($hash)
   user {"$targetuser":
     ensure   => present,
     password => "$encryptedpwd",
  }
}

答案2

如果您已经在使用inline_template,则无需使用该template函数。另外,使用反斜杠来转义文字美元符号。

$hash = inline_template(...)
$encryptedpwd = "\$6${hash}"
user {$targetuser:
    ensure  => present,
    password => $encryptedpwd,
}

构建复杂字符串的另一种可能性是将前缀放在不同的变量中。使用单引号可将美元符号保留为文字字符:

$hash = inline_template(...)
$prefix = '$6'
$encryptedpwd = "${prefix}${hash}"

相关内容