Puppet:如果在自定义资源中放置
我正在尝试编写一个清单,该清单通过一个数组进行迭代,以创建和维护应用程序用户。 用户列表以以下方式从init.pp传递到清单:Puppet:如果在自定义资源中放置,puppet,Puppet,我正在尝试编写一个清单,该清单通过一个数组进行迭代,以创建和维护应用程序用户。 用户列表以以下方式从init.pp传递到清单: $app_users = [ at1,et1,at2,et2 ] 然后,users.pp清单读取数组以创建用户: define appuser { user { $name: ensure => 'present', comment => "Application User - $name
$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语句会导致错误:
if $name =~ /^(et|ep)/ {
$app = "echos"
notice('app is $app')
}
Syntax error at 'if'; expected '}' at .../users.pp:9
我在某个地方读到,您不能在资源中放置if语句
在这种情况下,我的选择是什么?我遇到一个编码块
我们正在使用puppet master版本2.7.19 puppet Enterprise 2.7.0。听起来这只是一个语法错误,您应该在定义中添加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',
}
}
听起来这只是一个语法错误,你应该在定义中添加你的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',
}
}
在这种情况下,我更喜欢case而不是if语句,例如
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',
}
}
在这种情况下,我更喜欢case而不是if语句,例如
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',
}
}