通用模块化配置文件管理器
项目描述
update-dotdee程序使管理类似Debian和dotdee风格的模块化配置文件变得简单。程序接受配置文件的路径名,并根据与文件同名的目录(以.d结尾)中的文件内容更新该文件。目前已在cPython 2.7, 3.5+和PyPy(2.7)上进行了测试。
安装
update-dotdee软件包可在PyPI上找到,这意味着安装应该像下面这样简单
$ pip install update-dotdee
安装 Python 软件包的方式有很多种(例如:针对用户的 site-packages 目录、虚拟环境 或全局安装),在这里我不想深入讨论这个问题,所以如果你感到害怕,请在返回这些说明之前先了解一下你的选项吧;-)。
使用方法
使用 update-dotdee 包有两种方式:作为命令行程序 update-dotdee 和作为 Python API。关于 Python API 的详细信息,请参阅在 Read the Docs 上可用的 API 文档。下面将描述命令行界面。
用法: update-dotdee FILENAME
根据与 FILENAME 同名的目录中的文件内容生成(配置)文件,但文件名以 ‘.d’ 结尾。
如果 FILENAME 存在但对应的目录尚未存在,则创建目录并将 FILENAME 移动到目录中,以便保留其现有内容。
支持选项
选项 |
描述 |
---|---|
-f,--force |
即使 FILENAME 包含本地修改,也更新 FILENAME,而不是错误退出。 |
-u,--use-sudo |
启用使用 “sudo” 来更新当前用户(或通过 SSH 登录远程系统时)无法读取和/或写入的配置文件。 |
-r,--remote-host=SSH_ALIAS |
在远程系统上操作,而不是在本地系统上。通过 SSH_ALIAS 参数指定远程主机的 SSH 别名。 |
-v,--verbose |
增加日志详细程度(可重复使用)。 |
-q,--quiet |
减少日志详细程度(可重复使用)。 |
-h,--help |
显示此消息并退出。 |
示例
/etc/hosts 文件是使用 update-dotdee 管理的配置文件的简单示例。在 /etc/hosts.d 目录中的单个文件包含在每次运行时添加到配置文件中的片段。例如
peter@macbook> sudo update-dotdee /etc/hosts 2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/1-local 2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/2-work 2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/3-ipv6 2013-07-06 20:59:24 macbook INFO Checking for local changes to /etc/hosts 2013-07-06 19:32:03 macbook INFO Writing file: /etc/hosts
工作原理
关于 update-dotdee 的工作原理的一些说明
如果给定文件存在但对应的目录尚未存在,则创建目录并将文件移动到目录中(重命名为 local),以便保留其现有内容。
如果生成的文件自上次运行以来已被修改,update-dotdee 将拒绝覆盖其内容(除非您使用 -f 或 --force 选项)。
.d 目录中的文件按文件名自然排序顺序连接(由 naturalsort 包实现)。
自 4.0 版本起,.d 目录中的可执行文件将被执行,它们的标准输出将被纳入生成的内容。
用例
以下是一些 update-dotdee 的示例用例
- SSH 客户端配置
update-dotdee程序于2013年创建,用于提供模块化SSH客户端配置。它被用来从~/.ssh/config.d目录中的文件内容生成~/.ssh/config文件。这个功能是必需的,因为我开发了一个基于服务器元数据库的SSH客户端配置生成器,我正在寻找一种方法来更新用户的~/.ssh/config,而不会破坏现有的(精心手工艺品)内容。
- 系统级配置文件
Linux系统配置文件,如/etc/crypttab、/etc/fstab和/etc/hosts缺乏模块化,使用如awk和sed这样的命令行工具进行操作可能会脆弱或不便。但是,如果您能让您的配置源(例如Ansible剧本、Debian软件包和手动配置)同意使用update-dotdee,那么您就有了一个优雅、强大且可预测的替代方案。
只读替代方案
有时,使用update-dotdee或类似的机制是唯一让多个配置源协作的方法,但它是一种有点重量级的解决方案。对于我发布的Python软件包,我希望有一个更轻量级的替代方案,它只需搜索并加载*.ini配置文件。这就是为什么在5.0版本中增加了ConfigLoader的原因。
联系方式
update-dotdee的最新版本可在PyPI和GitHub上找到。文档托管在Read the Docs上,包括变更日志。有关错误报告,请创建GitHub上的问题。如果您有任何问题、建议等,请随时发送电子邮件至peter@peterodding.com。
许可证
本软件采用MIT许可证。
© 2020 Peter Odding。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。