错误:重复声明虚拟定义用户和组平等的名称

我需要用名称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是保留字。