0x0i.geth
Ansible ロール :computer: :link: Geth
目次
この Ansible ロールは、Ethereum ノードを操作するためのコマンドラインインターフェースと API サーバーである Geth をインストール、設定、実行します。
対応プラットフォーム:
* Debian
* MacOS
* Redhat (CentOS/Fedora)
* Ubuntu
要件
ターゲットホストには unzip/gtar
ユーティリティがインストールされている必要があります。詳細は Ansible の unarchive
モジュールの ノートをご覧ください。
ロール変数
変数は、以下のソフトウェアおよびマシンプロビジョニングの段階に応じて利用可能で整理されています:
- install
- config
- launch
- uninstall
インストール
geth
はOSパッケージ管理システム(例:apt
、homebrew
)や、さまざまなソースからダウンロードして抽出した圧縮アーカイブ(.tar
、.zip
)を使用してインストールできます。
インストールプロセスのさまざまな側面を制御するために、次の変数をカスタマイズできます:
geth_user: <サービスユーザー名>
(デフォルト: geth)
- 権限分離のために
geth
で使用される専用のサービスユーザーおよびグループ(詳細は こちらをご覧ください)
install_type: <package | archive>
(デフォルト: archive)
- package: Ubuntu および MacOS のみサポート。Geth のパッケージインストールは、Ubuntu PPA(パーソナルパッケージアーカイブ)または Mac Homebrew formulae repository から最新のパッケージを取得します。
- インストールディレクトリはパッケージ管理システムによって決定され、Linux では
/usr/bin/geth
、MacOS では/usr/local/bin/geth
がデフォルトです。
- インストールディレクトリはパッケージ管理システムによって決定され、Linux では
- archive: tar と zip 形式の両方に対応。アーカイブインストールバイナリは、公式のダウンロード/リリースサイトまたはツールの開発バージョンやカスタムバージョンから取得できます。
archive_url: <アーカイブへのパスまたはURL>
(デフォルト: defaults/main.yml
を参照)
geth
バイナリを含む圧縮 tar または zip パッケージのアドレス。この方法では、利用可能な任意のgeth
バージョンをインストールできます。公式バージョンへのリンクは こちら で見つかります。
install_dir: </path/to/installation/dir>
(デフォルト: defaults/main.yml | vars/...
を参照)
geth
バイナリが抽出されるターゲットホスト上のパス
設定
geth
クライアントの設定は、TOML で書かれた設定ファイルで表現でき、コマンドラインフラグを実行時に渡す代替手段として使用されます。設定がどのように見えるかを確認するには、geth dumpconfig
サブコマンドを使用してクライアントの既存の設定をエクスポートできます。
この TOML 設定の場所と内容を管理するために、次の変数をカスタマイズできます:
config_dir: </path/to/configuration/dir>
(デフォルト: /etc/geth
)
geth
TOML 設定が保存されるターゲットホスト上のパス
geth_config: {"<config-section>": {"<section-setting>": "<setting-value>",..},..}
デフォルト: defaults/main.yml
を参照
geth
にサポートされている任意の設定/値のキー ペアは、geth_config
ハッシュ内に表現でき、対応する TOML 設定内で適切にレンダリングされます。値は典型的な yaml/ansible 形式で表現できます(例:文字列、数値、true/false 値はそのまま書くことができます)。さらに、設定はハードコーディングされた著者定義のデフォルトに制約されず、事前に焼かれたテンプレートによる制限もありません。設定セクション、設定、および値が
geth
ツールに認識されれば、:thumbsup:geth_config
内で定義できます。設定可能な設定のリストは こちらで見つかります。
geth_config
ハッシュのキーは TOML 設定セクションを表します:geth_config: # [TOML セクション 'Shh'] Shh: {}
geth_config[<key>]
の値は、設定を表現する埋め込みハッシュ内のキー、値ペアを表します:geth_config: # TOML セクション '[Shh]' Shh: # セクション設定 MaxMessageSize の値は 1048576 MaxMessageSize: 1048576
起動
geth
クライアントと API サーバーを、RPC、IPC、または WS-RPC の形式で実行するには、Linux 用の systemd または MacOS 用の launchd サービス管理ツールを使用します。これらは、設定および実行の潜在能力に基づいて背景プロセスまたはデーモンとして起動され、geth
クライアントと API サーバーは、環境および組織に適したシステム管理ポリシーに従うことができます。
以下の変数をカスタマイズして、Geth の実行プロファイル/ポリシーを管理できます:
extra_run_args: <geth-cli-options>
(デフォルト: defaults/main.yml
を参照)
- 実行時にバイナリに渡す
geth
コマンドライン引数のリスト。
geth
のcliを完全に表現できるこの変数により、ユーザーの仕様に応じてターゲットホストの役割をカスタマイズできます。特定のAPIプロトコルリスナーを有効にしたり、事前設定されたEthereumのテストまたは本番ネットワークに接続したりすることができます。
利用可能なコマンドラインオプションのリストは こちら で見つかります。
例
Ropsten PoW(プルーフ・オブ・ワーク)または Rinkeby PoA(プルーフ・オブ・オーソリティ)事前設定されたテストネットワークに接続する:
extra_run_args:
- '--ropsten' # PoW
# ...または...
extra_run_args:
- '--rinkeby' # PoA
問題のトラブルシューティングのためにロギングとデバッグ機能を強化する:
extra_run_args:
- --debug
- '--verbosity 5'
- '--trace /tmp/geth.trace'
分析とテスト目的のためにクライアントおよびサーバープロファイリングを有効にする:
extra_run_args:
- --pprof
- '--memprofilerate 1048576'
- '--blockprofilerate 1'
- '--cpuprofile /tmp/geth-cpu-profile'
custom_unit_properties: <systemd サービス設定のハッシュ>
(デフォルト: []
)
- Geth systemd サービスの
[Service]
ユニット設定と実行環境をカスタマイズするために使用される設定のハッシュ。
アンインストール
アンインストールとプロビジョニングに必要なアーティファクトを削除するサポートにより、ユーザーやオペレーターは、ターゲットホストをこのロールの適用前の状態に戻すことができます。これはノードとロールの再利用に役立ち、ツールのアップグレード間のよりスムーズな移行を提供します。
このアンインストールプロセスを管理するために、以下の変数をカスタマイズできます:
perform_uninstall: <true | false>
(デフォルト: false
)
- ターゲットホスト上のすべてのアーティファクトと
geth
インストールの残骸をアンインストールし、削除するかどうか (詳細はhandlers/main.yml
を参照)
依存関係
- 0x0i.systemd
例示プレイブック
デフォルトでの基本設定:
- hosts: all
roles:
- role: 0x0I.geth
Ethereum ライトクライアントを起動し、Rinkeby PoA(プルーフ・オブ・オーソリティ)テストネットワークに接続する:
- hosts: light-client
roles:
- role: 0x0I.geth
vars:
geth_config:
Eth:
SyncMode: light
extra_run_args:
- --rinkeby
「ファスト」同期モード(最新のトランザクションのみ処理)を使用してフル Ethereum ノードを実行し、RPC サーバーインターフェースとクライアントマイナーの両方を有効にし、(ブロック)データディレクトリを上書きする:
- hosts: full-node
roles:
- role: 0x0I.geth
vars:
geth_config:
Eth:
SyncMode: fast
Node:
DataDir: /mnt/geth
extra_run_args:
- --rpc
- --nousb
- '--rpcaddr="12.34.56.789"'
- '--mine --miner.threads 16'
ライセンス
MIT
著者情報
このロールは2019年に O1.IO によって作成されました。