在Puppet中,我可以为数组中的每个元素实现定义的类型吗?

时间:2013-08-02 20:46:23

标签: arrays puppet

删除我的变量名称和一切无关的可读性后,我的代码归结为此。我已经设置了一个自定义事实,它返回我需要为其设置一些配置文件的用户数组。我正在尝试使用已定义的资源类型并使用数组参数实现它,以便为每个用户执行配置,因为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。换句话说,它只实现了一次定义的类型,它正在尝试为名称为连接数组的用户这样做。

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

2 个答案:

答案 0 :(得分:1)

这应该有用......

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

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

createuser{$allusers:}

答案 1 :(得分:0)

$ :: userlist是一个字符串。

这是一个事实,事实就是字符串。

在迭代它之前,你需要把它变成一个数组。

如果$ :: userlist =“user1,user2,user3”

$a_userlist=split($::userlist,',')
modulename::setconfigs{$a_userlist: }