![Facter(2.4.4)将 ipaddress 设置为 docker0 而不是以太网接口(CentOS7)](https://linux22.com/image/669330/Facter%EF%BC%882.4.4%EF%BC%89%E5%B0%86%20ipaddress%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%20docker0%20%E8%80%8C%E4%B8%8D%E6%98%AF%E4%BB%A5%E5%A4%AA%E7%BD%91%E6%8E%A5%E5%8F%A3%EF%BC%88CentOS7%EF%BC%89.png)
有办法解决这个问题吗?我可以更改接口顺序吗?我有很多使用 $::ipaddress 的 puppet 模块,在 CentOS 6 上使用 docker 时可以正常工作,但在 7 上不行
interfaces => docker0,eno16780032,lo
ipaddress => 172.17.42.1
ipaddress_docker0 => 172.17.42.1
ipaddress_eno16780032 => 10.251.17.170
ipaddress_lo => 127.0.0.1
答案1
这是默认 ipaddress 的问题,事实上,它有点愚蠢。我们使用一个基于默认路由的自定义 ipaddress,称为 default_if(适用于 Debian,可能需要适应 CentOS):
Facter.add("default_if") do
confine :kernel => :linux
setcode do
return nil unless FileTest.exists?("/sbin/ip")
output = %x{/sbin/ip route list match 0.0.0.0}.split("\n")[0]
output.sub(/.*\s*dev\s+([^\s]+)\s*.*/, '\1')
end
end