我创建了一个模块来添加用户,如下所示:
user { 'test':
ensure => 'present',
comment => 'Test User',
home => '/home/test',
shell => '/bin/bash',
managehome => 'true',
gid => 'postgres',
groups => 'users',
password => '$1$PIp.c9J6$gdAyd76OhBk7n9asda80wm0',
require => [ Package['rubygem-ruby-shadow'], Class['postgres'] ],
}
它需要类postgres,因为我需要将其主要组分配给postgres,而rubygem-ruby-shadow依赖项用于密码设置。
我的问题是木偶不符合这些要求。 Puppet将始终在rubygem-ruby-shadow之前首先执行useradd模块,这会导致密码设置失败。我也尝试在与useradd相同的类中包含rubygem-ruby-shadow,但无济于事。
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-shadow课程:
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上)。
感谢。
答案 0 :(得分:1)
这很不幸。提供程序在代理初始化期间检测到ruby-shadow
不存在,并且在事务期间不会更新其功能。
这可能是Puppet的限制,可能会在更新的版本中修复(您使用的是什么?)
我确实尝试确保在任何地方提供ruby-shadow
以及Puppet本身,以避免这个问题。