0x0i.lotus
Ansible 角色 :cherry_blossom: :link: Lotus
目录
Ansible 角色,用于安装和配置 Lotus:Filecoin 分布式存储网络的区块链协议的 Go 实现。
支持的平台:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
要求
需要在目标主机上安装 unzip/gtar
工具。有关详细信息,请参阅 ansible unarchive
模块的说明。
角色变量
变量可根据以下软件和机器配置阶段进行组织:
- 安装
- 配置
- 启动
- 卸载
安装
lotus_user: <服务用户名>
(默认: lotus)
lotus
用于权限分离的专用服务用户和组(详细信息请参见 这里)。
install_type: <archive | source>
(默认: archive)
archive: 目前由 Ubuntu 和 Fedora 发行版支持(由于
glibc
GNU libc 库版本 >= 2.27 的可用性 -- 详细信息见这里),支持 tar 和 zip 格式,通过压缩归档安装 Lotus,直接从指定的归档 URL 下载组件二进制文件,lotus
网络客户端和lotus-miner
挖矿软件。注意:归档安装二进制文件可从官方发布网站或从开发/自定义源生成。
source: 从源代码构建 lotus 网络客户端 和 存储矿工 二进制文件。此安装过程包括克隆 GitHub 托管的仓库并使用
make
指令从源代码构建。有关从源代码构建的更多详细信息,请参见这里。
install_dir: </path/to/installation/dir>
(默认: /opt/lotus
)
- 目标主机上
lotus
二进制文件应被解压到的路径。
include_benchmarks: <true|false>
(默认: false
)
- 是否构建和安装
lotus-bench
。更多信息请见这里。
archive_url: <path-or-url-to-archive>
(默认: 见 defaults/main.yml
)
- 包含
lotus
二进制文件的压缩 tar 或 zip 归档的地址。此方法技术上支持安装任何可用版本的lotus
。官方版本的链接可在这里找到。
archive_checksum: <path-or-url-to-checksum>
(默认: 见 defaults/main.yml
)
- 用于验证指定归档数据完整性的校验和文件地址。虽然推荐并通常被认为是最佳实践,但指定校验和 不是必需的,可以通过提供空字符串(
''
)来禁用。
checksum_format: <string>
(默认: 见 sha512
)
- 用于验证与指定归档或软件包校验和关联的文件的哈希算法。有关 校验和/加密 哈希的更多信息,请参阅这里。
git_url: <path-or-url-to-git-repo>
(默认: 见 defaults/main.yml
)
lotus
git 仓库的地址。地址可以引用Github网站地址或托管在其他 Git 托管网站上的自定义源。
git_version: <string>
(默认: v0.1.0
)
- 要检出的仓库版本。这可以是字面字符串 HEAD、分支名称或标签名称。
lotus_path: </path/to/runtime/dir>
(默认: /opt/lotus/.lotus
)
- 在目标主机上
lotus
服务应建立为其运行时配置和数据目录的路径。
lotus_storage_path: </path/to/miner/data-dir>
(默认: /opt/lotus/.lotusstorage
)
- 在目标主机上
lotus-miner
服务应建立为其运行时和数据存储目录的路径。
go_autoinstall: <true|false>
(默认: false
)
- 自动安装指定版本的 Go 包和二进制文件。在从源代码安装需要
go
作为构建过程的一部分时很有用。
go_url: <path-or-url-to-archive>
(默认: 见 defaults/main.yml
)
- 包含
go
二进制文件或用于编译的源代码的压缩 tar 或 zip 归档的地址。此方法技术上支持安装任何可用版本的go
。官方版本的链接可在这里找到。
go_install_dir: </path/to/install/dir>
(默认: /usr/local
)
- 目标主机上
go
二进制文件应被解压到的路径。
配置
lotus
客户端的配置可以在一个用TOML编写的配置文件中表达,这是一种简单的标记语言。注意:此文件可以在 LOTUS_PATH
(用于 lotus
客户端/服务)或 LOTUS_STORAGE_PATH
(用于 lotus miner
)环境变量指定的目录下找到。有关可用配置选项的想法,请参考这个示例(默认安装)。
以下变量可自定义以管理此 TOML 配置的内容:
config: {"<config-section>": {"<section-setting>": "<setting-value>",..},..}
默认: 见 defaults/main.yml
任何
lotus
支持的配置设置/值键值对都应在config
哈希中表达,并在相关的 TOML 配置中正确渲染。值可以以典型的 yaml/ansible 形式表达(例如,字符串、数字和 true/false 值应照常书写而无需引号)。此外,配置不受硬编码作者定义的默认值限制,也不受预先构建模板的限制。如果配置节、设置和值被
lotus
工具识别,:thumbsup: 则可以在config
中定义。config
哈希的键表示 TOML 配置节:config: # [TOML Section 'API'] API: {}
config[<key>]
的值表示嵌入哈希中表达的配置设置的键值对:config: # TOML Section '[API]' API: # 设置 ListenAddress,值为绑定在端口 1234 的 localhost ListenAddress: "/ip4/127.0.0.1/tcp/1234/http"
启动
extra_run_args: <lotus-cli-options>
(默认: []
)
- 用于传递给运行时二进制文件的
lotus daemon
命令行参数的列表,以自定义启动。支持lotus daemon
的cli的完整表达,此变量使启动可以根据用户的规格进行定制。
extra_miner_args: <lotus-miner-cli-options>
(默认: []
)
- 用于传递给运行时二进制文件的
lotus-miner run
命令行参数的列表,以自定义启动。支持lotus-miner run
的cli的完整表达,此变量使启动可以根据用户的规格进行定制。
custom_unit_properties: <hash-of-systemd-service-settings>
(默认: []
)
- 用于自定义 Lotus systemd 服务的
[Service]
单元配置和执行环境的设置哈希。
custom_miner_properties: <hash-of-systemd-service-settings>
(默认: []
)
- 用于自定义 Lotus Storage Miner systemd 服务的
[Service]
单元配置和执行环境的设置哈希。
示例
custom_unit_properties:
Environment: "LOTUS_PATH=/var/data/lotus"
custom_miner_properties:
Environment: "LOTUS_STORAGE_PATH=/var/data/lotus-miner"
要设置多个环境变量,它们需要用空格分隔:
custom_unit_properties:
Environment: "BELLMAN_CPU_UTILIZATION=0.875 FIL_PROOFS_MAXIMIZE_CACHING=1 FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1"
custom_miner_properties:
Environment: "BELLMAN_CPU_UTILIZATION=0.875 FIL_PROOFS_MAXIMIZE_CACHING=1 FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1"
请参考systemd.service man 页面以获取配置概述和参考。
卸载
perform_uninstall: <true | false>
(默认: false
)
- 是否卸载并删除目标主机上此
lotus
安装的所有工件和残留物 (见:handlers/main.yml
以获取详细信息)
依赖
- 0x0i.systemd
示例剧本
默认示例:
- hosts: all
roles:
- role: 0x0I.lotus
从指定的 git 源版本安装 lotus
:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
git_url: https://github.com/filecoin-project/lotus.git
git_version: v0.1.1
为 calibration
网络安装 lotus
;包含 SHA 扩展;包含 rust;包含 lotus-bench
:
- hosts: all
roles:
- ansible-rustup
- hosts: all
environment:
# SHA 扩展
RUSTFLAGS: "-C target-cpu=native -g"
FFI_BUILD_FROM_SOURCE: 1
vars:
# rust/cargo 的路径
cargo_home: "{{ /home/{{ ansible_env.HOME }}/.cargo }}"
roles:
- role: 0x0I.lotus
vars:
install_type: source
include_benchmarks: true
git_url: https://github.com/filecoin-project/lotus.git
git_version: ntwk-calibration
go_autoinstall: true
go_url: https://dl.google.com/go/go1.15.5.linux-amd64.tar.gz
在非环回地址上公开 lotus
API/JSON-RPC 服务器:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: archive
config:
API:
ListenAddress: /ip4/0.0.0.0/tcp/1234/http
LibP2P:
ListenAddresses: ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0"]
使用自定义运行时/存储路径和启动选项启动 lotus
服务和 lotus-miner
代理:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
lotus_path: /mnt/lotus
lotus_storage_path: /mnt/lotus/miner
managed_services: ['lotus', 'lotus-miner']
config:
Metrics:
Nickname: "my_miner"
extra_run_args: ['--bootstrap']
extra_miner_args: ['--nosync']
custom_miner_properties:
LimitDATA: 1T
许可证
MIT
作者信息
此角色由 O1.IO 于 2019 年创建。