2016-03-24 18 views
0

Puppet'in çevreyle ilişkili hiera dosyasına bağlı olarak farklı bir değişken adı oluşturmasını istiyorum. Bunu yapmak istiyorum çünkü Kukla'nın belirli bir ağ arabirimiyle ilişkili ip adresini kullanmasını istiyorum. İdeal olarak, ağ arayüzü hiera dosyasında olacaktır. Bu şekilde, ip_address değişken adını, hiera dosyasında tanımlanan ağ arabirimiyle birleştirebilirsiniz;Kukla hiera kullanarak değişken isimleri oluştur

::ipaddress_{$network_interface_from_hiera_file}

bu mümkün mü?

Şu anda aşağıdakiler var, ama bence daha iyi bir uygulama var. Ağ arayüzleri değişirse başka bir durum eklemek zorunda kalırdım.

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

cevap

0

Size Kukla bir eval sonra konum gibi kabuk ve Perl Diğer dillerde var gibi, sesler ve sıra bildiğim kadarıyla, bir tane değil.

Muhtemelen önemsediğim IP adresini her zaman döndüren özel bir gerçek kullanırım. Tabii ki, o zaman özel gerçekleri filonuza nasıl alacağınız sorununu çözmeniz gerekiyor. hiera.yaml olarak

:

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

:

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

production.yaml olarak:

Başka bir çözüm Hiera hiyerarşik arama kullanmak olabilir

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

Son olarak, Hiera içinden değerler aradığınızı unutmayın, bkz. here. Muhtemelen bu yararlı olabilir.