0

既存の puppet モジュールを使用して、サーバー上で複数のセットをプロビジョニングしたいのですが、最も簡単な例は次のとおりです。

file { "/var/www/MYVARIABLEHERE":
    ensure => "directory",
}
mysql::db { MYVARIABLEHERE:
    user     => MYVARIABLEHERE,
    password => MYVARIABLEHERE,
    host     => 'localhost',
    grant    => ['all'],
}

これを抽象化して、事前に定義されたオプションの配列を言い、それらを既存のパペットモジュールに渡して、数千行の長さのマニフェストファイルにならないようにする方法はありますか?

以下の答えに従って、私はセットアップしました:

define mySites {
  mysql::db { $name:
    user     => $name,
    password => $name,
    host     => 'localhost',
    grant    => ['all'],
  }

  file { "/var/www/${name}.drupal.dev":
    ensure => "directory",
  }
}

次に、次のように呼び出します。

mySites {"site": $name => "test", }

次のエラーが表示されます。

Could not parse for environment production: Syntax error at 'name'; expected '}'
4

1 に答える 1

1

タイプを使用してdefine、できるだけ単純化できます。

define mydef( $usern, $passn) {
  file { "/var/www/$usern":
     ensure => "directory",
  }
  mysql::db { $usern :
      user => $usern,
      password => $passn,
      host => "localhost",
      grant => ['all'],
  }
}

# You have to call the define type for each cases.
mydef{"u1": usern => "john", password => "pass", }

# It might be possible to provide multiple arrays to a define
# type if you use puppet's future parser
于 2013-08-30T18:40:51.583 に答える