2016-03-24 6 views
0

Puppetは、環境に関連付けられたhieraファイルに応じて異なる変数名を作成します。 Puppetに特定のネットワークインターフェイスに関連付けられたIPアドレスを使用させたいので、これを実行したいと思います。理想的には、ネットワークインターフェイスはhieraファイル内にあります。そうすれば、ip_address変数名をhieraファイルで定義されているネットワークインタフェースに連結することができます。Puppetはhieraを使用して変数名を作成します

::ipaddress_{$network_interface_from_hiera_file}

これは可能ですか?

今私は次のことがありますが、より良い実装があると思います。ネットワークインタフェースが変更された場合は、別のケースを追加する必要があります。

if $environment == 'production' { 
    $client_address = $::ipaddress_enp130s0f0 
} else { 
    $client_address = $::ipaddress_eth2 
} 

答えて

0

それはあなたが人形でeval後にしているようにあなたは、シェルやPerlの他の言語で持っているように、音、そして私の知る限り、1がありません。

おそらく私が気にするIPアドレスを常に返すカスタムファクトを使用します。もちろん、あなたはあなたの艦隊にカスタムファクトを出す方法の問題を解決する必要があります。 hiera.yamlで

common.yamlで
:hierarchy: 
    - %{::node_environment} 
    - common 

--- 
myclass::client_address: "%{::ipaddress_eth2}" 

production.yamlで:

別の解決策は、Hieraの階層的なルックアップを使用するかもしれません

--- 
myclass::client_address: "%{::ipaddress_enp130s0f0}" 

最後に、Hiera内から値を参照できることに注意してください。hereを参照してください。おそらくそれが役に立つかもしれません。

関連する問題