运维DevOpsIaC【免费下载链接】puppetServer automation framework and application项目地址https://gitcode.com/gh_mirrors/pu/puppet点击查看免费下载导读puppet config是 Puppet 提供的一个用于与puppet.conf配置文件交互的子命令它支持查看print、修改set和删除deletePuppet 的各项设置。本指南以 Puppet 官方生成的 man pagereferences/man/config.md为骨架结合仓库内 face 源码与单元测试完整讲解该命令的语法、section 域概念、三个动作的底层行为及可复用的实战示例。读完本文你将能够用一条命令快速定位任意配置项当前生效的值并安全地把新配置写入指定 section而无需手工编辑 INI 文件。命令概览定位与基本语法puppet config属于 Puppet 的 face 体系其命令入口定义在 lib/puppet/application/config.rb该入口类仅继承Puppet::Application::FaceBase并声明environment_mode :not_required说明它可以在不指定环境的情况下运行实际动作逻辑全部由 face lib/puppet/face/config.rb 实现。命令的基本语法为puppet config action [--section SECTION_NAME]其中action可选print、set、delete三个动作之一。该命令的官方用途说明是This subcommand can inspect and modify settings from Puppets puppet.conf configuration file.与直接手工编辑文件相比puppet config的好处在于它会经过 Puppet 设置系统完整的校验、插值interpolation与 munge 逻辑并在正确的配置域section中写入避免因手误导致配置不生效。理解 puppet.conf 与 section 域所有puppet config操作都围绕puppet.conf展开。仓库中的 conf/puppet.conf 提供了一个最小骨架说明该文件用于覆盖默认设置并提示完整的设置清单可在配置文档中查看。puppet.conf采用 INI 格式由多个 section 组成。--section选项用于指定要交互的 section其完整语义定义在 face 源码的option --section中lib/puppet/face/config.rb#L19-L36section作用范围说明main所有 Puppet 应用默认 section。任何 Puppet 应用都会读取main中的设置serverPuppet Server仅影响服务端如puppetserver/puppet masteragentpuppet agent仅影响 agent 端运行userpuppet apply 等影响puppet apply及其他面向用户的子命令其他任意名字遗留环境legacy environment被视为一个已废弃的遗留环境名且只能包含manifest与modulepath两个设置main之外的 section 用于覆盖overridemain中的值从而实现同一台机器上服务端与客户端配置的差异化。face 源码中通过DEFAULT_SECTION main与一个哨兵对象DEFAULT_SECTION_MARKER来区分用户未指定 section与用户显式指定了 main两种情况lib/puppet/face/config.rb#L17-L20当未指定 section 时命令会默认落入main并在 verbose 级别下打印提示信息。全局选项所有动作都共享以下通用选项--section SECTION_NAME—— 指定要交互的 puppet.conf 区块即上文表格中的各域。这是puppet config最重要的选项三个动作均支持。--render-as FORMAT—— 指定输出渲染格式。最常见的是json、sstring、yaml和console某些场景下还可用dot等格式。该选项来自 Puppet face 的通用渲染机制例如puppet config print all --render-as json可得到便于程序消费的 JSON 输出。--verbose—— 输出详细日志--debug—— 输出调试信息。在 verbose 级别下命令还会打印从哪个 section、哪个环境解析设置的提示Resolving settings from section ... in environment ...见 lib/puppet/face/config.rb#L99-L116。任意配置项均可作为长参数如 man page 所述任何在配置文件中合法的设置同样可以写成命令行长参数例如--server servername、--run_mode runmode。这意味着你可以把某个设置临时叠加到本次puppet config调用的解析上下文中。此外Puppet 还提供两种查看全部可用配置项的途径查看配置文件文档中可接受参数的完整列表运行puppet --genconfig生成一份带注释的、包含每个设置当前或默认值的示例配置输出。该行为由设置项genconfig控制其定义为为 true 时让 Puppet 应用打印一份示例配置文件到 stdout 后退出lib/puppet/defaults.rb#L304-L311。动作一print —— 查看当前设置语法与行为puppet config print [--section SECTION_NAME] all | setting [setting ...]print用于输出单个设置或一组设置的值。它是旧接口puppet subcommand --configprint的替代方案。未指定参数时等价于传入all输出全部设置源码中args.empty? || args [all]统一映射为:all见 lib/puppet/face/config.rb#L76-L80。其输出规则console 渲染器很直观单个设置只输出值本身不输出设置名多个设置 / all按字母序逐行输出setting value。底层原理print的核心调用是Puppet.settings.stringify_settings(options[:section], names)lib/puppet/settings.rb#L95-L118。该方法的要点在于先取指定 section 的值解析出environmentpath与basemodulepath用它们构造新的 environment loader再基于当前环境重新解析一遍全部值——因此打印出的manifest、modulepath等会真实反映环境目录environment解析后的最终结果将结果递归地字符串化Symbol、Hash 等都被转换为字符串便于网络格式消费。这一点在测试中有明确验证当environment.conf里写了modulepath/custom/modules:$basemodulepath时print输出的 modulepath 会正确插值为/custom/modules:/some/basespec/unit/face/config_spec.rb#L332-L353而当引用的环境不存在时manifest与modulepath会输出为空字符串spec/unit/face/config_spec.rb#L355-L374。示例# 获取 Puppet 的 runfile 目录PID 文件存放处 $ puppet config print rundir # 从 server 的配置中筛出所有与路径、目录相关的设置 $ puppet config print all --section server | grep -E (path|dir) # 以 JSON 格式输出全部设置便于脚本处理 $ puppet config print all --render-as jsonrundir与vardir这两个设置的定义都位于 lib/puppet/defaults.rb 中rundir是 Where Puppet PID files are kept类型为目录、权限 0755lib/puppet/defaults.rb#L296-L303vardir是 Where Puppet stores dynamic and growing data其默认值根据运行用户是 service 用户还是普通用户而特殊计算lib/puppet/defaults.rb#L92-L99。动作二set —— 写入配置语法与行为puppet config set [--section SECTION_NAME] setting_name setting_valueset更新puppet.conf中的值。默认操作main域可用--section指定其他域。写入流程lib/puppet/face/config.rb#L139-L198包括若目标文件不存在先touch创建它仅对认识的设置做校验通过Puppet.settings.setting(name.to_sym)查找设置对象lib/puppet/settings.rb#L468-L471存在则赋值并再次读取以触发插值与 munge 校验以 UTF-8 编码打开配置文件用Puppet::Settings::IniFile.update完成落盘。值得注意的两个行为1mastersection 会被自动迁移到server如果显式指定--section master写入face 会先删除master中已有的同名设置如有并打印 Deleted setting from master: ..., and adding it to server section最终写入serversection。测试用例 spec/unit/face/config_spec.rb#L204-L235 验证了这一迁移逻辑。这是因为master已被server取代。2在main中设置environment会收到警告源码会提示应将 environment 放在[user]、[agent]或[server]中因为puppet agent使用[agent]的值而puppet apply、puppet module等子命令使用[user]的值且这些环境要求对应环境目录在本机存在lib/puppet/face/config.rb#L146-L157。INI 文件写入的底层实现set的落盘完全依赖 lib/puppet/settings/ini_file.rb。该解析器按行识别三种结构section 行[name]、设置行name value和其他普通行。Manipulator#set的逻辑是目标 section 中已有同名设置则直接改值否则在 section 末尾或文件末尾新建 section追加一行lib/puppet/settings/ini_file.rb#L128-L157。写入时若main中存在设置但文件中没有显式的[main]行还会自动补写 section 行且不会重复生成两个[main]测试 spec/unit/face/config_spec.rb#L184-L197 专门验证了不重复已有默认 section的行为。示例# 设置 Puppet 的 runfile 目录写入 [main] $ puppet config set rundir /var/run/puppetlabs # 仅对 agent 设置 vardir写入 [agent] $ puppet config set vardir /opt/puppetlabs/puppet/cache --section agent # 把环境指定写入 [user]供 puppet apply 等使用 $ puppet config --section user set environment production动作三delete —— 删除配置语法与行为puppet config delete [--section SECTION_NAME] settingdelete从指定 section默认main删除一个设置。行为细节lib/puppet/face/config.rb#L221-L265若配置文件不存在仅打印警告The puppet.conf file does not exist ...不做其他操作测试见 spec/unit/face/config_spec.rb#L238-L252若目标 section 中找不到该设置打印警告 No setting found in configuration file for section ... setting name ...spec/unit/face/config_spec.rb#L275-L284特殊行为当指定--section master或--section server时会同时从master与server两个 section 中删除同名设置spec/unit/face/config_spec.rb#L286-L301以彻底清除可能的历史残留。示例# 从 [main] 域删除设置 setting_name $ puppet config delete setting_name # 从 [server] 域删除设置 setting_name $ puppet config delete setting_name --section server配置文件定位规则puppet config修改的是哪一份 puppet.conf这由 lib/puppet/settings.rb#L1248-L1254 的which_configuration_file决定若命令行显式指定了--config文件则使用该文件若以 root 进程运行使用系统级 puppet.conf通常为/etc/puppetlabs/puppet/puppet.conf否则使用用户级 puppet.conf通常为~/.puppetlabs/etc/puppet/puppet.conf。因此普通用户直接执行puppet config set不会误写系统级配置需要写系统配置时应在具备相应权限的环境下运行。此外配置文件的默认文件名恒为puppet.conflib/puppet/settings.rb#L91-L93。典型排查场景速查目标命令查看某个设置当前生效值puppet config print setting查看服务端所有路径类设置puppet config print all --section server \| grep -E (path\|dir)确认 agent 的缓存目录puppet config print vardir --section agent为 agent 单独修改缓存目录puppet config set vardir /path --section agent清除某 section 中的设置puppet config delete setting --section server生成带注释的完整配置样例puppet --genconfig脚本化读取全部配置puppet config print all --render-as json延伸阅读本命令的权威 man pagereferences/man/config.mdface 实现动作与选项的完整定义lib/puppet/face/config.rb应用入口lib/puppet/application/config.rbINI 文件解析与写入器lib/puppet/settings/ini_file.rb设置系统的取值、插值逻辑lib/puppet/settings.rb各设置项默认值定义rundir、vardir、genconfig等lib/puppet/defaults.rb单元测试覆盖三个动作的全部关键行为spec/unit/face/config_spec.rb配置文件骨架示例conf/puppet.conf赞分享运维DevOpsIaC【免费下载链接】puppetServer automation framework and application项目地址https://gitcode.com/gh_mirrors/pu/puppet点击查看免费下载相关推荐SerenityOS config 命令完全指南通过 ConfigServer 读写系统配置SerenityOS config 命令完全指南通过 ConfigServer 读写系统配置 config 是 SerenityOS 提供的系统配置读写命令行操作系统内核驱动OctoPrint CLI 配置命令完全指南用 octoprint config 安全读写 config.yamlOctoPrint CLI 配置命令完全指南用 octoprint config 安全读写 config.yaml 本指南系统讲解 OctoPrint 自 1物联网后端Certbot 命令行完全指南Synopsis、子命令与全量 Options 手册解读Certbot 命令行完全指南Synopsis、子命令与全量 Options 手册解读 本篇技术指南以 certbot/docs/man/certbot.rs网络安全CLI后端上一篇暗黑3自动化辅助工具5分钟快速上手指南下一篇暗黑3技能连点器终极指南5分钟掌握自动化战斗彻底告别手指酸痛创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
OpenHarmony I2C驱动开发与排障实战:从协议到RK3568设备树配置 1. 从一根线说起:I2C 在 OpenHarmony 里到底扮演什么角色很多人第一次接触 I2C,脑子里冒出来的画面是两根线挂一堆芯片,觉得这玩意儿简单得不行。真到了 OpenHarmony 设备上跑起来,发现传感器读不到数、触摸屏没反应、EEPROM 写进… · 2026/9/27 10:38:42
3个真实案例拆解intitle网站建设报价陷阱与性能优化避坑指南 3个真实案例拆解intitle网站建设报价陷阱与性能优化避坑指南 找建站公司最怕什么?不是技术不行,而是报价单上的数字让你心跳加速。上周刚帮一个做精密机械的老板砍掉了一半预算,他原本准备花15万做个“高端官网”,结果我们分析后发现,80%的… · 2026/9/27 10:38:42
禁塑合规与溯源盲区交织,品牌包装如何兼顾防护与绿色可信? 在全球制造业向绿色低碳转型的浪潮中,包装已不再是简单的“外衣”,而是品牌价值与环保责任的综合载体。面对欧盟PPWR新规、禁塑令的落地,以及消费者对ESG披露的高要求,众多化妆品、电子数码、汽配、卫浴五金及精密仪器企业正面临包… · 2026/9/27 10:38:42
嵌入式分享#47:为什么 eDP 屏会概率性不显示?(RK3568) 嵌入式分#47:为什么 eDP 屏会概率性不示?(RK3568)摘要:RK3568 调试 eDP 时,屏幕发无法点亮,日显示 Link Training 失败。文分析 eDP Training 的作用并给出在 U-Boot 阶段重复训练的临时修复方案… · 2026/9/27 11:29:55
数字物业安全监测系统详解:从传感器接入到云平台告警闭环 凌晨两点,地下车库积水越过警戒线,水泵却因为控制柜接触器卡死没有启动,值班室电话被打到爆——搞过物业弱电的人应该都见过这种场景。传统靠人工巡检、电话上报的模式,在夜间和恶劣天气下几乎等于裸奔。要系统性地解决这类问题&a… · 2026/9/27 11:29:31
传感器+RTU+云平台,数字物业安全监测闭环实战指南 物业安全监测一旦数字化,传感器、RTU网关和云平台就组成了一个绕不开的闭环。这里说的不是演示台架,而是24小时跑在园区、写字楼和住宅小区里的工程系统。我做过几个数字物业改造项目,最大的感受是:很多人认识传感器,也… · 2026/9/27 11:29:31
网站开发用什么程序好?避坑指南与保姆级建站教程 网站开发用什么程序好?避坑指南与保姆级建站教程 上周深夜,老张(化名,广州某贸易公司老板)打电话给我,声音都在抖:“李工,网站打不开了,浏览器跳出红色警告,说是包含恶意代码。后台被改得面目全非,客户投诉邮件刷爆了邮箱。到底是谁干的?我该怎么… · 2026/9/27 11:29:25
不会代码想搞觉网站?3个免费工具让你省下5万 不会代码想搞觉网站?3个免费工具让你省下5万 很多新手站长卡在第一步,看着满屏的代码头大。其实只要选对免费工具,零代码也能搞定觉网站搭建。 项目背景与需求:从“想”到“做”的距离… · 2026/9/27 11:29:25
3个坑搞定flash素材网站源码下载部署难题 3个坑搞定flash素材网站源码下载部署难题 域名注册选错服务器,代码解压报错,这是新手建站的头号死穴。别被“flash素材网站”这个老旧名词吓退,现在的技术栈早已兼容甚至超越了当年的Flash体验。很多初学者盯着 源码下载… · 2026/9/27 11:29:19
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01