#配置管理 #自动化 #DevOps #配置 #任务 #可扩展 #任务列表

duxcore

将自动化引擎(类似Ansible)嵌入您的代码中,并适应您的特定用例

5个版本

0.1.3 2024年8月6日
0.1.2 2024年7月21日
0.1.1 2024年7月13日
0.1.0 2024年7月9日
0.0.0 2024年7月2日

#118 in 配置

Download history 165/week @ 2024-07-01 334/week @ 2024-07-08 76/week @ 2024-07-15 126/week @ 2024-07-22 11/week @ 2024-07-29 140/week @ 2024-08-05

每月489次下载

Apache-2.0

680KB
3K SLoC

杜克核心:将Ansible-like自动化引擎嵌入您的Rust代码中

目标

我们更愿意构建一个灵活的自动化引擎(这个crate),并将其尽可能容易地嵌入到一个已经适应特定需求的代码库中,而不是有一个大型的自动化工具(意味着配置管理或编排工具)试图处理所有场景(可扩展、性能、通过这个协议或那个协议处理本地和远程主机、符合这个安全标准以及那个标准...)。

文档

关于dux项目的《书籍》已在此处开放这里

示例

到目前为止,基于这个crate(作为概念证明)正在构建3个版本。

  • 标准:一个可执行文件,接受任务列表和主机列表作为输入(加上额外的,如用户名、密钥...)并将这些任务应用于这些受控主机。
  • 可扩展控制器节点工作节点):转变为微服务架构,任务由控制器节点创建,发送到消息代理(RabbitMQ),由工作节点(这些是实际在受控主机上执行操作的节点)获取,并将结果通过消息代理发送回控制器。这允许通过增加工作节点的数量来同时处理更多的受控主机。
  • 代理:一个作为服务运行在主机上的可执行文件。该服务定期在其自己的主机上应用任务列表。此任务列表可以是本地文件或通过多种方法(https、ftp、git...)获取。它允许拉模式:受控主机主动寻找要应用于自身的任务。操作员需要做的只是更新任务列表,其余的将自行完成。

贡献/帮助/讨论

想要一些帮助来使用这个crate解决您的情况吗?欢迎提出建议、反馈、请求以及任何贡献!我非常愿意在那里与您交换想法这里

可用的模块

(按字母顺序排序)

模块 描述
apt 管理类似Debian的发行版的软件包
command 在受控主机上运行单个shell命令
dnf 管理Fedora-like发行版的软件包(与yum无区别)
lineinfile 在文件中操作行(添加、删除)
ping 测试与远程主机的SSH连接
service 管理受控主机上的服务
yum 管理Fedora-like发行版的软件包(与dnf无区别)

待办事项列表

  • 全局:优化(有很多clone...)
  • 全局:错误处理(有很多unwrap...)
  • 主机列表:引入别名和连接模式
  • 主机列表:添加JSON格式处理
  • 任务执行:模块需要生成标准化的JSON结果,可以直接由后续步骤使用('注册')
  • RabbitMQ:将连接部分转换为crate
  • RabbitMQ:添加弹性机制(丢失连接等)
  • 连接:引入与QUICSSH3、其他协议的兼容性
  • 处理Android和IOT设备的模块?
  • 完全兼容Ansible语法
  • 日志生成:在什么情况下应用什么,syslog交互,生成JSON内容的能力(例如日志聚合器)
  • 创建一个基于gRPC的示例实现

依赖项

~17–48MB
~785K SLoC