ERB 模板未从 hieradata 获取变量

标签 erb puppet

我有一个 puppet 基础设施,并且创建了一个新模块,该模块引用 hieradata yaml 文件中存在的变量,这些变量在 list 部分中都运行良好。但是,当我在 erb 模板中引用它们时,变量在 puppetrun 之后不显示任何内容。文件在那里,只是没有变量..

初始化.pp

class cms_nxlog ($msi_file) {
    anchor { 'cms_nxlog::begin': }
->
file { "C:/CMS/${cms_nxlog::msi_file}":
    ensure      =>  'file',
    source      =>  "puppet:///modules/cms_nxlog/${cms_nxlog::msi_file}",
    owner       => 'Administrators',
    group       => 'Users',
    mode        => '0770'

}
->
package { 'NXLOG-CE':
    ensure      =>  installed ,
    source      =>  "C:\\CMS\\${cms_nxlog::msi_file}",
}
->
file { "C:/Program Files (x86)/nxlog/conf/nxlog.conf":
    ensure      => 'file',
    content      => template('cms_nxlog/nxlog.conf.erb'),
    owner       => 'Administrators',
    group       => 'Users',
    mode        => '0770',
    notify      => Service['nxlog'],
}
->
service { 'nxlog' :
    ensure      =>  'running',
    require     => Package['NXLOG-CE']
}
->
    anchor { 'cms_nxlog::end': }
}

erb 模板的相关部分:

<Output out>
Module om_udp
   Host <%= scope.lookupvar('cms::log_server') %>
   Port <%= scope.lookupvar('cms_nxlog::port') %>
</Output>

yaml 的相关部分

cms_nxlog::msi_file:               nxlog-ce-2.8.1248.msi
cms_nxlog::port:                   514
cms::log_server:              192.168.1.50

整个东西安装得很好,只是在复制 erb 时,它似乎没有填写scope.lookupvar 的内容,所以我最终得到了

<Output out>
Module om_udp
   Host 
   Port 
</Output>

正如我之前所说,变量似乎在 list 中工作正常,但在模板中却不行。我已将此与类似的模块进行了比较,但该模块似乎无济于事。

谢谢

最佳答案

您需要调用scope.function_hiera,而不是scope.lookupvar:

<Output out>
Moudule om_udp
    Host <%= scope.function_hiera(['cms::log_server']) %>
    Port <%= scope.function_hiera(['cms_nxlog::port']) %>
</Output>

请注意,function_hiera 采用数组 作为参数,而不是字符串

希望这有帮助!

关于ERB 模板未从 hieradata 获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27296607/

相关文章:

html - 如何更改表单 text_area 的背景颜色?

linux - 将哈希传递给 puppet/erb 中定义的类型

javascript - Ruby on Rails : using javascript variable in <%= %> tags in Html. erb

linux - 错误:无法应用目录:nil:NilClass的未定义方法“祖先”

ruby-on-rails - div 标签中的 Html5 数据属性 (Rails)

ruby-on-rails - 如何验证ERB或捕获ERB语法错误

puppet - 如何将 ENV 参数传递给 puppet 应用运行?

Puppet splay 和 splaylimit 解释了吗?

assertion - 在 Puppet 中是否有可能 "assert"?

puppet - 如何将部署自动化工具集成到 Puppet 中?