0x0i.lotus
Ansibleロール :cherry_blossom: :link: Lotus
目次
Lotusをインストールし、設定するためのAnsibleロールです。Lotusは、Filecoin分散ストレージネットワークのブロックチェーンプロトコルをGoで実装したものです。
サポートされているプラットフォーム:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
要件
ターゲットホストにunzip/gtar
ユーティリティがインストールされている必要があります。詳細については、ansibleのunarchive
モジュールのノートを参照してください。
ロール変数
変数は、次のソフトウェアとマシンのプロビジョニングステージに従って利用可能で整理されています:
- install
- config
- launch
- uninstall
インストール
lotus_user: <サービスユーザー名>
(デフォルト: lotus)
- 権限の分離のために
lotus
によって使用される専用のサービスユーザーとグループです(詳細はこちらを参照)。
install_type: <archive | source>
(デフォルト: archive)
archive: 現在、UbuntuとFedoraディストリビューションでサポートされています(
glibc
GNU libcライブラリパッケージのバージョン>= 2.27の入手可能性による -- 各ディストリビューションのパッケージの入手可能性についてはこちらを参照)。圧縮アーカイブから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マイナー用)の環境変数で指定されたディレクトリにあります。利用可能な設定オプションについての参考は、例(デフォルトでインストールされています)を参照してください。
次の変数をカスタマイズして、このTOML設定の内容を管理できます:
config: {"<config-section>": {"<section-setting>": "<setting-value>",..},..}
デフォルト: defaults/main.yml
を参照
lotus
がサポートする任意の設定/値キーペアは、config
ハッシュ内に表現でき、関連するTOML設定内に正しくレンダリングされるべきです。値は通常の_yaml/ansible_形式(例:文字列、数値、真偽値はそのまま記述し、引用符なしで記述する必要があります)で記述できます。さらに、設定はハードコードされた著者の定義したデフォルトによって制約されたり、事前に作成されたテンプレートに制限されたりはしません。設定セクション、設定、および値が
lotus
ツールによって認識されていれば、config
内で定義可能です。config
ハッシュのキーはTOML設定セクションを表します:config: # [TOMLセクション 'API'] API: {}
config[<key>]
の値は、設定を表現する埋め込まれたハッシュ内のkey,valueペアです:config: # TOMLセクション '[API]' API: # セクション設定ListenAddressの値は、ポート1234でlocalhostにバインド ListenAddress: "/ip4/127.0.0.1/tcp/1234/http"
起動
extra_run_args: <lotus-cli-options>
(デフォルト: []
)
- ランタイム時にバイナリに渡す
lotus daemon
コマンドライン引数のリストです。これは、ユーザーの指定に応じて起動をカスタマイズできるようにします。
extra_miner_args: <lotus-miner-cli-options>
(デフォルト: []
)
- ランタイム時にバイナリに渡す
lotus-miner run
コマンドライン引数のリストです。これも、ユーザーの指定に応じて起動をカスタマイズできるようにします。
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 Extensions
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
著者情報
このロールは2019年にO1.IOによって作成されました。