我有一组二维配置变量:
$environments = [
{
'name' => 'foo',
'port' => '1234',
},
{
'name' => 'bar',
'port' => '4321',
},
]
是否可以迭代数组并使用内部数组中的变量。例如。我想为每个名字创建一个用户帐户。
# How to get each name?
user { $environment:
ensure => 'present'
}
答案 0 :(得分:0)
我从来没有真正使用木偶迭代。
但要从hash
创建多个资源(注意哈希而不是数组),您可以使用create_resources()
功能。
documentation有一个很好的例子。
hash
parameters
不能包含resource
不理解的port
。在您的示例中,user
无法使用int main(int argc, char **argv)
{
int i, j, nul = 0, mat[8][8], tmpi, tmpj, a=0, k=0, l=0;
label3:
for (i=0; i<8; i++){
for(j=0; j<8; j++){
mat[i][j] = 0;
}
}
mat[k][l] = 1;
int n=0;
label1:
while( n < 64 ){
if ( n== 0){
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( mat[i][j] == 1 ){
tmpi=i;
tmpj=j;
break;
}
}
}
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( j == tmpj && i != tmpi ){
mat[i][j] = 2;
}
if( i == tmpi && j != tmpj ){
mat[i][j] = 2;
}
if ( i + j == tmpi + tmpj && ( i != tmpi && j != tmpj) ){
mat[i][j] = 2;
}
if ( i - j == tmpi - tmpj && ( i != tmpi && j != tmpj) ){
mat[i][j] = 2;
}
}
}
n++;
goto label1;
}
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( mat[i][j] == 0){
mat[i][j] = 1;
tmpi = i;
tmpj = j;
goto label2;
}
}
}
label2:
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( j == tmpj && i != tmpi ){
mat[i][j] = 2;
}
if( i == tmpi && j != tmpj ){
mat[i][j] = 2;
}
if ( i + j == tmpi + tmpj && ( i != tmpi && j != tmpj) ){
mat[i][j] = 2;
}
if ( i - j == tmpi - tmpj && ( i != tmpi && j != tmpj) ){
mat[i][j] = 2;
}
}
}
n++;
}
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( mat[i][j] == 1){
a++;
}
}
}
if ( a!= 8 ){
k++;
goto label3;
}
for (i=0; i<8; i++){
for(j=0; j<8; j++){
if ( mat[i][j] == 2){
printf("%3d", nul);
}else printf("%3d", mat[i][j]);
}printf("\n");
}
system("pause");
return 0;
}
资源,因为它无法理解该参数。
希望无论如何这有点帮助。
答案 1 :(得分:0)
Puppet 4提供了built-in functions来迭代聚合值,并提供类似Ruby的新语法。当未来的解析器启用时,这些也可用于最新版本的Puppet 3。如果您使用这样的Puppet,您可以像这样解决问题:
each($environments) |$e| {
foo { $e['name']: port => $e['port'] }
}