0x0i.lotus

ansible logo

lotus logo

Ansible 角色 :cherry_blossom: :link: Lotus

Galaxy 角色 GitHub 最新版本 许可证: MIT

目录

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 daemoncli的完整表达,此变量使启动可以根据用户的规格进行定制。

extra_miner_args: <lotus-miner-cli-options> (默认: [])

  • 用于传递给运行时二进制文件的 lotus-miner run 命令行参数的列表,以自定义启动。支持 lotus-miner runcli的完整表达,此变量使启动可以根据用户的规格进行定制。

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 年创建。

关于项目

Lotus, an implementation of the Filecoin distributed storage network protocol written in Go

安装
ansible-galaxy install 0x0i.lotus
许可证
Unknown
下载
70
拥有者