[英]Puppet create variable names using 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
}
聽起來您正在使用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中查找值,請參見此處 。 可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.