簡體   English   中英

Puppet:如果自定義資源中的statment

[英]Puppet: if statment inside a custom resource

我正在嘗試編寫一個遍歷數組的清單來創建和維護應用程序用戶。 用戶列表以下列方式從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語句會發出錯誤:

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',
  }
 }

我寧願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',
      }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM