Facter配置文件facter.conf完全指南ttls缓存与blocklist全局设置一次配好【免费下载链接】facterCollect and display system facts项目地址: https://gitcode.com/gh_mirrors/fa/facterFacter 是一款用于收集和展示系统信息facts的开源工具而facter.conf就是它的核心配置文件通过facts.ttls缓存与facts.blocklist拦截两项全局设置你可以让 Facter 在大规模主机上跑得更快、输出更干净一次配好长期生效。facter.conf 在哪里默认查找路径Facter 启动时按平台自动定位配置文件解析逻辑见lib/facter/framework/config/config_reader.rb平台默认路径Linux/etc/puppetlabs/facter/facter.confWindowsC:\ProgramData\PuppetLabs\facter\etc\facter.conf 两个实用点配置文件采用HOCON语法写法类似 JSON但更简洁、支持注释。任意时刻可用--config或-c指定其他路径例如facter -c ./facter.conf uptime方便测试。若文件读取失败如语法错误Facter 不会崩溃而是打印一条警告并按空配置继续运行。facter.conf 支持哪些配置项一份 facter.conf 最多包含四个区块各管各的事区块作用可用键facts全局拦截与缓存blocklist、ttlsfact-groups自定义事实分组组名 事实名数组global全局行为开关no-ruby、no-custom-facts、custom-dir、no-external-facts、external-dir、show-legacy、sequential、force-dot-resolutioncli仅影响命令行运行时debug、trace、verbose、log-level内置的默认分组kernel、memory、networking、uptime、ssh等定义在lib/facter/config.rb的FACT_GROUPS常量中分组名可直接用于 blocklist 与 ttls。blocklist 拦截设置按组或按名屏蔽 factsblocklist是一个数组可以填分组名也可以填事实名支持正则前缀匹配。命中拦截的事实不会被解析、也不会输出对 SSH 密钥这类敏感信息尤其有用facts : { blocklist : [ ssh, memory ] }三个实用技巧填组名自动展开写ssh会拦截sshdsakey、sshrsakey、sshfp_rsa等整组事实分组展开逻辑见lib/facter/framework/config/fact_groups.rb。legacy是特殊组写入legacy可一次性屏蔽所有旧版遗留事实只保留核心事实结构。命令行可一键关闭facter --no-block会忽略配置中的拦截规则便于排障时对比输出。不知道有哪些组名可用直接运行facter --list-block-groups即可列出全部可拦截的组。ttls 缓存设置让慢 facts 只跑一次某些事实如uptime、ec2_metadata、system profiler解析代价高ttls可指定它们在缓存中的存活时长Time To Live——到期前重复查询直接读缓存facts : { ttls : [ { uptime: 30 days }, { memory: 1 hour } ] }时间单位支持解析规则同样在fact_groups.rb单位示例含义d/days30 days天h/hours12 hours小时m/minutes15 minutes分钟s/seconds30 seconds秒ms/milliseconds500 ms毫秒省略单位时按毫秒处理us/ns200 us微秒 / 纳秒匹配与生效规则子事实优先os.macosx的 TTL 优先于更宽泛的os组避免缓存被父组“稀释”。多组取最长一个事实同时命中多个组时取其中最大的 TTL。缓存写在用户缓存目录如~/.cache/facterroot 用户在/var/cache/facter用facter --no-cache可跳过缓存的读取与刷新。fact-groups 自定义分组给 ttls 打组合拳fact-groups让你把任意事实聚成自定义组再把这个组名写进ttls或blocklist中一次命中多个事实fact-groups : { cloud-creds : [ ec2_metadata, ec2_userdata, gce ] } facts : { ttls : [ { cloud-creds: 1 hour } ], blocklist : [ ssh ] }自定义组会与内置组合并自定义优先因此facter --list-cache-groups中也能看到它们。global 与 cli 区块行为开关一次写全global控制 Facter 的通用行为无论谁调用都生效cli仅在命令行运行时生效适合统一团队的输出风格global : { show-legacy : true, no-ruby : false } cli : { debug : true, log-level : trace }常用组合举例show-legacy: true让全量查询同时输出旧版扁平事实方便与 Facter 3 时代的脚本平滑过渡debug: true则在 CLI 下打印调试日志。验证与排错常用配套命令配好后建议按下面的顺序自查一遍facter --list-block-groups—— 确认可用的拦截分组名拼写正确。facter --list-cache-groups—— 确认自定义分组已生效。facter -c /etc/puppetlabs/facter/facter.conf -d uptime—— 指定配置并开调试观察缓存读取情况。输出不符合预期时加--no-block/--no-cache做对照实验快速定位是 blocklist 还是 ttls 起了作用。仓库根目录自带一份 facter.conf 风格的示例文件包含blocklist、ttls与fact-groups的最小完整写法更完整的场景用例可以参考acceptance/tests/options/config_file/下的验收测试如 ttls 缓存过期、blocklist 正则匹配等。完整示例一份一次配好的 facter.conf把上面所有要点合起来这就是生产环境里一份典型的全局配置facts : { blocklist : [ ssh ], ttls : [ { uptime: 30 days }, { memory: 1 hour }, { cloud-creds: 1 hour } ] } global : { show-legacy : true } fact-groups : { cloud-creds : [ ec2_metadata, ec2_userdata, gce ] } 小结记住「blocklist 管屏蔽、ttls 管缓存、fact-groups 管分组、global/cli 管行为」这条主线再配合--list-block-groups、--list-cache-groups两个自检命令facter.conf 就再也不是黑盒——一次配好全机队生效。【免费下载链接】facterCollect and display system facts项目地址: https://gitcode.com/gh_mirrors/fa/facter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考