2013-04-04 57 views
1

我正在尝试编写一个遍历数组来创建和维护应用程序用户的清单。 用户的列表被传递到清单从init.pp用以下方式:木偶:如果在自定义资源内陈述

$app_users = [ at1,et1,at2,et2 ] 

的users.pp清单然后读取阵列创建用户:

define appuser { 
    user { $name: 
    ensure   => 'present', 
    comment   => "Application User - $name", 
    gid    => 'app', 
    home    => "/apps/$app/$name", 
    shell   => '/usr/bin/bash', 
    } 
} 

appuser { $app_users: } 

此解决方案工作与我编写的另一个模块很好,但在这种情况下,主目录路径包含一个变量,取决于用户名。

添加以下如果资源内声明发出了一个错误:

if $name =~ /^(et|ep)/ { 
$app = "echos" 
notice('app is $app') 
} 

Syntax error at 'if'; expected '}' at .../users.pp:9 

我读的地方,如果资源里面的语句,你不能把一个...

在这种情况下,什么是我的选择?我遇到了一个编码块...

我们使用木偶大师版本2.7.19(Puppet Enterprise 2.7.0)。

回答

2

这听起来像它只是一个语法错误,你应该在定义中添加您的if语句,某事像

define appuser { 


    if $name =~ /^(et|ep)/ { 
     $app = "echos" 
     notice('app is $app') 
    } 

    user { $name: 
    ensure   => 'present', 
    comment   => "Application User - $name", 
    gid    => 'app', 
    home    => "/apps/$app/$name", 
    shell   => '/usr/bin/bash', 
    } 
} 
+0

谢谢!问题解决了 :) – miitak 2013-04-04 16:52:05

2

我宁愿case比,如果在这种情况下发言,例如,

define appuser { 
     user { $name: 
     ensure   => 'present', 
     comment   => "Application User - $name", 
     gid    => 'app', 
     home => $name ? { 
     '/^(et|ep)/' => "/apps/echos/$name", 
     default => "/apps/$app/$name",}, 
     shell   => '/usr/bin/bash', 
     } 
    }