3 个版本 (破坏性更新)
新 0.4.0 | 2024 年 8 月 24 日 |
---|---|
0.3.0 | 2024 年 8 月 19 日 |
0.1.0 | 2024 年 8 月 19 日 |
#52 在 缓存
每月 380 次下载
用于 2 crates
120KB
3K SLoC
rc_conf
rc_conf
提供了由 FreeBSD 的 init 系统启发的类似 rc 的配置语法。rc_conf 的核心原则是将配置与运行时分离。rc_conf 通过将配置放入 rc.conf
文件(类似于 BSD 上的 /etc/rc.conf)来实现这一点,然后通过 rc.d
服务存根运行程序。
例如:memcached 服务部署从两个部分开始。第一部分是 rc.d
服务存根。它看起来像这样
#!/usr/bin/env rcscript
DESCRIBE=A single memcached instance.
COMMAND=memcached -v
该格式旨在自我描述。需要注意的两个问题是,此文件应该是可执行的,并且命令应在前台运行,而不是作为守护进程运行。
如果我们直接运行此服务,它将不会运行。默认情况下,每个服务都是禁用的。要启用 memcached,创建一个包含以下内容的 rc.conf
memcached_ENABLED="YES"
这会导致 rustrc
(在 rc_conf
上编写的监督程序)以一些失败时的回退措施保持 memcached 守护程序运行。
这并不是一个非常有用的例子,因为我们的最终状态只是一个起点。我们可能想要配置 memcached,并且每次都回到 rc.d
文件并重新部署它将不会很有趣。
进入 rc_conf
的第一原则:配置与值的使用之间的分离。rc_conf 脚本通过将命令行应用程序绑定到 rc.conf
文件来提供配置的 "钩子"。例如,如果我们想要配置 memcached 的端口和主机名,我们修改 rc.d
脚本来像这样
COMMAND=memcached -v ${HOST:+-i ${HOST}} ${PORT:+-p ${PORT}}
这将从运行 memcached 的 rc_conf
文件中获取 HOST 和 PORT 的值。但全局变量很快就会变得混乱。哪个是 HOST;哪个是 PORT?这就是 rc_conf
发挥作用的地方。要设置主机名,请将以下内容添加到 rc.conf
memcached_HOST="memcached.example.org"
memcached_PORT="11211"
如果其中任何一个不存在,则将使用无“memcache_”前缀的版本替代。因此,要为所有服务指定一个默认主机并允许覆盖,请指定 HOST=default.example.org
。
别名
要启动第二个运行在 22122 的 memcached,我们可以将以下内容添加到我们的 rc.conf
memcached_two_INHERIT="YES"
memcached_two_ALIASES="memcached"
memcached_two_PORT="22122"
这样的别名使用一个 rc.d
占位符来启动两个 memcached 实例。
状态
维护跟踪。该库被认为已稳定,如果一年内没有更改,则将进入维护模式。
范围
这个crate提供了RcConf
类型、rcscript
解释器和其他rc工具。
工具
- rcdebug:显示
rc_conf
文件的调试结构。用法:rcdebug rc.conf
- rcexamine:显示解析器看到的
rc_conf
。用法:rcexamine rc.conf:rc.conf.local
- rcinvoke:以
rc_conf
规定的方式在前台运行服务。用法:rcinovke --rc-conf-path rc.conf:rc.conf.local --rc-d-path rc.d:/srv/rc.d memcached
- rclist:列出在rc.d路径中可用的rc.d脚本。用法:
rclist rc.d /srv/rc.d
- rcvar:输出服务查找其配置的 rcvariables。用法:
rcvar --rc-conf-path rc.conf:rc.conf.local --rc-d-path rc.d:/srv/rc.d memcached
- rcscript:rc.d shell stubs 的解释器。用法:作为一个解释器
瑕疵
- 在变量声明之外的具有
'{'
和'}'
字符的字符串现在无法正确解析。
文档
最新文档始终可在 docs.rs 获取。
依赖项
~0–300KB