我希望Puppet根据与环境关联的hiera文件创建不同的变量名称。我想这样做是因为我希望Puppet使用与特定网络接口相关联的IP地址。理想情况下,网络接口将位于hiera文件中。这样你就可以将ip_address变量名称与hiera文件中定义的网络接口连接起来,这看起来像。
::ipaddress_{$network_interface_from_hiera_file}
这可能吗?
现在我有以下内容,但我认为有更好的实施方式。如果网络接口发生变化,我将不得不添加另一个案例。
if $environment == 'production' {
$client_address = $::ipaddress_enp130s0f0
} else {
$client_address = $::ipaddress_eth2
}
答案 0 :(得分:0)
听起来你是在Puppet中eval
之后,就像你有shell和Perl其他语言一样,据我所知,没有一个。
我可能会使用一个自定义的事实,它始终返回我关心的IP地址。当然,那么你需要解决如何将自定义事实传递给你的车队的问题。
另一种解决方案可能是使用Hiera的分层查找:
在hiera.yaml:
:hierarchy:
- %{::node_environment}
- common
在common.yaml:
---
myclass::client_address: "%{::ipaddress_eth2}"
在production.yaml:
---
myclass::client_address: "%{::ipaddress_enp130s0f0}"
最后,请注意您可以在Hiera中查找值,请参阅here。可能这可能会有所帮助。