7 个版本

新版本 0.1.6 2024 年 8 月 23 日
0.1.5 2024 年 8 月 22 日

908网络编程 中排名

Download history 59/week @ 2024-08-09 364/week @ 2024-08-16

每月 433 次下载

BSD-3-ClauseGPL-3.0 许可证

360KB
9K SLoC

Rust 7.5K SLoC // 0.0% comments HCL 497 SLoC Shell 266 SLoC // 0.1% comments Jinja2 94 SLoC Python 30 SLoC Forge Config 6 SLoC

安全网络测试网部署

该工具可用于在 AWS 或 Digital Ocean 上自动部署测试网。

它使用 Terraform 创建基础设施,使用 Ansible 进行供应,并使用 Rust 二进制文件进行协调。

如果您想部署自己的测试网,或者使用该工具部署自己的节点以参与 Maidsafe 的测试网之一,您可以分叉仓库并更改一些细节。

由于我们使用 Ansible,如果您想在 Windows 上使用该工具,您需要使用 WSL。

设置

该工具使用 Terraform 在 Digital Ocean 上创建滴点或在 AWS 上创建 EC2 实例,因此您需要在您的平台上安装它。它很可能在您的平台包管理器中可用。

我们使用 Ansible 供应虚拟机。由于 Ansible 是一个 Python 应用程序,建议在 virtualenv 中安装它。如果您不熟悉这个,我建议您向 ChatGPT 询问类似“如何在由 virtualenvwrapper 创建和管理的 virtualenv 中安装 Ansible?”的问题。每次您使用该工具时,必须激活虚拟env。

2023 年 8 月更新:请指定 Ansible 版本 8.2.0,使用 pip install ansible==8.2.0。新版本存在一个问题,无法正确读取动态库存的 Digital Ocean 环境变量。

安装这些工具后,运行我们的 setup 命令

cargo run -- setup

这将收集一些值,并将它们写入一个 .env 文件,该文件在工具启动时读取。

您只需运行此命令一次。

部署测试网

设置完成后,您可以像这样部署测试网

cargo run -- deploy --name beta

这将部署一个名为“beta”的测试网到Digital Ocean,每个虚拟机有10个虚拟机实例和20个节点进程,并使用最新的 safenode 二进制文件。

如果您需要更多虚拟机或节点,请使用 --vm-count--node-count 参数来调整这些值以满足您的需求

cargo run -- deploy --name beta --vm-count 100 --node-count 30

您可能想部署一个自定义版本的 safenode 二进制文件。要这样做,请使用 --branch--repo-owner 参数

cargo run -- deploy --name beta --vm-count 100 --node-count 30 --repo-owner jacderida --branch custom_branch 

要获取机器列表和关于测试网的其它信息

cargo run -- inventory --name beta --provider digital-ocean

测试数据

有一套标准测试数据,大约是100MB的图像文件。可以使用以下命令上传到测试网

cargo run -- upload-test-data --name beta

将从S3下载存档,然后使用 safe 客户端的 files upload 命令上传每个文件。客户端本身也从S3获取。它使用了与节点二进制文件相同的分支源构建。

清理

要删除测试网,请使用以下命令

cargo run -- clean --name beta --provider digital-ocean

这将使用Terraform拆除它创建的所有droplets。

构建虚拟机镜像

此存储库还包含用于构建虚拟机镜像的 Packer 模板。在预安装工具之后,部署测试网的时间显著减少。

重新生成镜像应该是很少发生的事情,因此到目前为止,在部署二进制文件中没有生成它的命令。然而,这是一个简单的流程。首先,在您的系统上安装Packer;与Terraform一样,它在软件包管理器中广泛可用。然后

export DIGITALOCEAN_TOKEN=<your PAT>
cd resources/packer
packer init .
packer build build.pkr.hcl

这将生成一个可以现在作为droplet启动的虚拟机镜像。还有一个另一个模板,node.pkr.hcl

日志基础设施

我们将测试网的日志转发到一个S3存储桶,这需要一些基础设施。

托管我们节点的虚拟机是具有大约2GB RAM的小型机器。它们使用Filebeat将日志转发到专用的Logstash堆栈,然后将其转发到S3。对于Logstash,目前我们只有一个堆栈和一个堆栈中的单个机器,但我们设计用于容纳许多。

要启动堆栈,请使用此命令

cargo run -- logstash deploy --name main --provider digital-ocean

要拆除它

cargo run -- logstash clean --name main --provider digital-ocean

默认情况下,所有已部署的测试网都将指向此 main 堆栈。但是,您可以创建另一个具有不同名称的堆栈,并在主要的 deploy 命令中提供该堆栈的名称,使用 --logstash-stack-name 参数。

许可证

此存储库受BSD-3-Clause许可证许可。

有关详细信息,请参阅 LICENSE 文件。

依赖关系

~65–100MB
~2M SLoC