【发布时间】:2019-01-07 19:02:57
【问题描述】:
网站.pp
class httpd_conf_files ($repos) {
ensure_packages(['httpd'], {'ensure' => 'present'})
$repos.each |String $repo| {
file {"/etc/httpd/conf.d/${repo}_repo1.conf":
ensure => file,
mode => '0644',
content => template('deploy/repos.erb'),
}
}
}
nodes.pp
node 'repo-web-c010' {
class { httpd_conf_files:
repos => ['centos','ubuntu'],
}
}
但是,centos_repo1.conf 和 ubuntu_repo1.conf 两个文件的内容相同。
repos.erb
<% @repos.each do |rep|
if rep == "centos"
$x = "/opt/repos/yum/"+rep
$_repo = rep
else
$x = "/opt/repos/"+rep
$_repo = rep
end
end -%>
Alias /<%=$_repo%> <%=$x%>
DocumentRoot <%=$x%>
IndexOptions NameWidth=* +SuppressDescription
<Directory <%=$x%>>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog logs/<%=$_repo%>_repo1_error.log
LogLevel warn
CustomLog logs/<%=$_repo%>_repo1_access.log combined
谁能告诉我怎么了?
【问题讨论】:
-
我不熟悉您的模板是如何被解析的,但是
@repos.each块是否有可能在所有 repos 上运行,最后分配的值,解析模板?如果你颠倒你的 :repos 在notes.pp中的顺序,那么这两个文件都有 centos 信息吗?您是否可以访问包含当前 $repo 的变量? HTH