gpt4 book ai didi

ERB 模板未从 hieradata 获取变量

转载 作者:行者123 更新时间:2023-12-03 03:39:49 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com