我需要用名称user1和组user1来创build一个用户。 我定义了一个虚拟资源来创build它。 在class1中创build用户:
include '::class1::virtual_accounts' realize(class::User['user1'])
在class2里面,创build组:
include '::class1::virtual_accounts' realize(class::Group['user1'])
在virtual_accounts里面:
class class1::virtual_accounts { @class::group { 'user1': } @class::user { 'user1': }
当执行出现错误:
Error: Duplicate declaration: Group[user1] is already declared in file /root/puppet/class/manifests/group.pp:23; cannot redeclare at /root/puppet/class/manifests/user.pp:95 on node arqopasr21.lacaixa.es
在user.pp&group.pp里面我定义了创build用户和组。 这可能是错误已经生成,因为虚拟资源有相同的名称(user1)谢谢
是的,资源的声明必须是唯一的。 如果您使用虚拟资源,只需声明一次:
@user { 'name': ... }
User['name']资源不得有其他虚拟或非虚拟的声明。 您可以根据需要随时实现或收集资源。
User<| |> User<| title == 'name' |> realize(User['name'])
作为一般的说法,避免命名模块类,因为class是保留字。