我正在寻找一种方法来将 ifaces 从 macaddress 和接口 facter 中排除,以便使 puppet 在某些主机上运行得更快。据我所知,这些 fact 是内置的,我希望在不修补 facter 包源代码的情况下实现这一点,或者至少以干扰较少的方式实现这一点。
您能提出任何明确的解决方案吗?我使用的是安装了 facter 1.6.10-1 的 Debian wheezy。
提前致谢
答案1
我以前也遇到过同样的问题。解决方案是将 ifconfig(facter 用来获取有关接口的信息)替换为自定义包装器,该包装器会隐藏大多数接口。首先,您需要将原始 ifconfig 移出原始位置:
dpkg-divert --local --divert /sbin/ifconfig.orig --rename /sbin/ifconfig
然后,在 /sbin/ifconfig 中创建一个 shell 包装器,内容如下:
#!/bin/bash
OK=no
CUR=0
while [ $# -gt 0 ]; do
case "$1" in
-a|-v|-s)
OPTS[$CUR]="$1"
CUR=$((CUR+1))
;;
*)
OPTS[$CUR]="$1"
CUR=$((CUR+1))
OK=yes
;;
esac
shift || break
done
if [ $OK = yes ]; then
exec /sbin/ifconfig.orig "${OPTS[@]}"
else
for IFACE in lo eth0; do
/sbin/ifconfig.orig "${OPTS[@]}" $IFACE
done
fi
ifconfig -a
本质上,当您使用单个接口调用新的 ifconfig 时,它的行为与普通 ifconfig 相同。如果像示例一样调用它,它只会列出lo
和eth0
接口。脚本可以稍微改进一下,但您明白我的意思了。