2017-08-02 127 views
3

如何從ERB模板下面的代碼移植到EPP:鍵值哈希EPP模板

<%- if @mime_types -%> 

# Custom additional mime types 
<%- @mime_types.sort_by {|key,value| key}.each do |key,value| -%> 
<%= key %> <%= value %>; 
<%- end -%> 
<%- end -%> 

或如何與EPP模板鍵值哈希工作。 例如下一個代碼返回錯誤「無效的EPP:語法錯誤在'|'

# mime.types.epp 
<%- | Hash[String, String] $nginx::config::mime_types | -%> 
<% include stdlib -%> 
<% $nginx::config::mime_types.keys.sort.each |$key| { -%> 
    <%= $key %> <%= $nginx::config::mime_types[$key] %> 
<% } -%> 

體現:

# manifests/config.pp 
class nginx::config { 
    $mimetypes=lookup('nginx::mimetypes') 
    file { "${nginx::params::conf_dir}/mime.types": 
    ensure => file, 
    content => epp("${module_name}/mime.types.epp"), 
    } 

hiera:

nginx::mimetypes: 
    video/ogg: 'ogv' 

木偶版本:

#puppet --version 
5.0.1 

非常感謝。

+0

目前還不清楚問題的哪一方面會給你帶來麻煩,所以我只是要在那裏拋出一些東西。如果你使用的是EPP,那麼我認爲你在Puppet 4或者可能是5,或者至少在Puppet 3.7上啓用了未來的分析器。在這種情況下,您可以訪問Puppet的['each()'](https://docs.puppet.com/puppet/5.0/function.html#each)函數,該函數在Puppet語言/ EPP中以各種類型Ruby/ERB中的'each'方法。 –

+0

這個問題與我已經解答的問題幾乎相同https://stackoverflow.com/questions/45387586/using-puppet-hash-for-epp-templates?rq=1 –

+0

@AlexHarvey yeap但我有一些使用問題這個建築。例如代碼'<% - |哈希[字符串,字符串] $ sudo :: def_users | - %> <%include stdlib - %> <%$ sudo :: def_users.keys.sort.each | $ key | { - %> 默認值:<%= $key %><%= $ sudo :: def_users [$ key]%> <% } -%>'return next error:「無效的EPP:'|'處的語法錯誤」 – beliy

回答

0

1)不能夠使用模型$classname::subclassname::lookup_variable在哈希

2 EPP模板)只需要在啓動EPP模板使用<%- | Hash[String, String] $mime_types | -%><% include stdlib -%>

正確的文件:

# manifests/config.pp 
class nginx::config { 
    $mimetypes=lookup('nginx::mimetypes') 
    file { "${nginx::params::conf_dir}/mime.types": 
    ensure => file, 
    content => epp("${module_name}/mime.types.epp", { mimetypes => $mimetypes }), 
} 

# mime.types.epp 
<%- | Hash[String, String] $mimetypes | -%> # 1 line 
<% include stdlib -%> # 2 line 
# some code... 
<% $mimetypes.keys.sort.each |$key| { -%> 
    <%= $key %> <%= $mimetypes[$key] %> 
<% } -%>