我试图定义一个静态的媒体服务器,使用一个普通的网站布局(例如与目录etc/ , log/ , html/等),以及一个nginxconfiguration将被纳入到一个主机的nginxconfiguration。 该网站的nginxconfiguration需要使用由声明的layouts::website资源定义的文档根目录。
所以,我想要做的是这样的:
class sites::static ($sites_dir) { $domain = "static.example.com" layouts::website {$domain: base_dir => $sites_dir, name => $domain, } nginx::siteconfig {$domain: domain => $domain, doc_root => $layouts::website[$domain]::doc_root, } }
这可以通过声明来使用:
class {'sites::static': sites_dir => "/opt/sites"}
但是,上面的失败,因为$layouts::website[$domain]::doc_root部分是无效的。 我在这里尝试了各种各样的select,失败了。
这可能吗? 如果不是的话,你会如何build议我完成使用基本布局的目标,然后需要使用各种位来填充基本布局中的内容?
据我所知,你不能在定义的资源内获取variables。
我会通过重新sorting资源types定义并将nginx::siteconfig子句放在layouts::website定义中来解决这个问题。 (如果layouts::website每一个使用也都应该有一个nginx::siteconfig ,那么把它们嵌套到另一个中是干的好办法。)如果你需要使用layouts::website ,不是也有一个nginx定义,你必须添加一个参数到layouts::website ,就像$nginx = true 。
另外,下面的代码位:
layouts::website {$domain: name => $domain, } nginx::siteconfig {$domain: domain => $domain, }
闻起来像不必要的重复给我。 网站名称和nginx域名似乎是完美的候选人是名字,所以你可以在大多数情况下离开参数。