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