我如何让puppet使用本地密码(对主密码)?

我们这样定义用户:

user { 'belmin': ensure => present, uid => 308, comment => 'Belmin Fernandez', managehome => true, password => '$6$NrtZpXEauUqjdRh0$vE9oJwbNTSWVCGrlDe4KHXFB0KXY7hszSas3v0DZvhUej4SIb/WLfaCy.lmSU7Hh8AAvAbPuDRai2p1X9mDcM0', } 

我想定义一个types,它将在puppet master的本地/etc/shadow查找,如果用户在那里,则使用该密码散列。 就像是:

 define our_user ($user = $title, $uid, $fullname, $default_hash) { $shadow_hash = get_hash_from_local_shadown_somehow if $shadow_hash == '' { $shadow_hash = $default_hash } user { $user: ensure => present, uid => $uid, comment => $fullname, managehome => true, password => $shadow_hash, } } 

在这种情况下, get_hash_from_local_shadown_somehow是什么? 我在puppet看到这个文件的function ,但是不确定如何利用这个来解决这个问题,因为我需要更多的文本处理。

注:我知道集中authentication将是最明智的途径,但目前这不是一个直接的select。

find一种方法来通过Puppet的论坛使用生成函数来做到这一点:

你可以使用generate()函数。

你基本上会创build一个脚本来执行你需要的任何处理,然后$ shadow_hash = generate('/ path / to / script')。

我写了一个简单的bash脚本来检索哈希:

 #!/bin/bash SHADOW_FILE='/etc/shadow' awk -F: "\$1 == \"$@\"" ${SHADOW_FILE} | awk -F: '{print $2}' || echo '' 

generate函数如下所示:

 $shadow_hash = generate('/bin/bash','/usr/local/sbin/extract_shadow_hash', $user) 

希望这可以帮助别人。 看起来像一个function,可以在一堆用例中有用。