1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017年7月23日 |
---|
#732 in 配置
145KB
458 行
实现
实现
是一个用 Rust 编写的闪电般的配置管理库。它公开了一个类型安全的 eDSL,用于编写系统配置程序。
特性
实现
的目标是让你能够使用 Rust 的全部功能编写灵活的系统配置。然后,你可以将此配置作为静态链接的可执行文件部署到任何其他机器,并运行它以应用所需更改,而无需安装任何其他依赖项。
这与其他类似配置管理工具(如 Ansible、Puppet 或 Chef)不同,这些工具具有重大的系统依赖性,并且在目标机器上以动态方式解释配置,这可能导致类型系统可以减轻的错误。
示例
以下是一个 实现
配置示例(更多示例请参阅 examples
目录)
extern crate realize;
use realize::fs;
fn main() {
realize::apply(configuration)
}
fn configuration(reality: &mut realize::Reality) {
reality.ensure(fs::File::at("/etc/hostname").contains_str("dflemstr-desktop"));
// Include the ’files/etc/passwd’ file in the static binary so that the
// configuration is truly dependency-free
reality.ensure(fs::File::at("/etc/passwd".contains_str(include_str!("files/etc/passwd"))));
}
示例输出(非上面的示例,而是另一个示例)
入门
安装 Rust(仅在开发机器上需要)然后为您的配置创建一个新的 crate
$ cargo new --bin myconfig
$ cd myconfig
现在,在您的 Cargo.toml
文件中声明对 实现
的依赖关系
[dependencies]
realize = "*"
现在,您可以将配置放入 src/main.rs
。要本地应用配置,只需运行
$ cargo run
要获取一个可以在其他地方部署的二进制文件,构建一个发布二进制文件
$ cargo build --release
生成的二进制文件位于 target/release/myconfig
。
此二进制文件仍然依赖于您的操作系统的 LIBC 版本。要获得一个真正无依赖的二进制文件,首先使用操作系统的包管理器安装 musl,然后交叉编译二进制文件为 musl
$ rustup target add x86_64-unknown-linux-musl
$ cargo build --release --target x86_64-unknown-linux-musl
依赖关系
~7–18MB
~229K SLoC