1
Есть ли способ использовать переменную, определенную в каком-либо манифестах с помощью hiera?Puppet - Как использовать переменные, определенные в манифесте с помощью hiera
Это, как я попробовал:
manifest.pp
if $::ipaddress_bond0 {
$primary_interface = 'bond0'
notify{"$primary_interface":}
}
else {
$primary_interface = 'eth0'
notify{"$primary_interface":}
}
hiera.yaml
some_config:
server:
foo:
bar: "%{::primary_interface}"
Thx для быстрого ответа и указания на то, что это кажется плохим решением. Причина, по которой я пытаюсь это сделать, - обеспечить, чтобы я всегда получал ipadress из 'eth0' или' bond0' и не должен «надеяться», что значение в '$ :: ipaddress' верное. У вас есть опыт, если '$ :: ipaddress' является безопасным решением для получения IP-адреса' eth0' или 'bond0' вместо случайного ip-адреса, например. 'eth1' иногда? Я не могу использовать '$ :: ipaddress_eth0' или' $ :: ipaddress_bond0', так как это слишком статично для моего случая. – mat1010
В соответствии с описанием: https://docs.puppetlabs.com/facter/2.4/core_facts.html#ipaddress _ "В Unixes выполняется ifconfig и возвращает первый подсети, не содержащий 127.0.0.0/8, который он находит." _ – kkamilpl
Это то, что я также читал, но дело в том, что это может произойти - из-за, например, странные правила udev, что 'eth1' приходит перед' eth0', поскольку, кажется, факзер просто запускает 'Facter :: Util :: IP.exec_ifconfig ([" 2>/dev/null "]' и берет первый не 127.x адрес 'если совпадают, а не /^127\ ./.match(match[1]) ip = совпадение [1] break end' Поскольку в документации рекомендуется лучше использовать пользовательские факты, я создал факт с вышеуказанной логикой, которую я сначала попытался использовать в манифесте. Thx снова для указания меня в правильном направлении. – mat1010