Puppet 不支持 'require' 个模块

Puppet does not honor 'require' modules

我创建了一个模块来添加用户,如下所示:

user { 'test':
    ensure => 'present',
    comment => 'Test User',
    home => '/home/test',
    shell => '/bin/bash',
    managehome => 'true',
    gid => 'postgres',
    groups => 'users',
    password => '$PIp.c9J6$gdAyd76OhBk7n9asda80wm0',
    require => [ Package['rubygem-ruby-shadow'], Class['postgres'] ],
}

它需要 class postgres,因为我需要将其主要组分配给 postgres,并且 rubygem-ruby-shadow 依赖项用于密码设置。

我的问题是 puppet 不满足这些要求。 Puppet 总是会在 rubygem-ruby-shadow 之前先执行 useradd 模块,这会导致密码设置失败。我还尝试将 rubygem-ruby-shadow 包含在与 useradd 相同的 class 中,但无济于事。

running puppet agent -t时的输出:

linux-z14x:~ # puppet agent -t
info: Caching catalog for linux-z14x.playground.local
info: /User[test]: Provider useradd does not support features manages_passwords; not managing attribute password
info: Applying configuration version '1425978163'
notice: /Stage[main]/Users/Package[rubygem-ruby-shadow]/ensure: created
notice: /User[test]/ensure: created
notice: Finished catalog run in 78.19 seconds

运行第二次:

linux-z14x:~ # puppet agent -t
info: Caching catalog for linux-z14x.playground.local
info: Applying configuration version '1425978163'
notice: /Stage[main]/Users/User[test]/password: changed password
notice: Finished catalog run in 74.79 seconds

我的rubygem-ruby-阴影class:

package { 'rubygem-ruby-shadow':
        ensure => 'installed',
        require => Class['myrepo'],
        provider => 'zypper',
}

如何在 useradd 之前先将 rubygem-ruby-shadow 模块添加到 运行?

Puppet master 版本是 3.7.4-1(在 CentOS 上),Puppet 客户端是 2.6.12-0.10.1(在 SLES 11 SP2 上)。

谢谢。

这很不幸。提供者在代理初始化期间检测到 ruby-shadow 缺失,并且在事务期间不更新其功能。

这可能是 Puppet 的限制,可能会在较新的版本中修复(您使用的是什么?)

我确实尝试并确保随处提供 ruby-shadow 以及 Puppet 本身,以避免这个问题。