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 ステートメントを追加すると、エラーが発生します。

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

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

リソース内にifステートメントを配置できないことをどこかで読みました...

その場合、私の選択肢は何ですか?コーディングブロックが発生しています...

puppet マスター バージョン 2.7.19 (Puppet Enterprise 2.7.0) を使用しています。

4

2 に答える 2

2

この場合、if ステートメントよりも好むと思い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',
      }
   }
于 2013-04-04T17:00:13.437 に答える