2个不稳定版本

0.2.0 2019年6月13日
0.1.0 2019年5月1日

模板引擎类别中排名第210

AGPL-3.0

17KB
150

svgen

crates.io docs.rs

一个小工具,用于从模板生成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-net1wg-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文件。

依赖项