我正在尝试在 Puppet 中设置一些虚拟用户。基本用户工作正常,但出于某种原因,当我尝试将“组”添加到用户定义时,运行失败。
这是基本的虚拟用户配置...
class users::virtual {
define localuser ($uid,$gid) {
user { $title:
ensure => "present",
uid => $uid,
gid => $gid,
shell => "/bin/bash",
home => "/home/$title",
comment => $realname,
managehome => true,
}
}
}
这里有一个用户被叫出来了……
class my::users {
include users::virtual
@users::virtual::localuser { "jdehnert":
uid => "504",
gid => "users",
groups => ["wheel", "rvm"],
require => Group["rvm"],
}
}
init.pp 是……
class people {
include my::users
realize (
Users::Virtual::Localuser["jdehnert"],
)
}
当我在客户端上运行测试--noop时,我在客户端上收到此消息...
# puppetd --test --noop
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter groups at /etc/puppet/manifests/users/users.pp:7 on node dev-web-1.
还有服务器上的这个……
Aug 23 04:29:38 centos63 puppet-master[21713]: Invalid parameter groups at /etc/puppet/manifests/users/users.pp:7 on node dev-web-1
如果我把“groups”行拉出来,这个配置就可以正常工作。
我还发现,如果我只创建一个简单的用户资源,我就可以很好地传递“groups”参数。那么,为什么它不适用于虚拟用户呢?
谢谢,
詹姆斯·“泽克”·德纳特
[电子邮件保护]
答案1
您误解了这里的事情:
@users::virtual::localuser { "jdehnert":
uid => "504",
gid => "users",
groups => ["wheel", "rvm"],
require => Group["rvm"],
}
上面声明了一个localuser
,其定义如下:
define localuser ($uid,$gid) {
这意味着仅有的它接收的参数是uid
和gid
元参数(例如require
)。由于groups
不是元参数,显然也不是uid
或gid
,因此它是无效的。