Если у машины несколько IP-адресов, Chef иногда может вернуть тот IP-адрес, который мы не ожидаем.Чтобы найти требуемый IP-адрес, служба поддержки Chef предложила переопределить Ohai, и это сработало для нас.
Создайте атрибут для регулярного выражения, соответствующий ожидаемому IP-адресу:
default['ohai']['override']['ip_matcher'] = '/^10\.\d+\.\d+\.4\d+/'
Затем мы должны буквально переопределить Ohai, написав файл с именем Z, чтобы он сохранил IP-адрес, который нам нужен последний.
# dynamically grab the path name
ohai_path = ::File.join(Ohai.config[:plugin_path][0], '/windows')
template "#{ohai_path}/zeta.rb" do
# keep this template named zeta so it runs last.
source 'zeta.rb.erb'
variables(
ip_matcher: node['ohai']['override']['ip_matcher']
)
end
Файл шаблона выглядит следующим образом (и предоставлен поддержкой Chef):
Ohai.plugin(:Zeta) do
provides 'ipaddress'
depends 'ipaddress', 'network/interfaces'
collect_data do
network['interfaces'].each do | interf |
network['interfaces']["#{interf[0]}"]['addresses'].each do | ip |
if ip[0] =~ <%= @ip_matcher %>
ipaddress ip[0]
end
end
end
end
end
Надеюсь, это поможет!