1

在删除我的变量名和所有与可读性无关的内容之后,我的代码归结为这一点。我已经设置了一个自定义事实,它返回我需要为其设置一些配置文件的用户数组。我正在尝试使用已定义的资源类型并使用数组参数来实现它来为每个用户进行配置,因为 Puppet 缺少基本for循环,因此我将代码简化为:

define modulename::pushconfigs{
  user {"$name":
    ensure    => present
    parameter => value
    parameter => value
    parameter => value
  }
}

modulename::setconfigs{$::userlist: }
# $::userlist is an array of users, in the form [user1 user2 user3...]

对于几个参数。但是,当我尝试运行它时,它会显示couldn't[do configs] for user user1 user2 user3。换句话说,它只实现定义的类型一次,并且它试图为名称为串联数组的用户这样做。

我怎样才能实现数组中每个定义的类型?

4

2 回答 2

1

这应该工作...

define createuser{
    user { $name :
      ensure => present,
      group => "gp",
      home => "/home/$name",
      shell => "/bin/bash",
    }
}

$allusers = [ "user1", "user2", "user3", "user4" ]

createuser{$allusers:}
于 2013-08-03T02:37:30.230 回答
0

$::userlist 是一个字符串。

这是事实,事实是字符串。

您需要先将其转换为数组,然后才能对其进行迭代。

如果 $::userlist = "user1,user2,user3"

$a_userlist=split($::userlist,',')
modulename::setconfigs{$a_userlist: }
于 2013-08-03T19:54:05.737 回答