Puppet 简化傀儡舱单
我想使用现有的puppet模块在服务器上提供多组内容最简单的示例是:Puppet 简化傀儡舱单,puppet,Puppet,我想使用现有的puppet模块在服务器上提供多组内容最简单的示例是: file { "/var/www/MYVARIABLEHERE": ensure => "directory", } mysql::db { MYVARIABLEHERE: user => MYVARIABLEHERE, password => MYVARIABLEHERE, host => 'localhost', grant =>
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 '}'
您可以使用
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
您不能这样调用
$name
,它是一个伪全局变量。。。为变量使用不同的名称。我用$drupal替换了$name变量,但仍然得到相同的错误。我的全部剧本在这里--我真的很感谢你到目前为止的帮助。我的错。傻。drupal的前面不应该有美元符号$
。它应该写在mySites{“site”:drupal=>“test”,}。我已经编辑了我的答案…使用你的例子,我知道得到“无效参数密码”,我用vagrant做这些会有什么不同吗?我的木偶版本是2.7.19。很抱歉让你很痛苦!我不确定流浪汉,我从来没有用过它。不知道这里有什么建议。可能是您可以将整个错误发布在pastebin或其他内容中…删除$
前面的$name
。。。我仍然建议变量使用不同的名称,而不是name
。。。。