0x0i.geth

ansible logo

ethereum logo

Ansible ロール :computer: :link: Geth

Galaxy Role GitHub リリース(最新の日付) ライセンス: MIT

目次

この Ansible ロールは、Ethereum ノードを操作するためのコマンドラインインターフェースと API サーバーである Geth をインストール、設定、実行します。

対応プラットフォーム:
* Debian
* MacOS
* Redhat (CentOS/Fedora)
* Ubuntu

要件

ターゲットホストには unzip/gtar ユーティリティがインストールされている必要があります。詳細は Ansible の unarchive モジュールの ノートをご覧ください。

ロール変数

変数は、以下のソフトウェアおよびマシンプロビジョニングの段階に応じて利用可能で整理されています:

  • install
  • config
  • launch
  • uninstall

インストール

geth はOSパッケージ管理システム(例:apthomebrew)や、さまざまなソースからダウンロードして抽出した圧縮アーカイブ(.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 がデフォルトです。
  • 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 によって作成されました。

プロジェクトについて

Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.

インストール
ansible-galaxy install 0x0i.geth
ライセンス
Unknown
ダウンロード
136
所有者