我想使用现有的puppet模块在服务器上配置多组内容,最简单的例子是:
file { "/var/www/MYVARIABLEHERE":
ensure => "directory",
}
mysql::db { MYVARIABLEHERE:
user => MYVARIABLEHERE,
password => MYVARIABLEHERE,
host => 'localhost',
grant => ['all'],
}
有没有办法将它抽象出来,以便我可以说出一组预先定义的选项,然后将它们传递给现有的puppet模块,这样我就不会得到一个长达数千行的清单文件?
根据下面的答案我已经设置:
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 '}'
答案 0 :(得分: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