Puppet使用hiera创建变量名

时间:2016-03-24 23:39:52

标签: puppet hiera

我希望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
} 

1 个答案:

答案 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。可能这可能会有所帮助。