2个不稳定版本
0.2.0 | 2019年6月13日 |
---|---|
0.1.0 | 2019年5月1日 |
在模板引擎类别中排名第210
17KB
150 行
svgen
一个小工具,用于从模板生成runit服务。
用法
此工具在目录 /etc/svgen/templates/
中查找服务模板,并使用 /etc/svgen/instances
中的实例描述实例化它们。模板是一个包含至少一个 run
文件的目录,可包含其他文件。实例文件中的每一行都必须是以下形式:<template-name>@<instance-name>
。实例化意味着从模板中读取文件,将字符串 __INSTANCE__
替换为实例名称,然后在 /etc/sv/generated/<instance-line>
下创建一个新的服务目录。然后将模板目录中处理过的文件写入服务目录,同时特殊处理现有的 log
文件并将其安装为 log/run
。之后,该服务将在 /service/
中创建符号链接以激活它。
示例
在这个示例中,我们为 [wg-quick
](https://www.wireguard.com/quickstart/) 创建一个模板,这是一个用于设置wireguard VPN连接的简单程序。这是一个很好的例子,因为我们通常有一堆VPN接口需要设置,所有相应的runit服务看起来几乎相同。创建一个新的目录 /etc/svgen/templates/wg-quick/
并将以下内容放入 run
文件中
#!/bin/sh
wg-quick up "__INSTANCE__"
exec chpst -b "wg-quick@__INSTANCE__" pause
__INSTANCE__
字符串将在模板实例化时被替换,并充当接口名称的角色。为了在服务停止时拆除网络,我们还需要一个 finish
脚本
#!/bin/sh
wg-quick down "__INSTANCE__"
现在,假设您已配置了两个wireguard网络,wg-net1
和 wg-net2
。为了为它们创建服务,创建以下 /etc/svgen/instances
文件
# wireguard
wg-quick@wg-net1
wg-quick@wg-net2
现在运行
chmod +x run finish
svgen
这将生成两个服务在 /etc/sv/generated/
下,并将它们从 /service/
中链接过来。
安装
要构建程序,请运行
cargo build --release
然后以root身份运行
bash
./install.sh
完整操作说明
请参阅文档以了解该程序如何运行的完整描述。
许可证
本项目采用GNU AGPL版本3或更高版本许可,更多详细信息请参阅LICENSE
文件。