7 个版本
新版本 0.1.6 | 2024 年 8 月 23 日 |
---|---|
0.1.5 | 2024 年 8 月 22 日 |
908 在 网络编程 中排名
每月 433 次下载
360KB
9K 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