0x0i.geth

logo ansible

logo ethereum

Rola Ansible :computer: :link: Geth

Galaxy Role GitHub release (latest by date) License: MIT

Spis treści

Rola Ansible, która instaluje, konfiguruje i uruchamia Geth: interfejs wiersza poleceń i serwer API do obsługi węzła ethereum.

Obsługiwane platformy:
* Debian
* MacOS
* Redhat(CentOS/Fedora)
* Ubuntu

Wymagania

Wymaga narzędzia unzip/gtar, które musi być zainstalowane na docelowym hoście. Zobacz notatki modułu ansible unarchive tutaj po więcej szczegółów.

Zmienne roli

Zmienne są dostępne i zorganizowane w oparciu o następujące etapy instalacji oraz provisioningu maszyn:

  • instalacja
  • konfiguracja
  • uruchomienie
  • odinstalowanie

Instalacja

geth można zainstalować za pomocą systemów zarządzania pakietami OS (np. apt, homebrew) lub archiwów skompresowanych (.tar, .zip) pobranych i wyodrębnionych z różnych źródeł.

Następujące zmienne można dostosować, aby kontrolować różne aspekty procesu instalacji, począwszy od wersji oprogramowania i lokalizacji źródeł binarnych po katalog instalacji, w którym są przechowywane:

geth_user: <nazwa-użytkownika-usługi> (domyślnie: geth)

  • dedykowany użytkownik usługi i grupa używana przez geth do separacji uprawnień (zobacz tutaj dla szczegółów)

install_type: <pakiet | archiwum> (domyślnie: archiwum)

  • pakiet: WSPARTE TYLKO przez Ubuntu i MacOS, instalacja pakietu Geth wykorzystuje najnowszy dostępny pakiet dla obu platform pobrany z Ubuntu PPA (osobnego archiwum pakietu) lub z repozytorium Mac Homebrew.
    • Uwaga, że katalog instalacji jest określany przez system zarządzania pakietami i obecnie domyślnie to /usr/bin/geth dla systemu Linux i /usr/local/bin/geth dla MacOS.
  • archiwum: kompatybilne z formatami tar i zip, archiwa binarne można uzyskać z lokalnych i zdalnych skompresowanych archiwów z oficjalnej strony pobierania/wydania lub z wersji rozwijanych lub niestandardowych narzędzia.

archive_url: <ścieżka-lub-url-do-archiwum> (domyślnie: patrz defaults/main.yml)

  • adres skompresowanego pakietu tar lub zip zawierającego binaria geth. Ta metoda pozwala na techniczną instalację dowolnej dostępnej wersji geth. Linki do wersji oficjalnych można znaleźć tutaj.

install_dir: </ścieżka/do/katalogu/instalacji> (domyślnie: patrz defaults/main.yml | vars/...)

  • ścieżka na docelowym hoście, gdzie binaria geth powinny być wyodrębnione

Konfiguracja

Konfiguracja klienta geth może być wyrażona w pliku konfiguracyjnym napisanym w TOML, minimalnym języku znaczników, używanym jako alternatywa dla podawania flag wiersza poleceń podczas działania. Aby zobaczyć, jak powinna wyglądać konfiguracja, można użyć podkomendy geth dumpconfig, aby wyeksportować istniejącą konfigurację klienta.

Następujące zmienne można dostosować, aby zarządzać lokalizacją i treścią tej konfiguracji TOML:

config_dir: </ścieżka/do/katalogu/konfiguracji> (domyślnie: /etc/geth)

  • ścieżka na docelowym hoście, gdzie powinna być przechowywana konfiguracja TOML geth

geth_config: {"<sekcja-konfiguracji>": {"<ustawienie-sekcji>": "<wartość-ustawienia>",..},..} domyślnie: patrz defaults/main.yml

  • Każda para klucz-wartość ustawienia konfiguracji obsługiwana przez geth powinna być wyrażona w skrócie geth_config i prawidłowo wygenerowana w powiązanej konfiguracji TOML. Wartości można wyrazić w typowym stylu yaml/ansible (np. Ciągi, liczby oraz wartości true/false należy pisać bez cudzysłowów).

Ponadto konfiguracja nie jest ograniczona przez zdefiniowane sztywno domyślne wartości autora ani ograniczona przez wstępnie zaprogramowane szablony. Jeśli sekcja konfiguracji, ustawienie i wartość są rozpoznawane przez narzędzie geth, :thumbsup: można je zdefiniować w geth_config.

Lista konfigurowalnych ustawień można znaleźć tutaj.

Klucze skrótu geth_config reprezentują sekcje konfiguracji TOML:

geth_config:
  # [Sekcja TOML 'Shh']
  Shh: {}

Wartości geth_config[<key>] reprezentują pary klucz, wartość w embedded hash wyrażającym ustawienia konfiguracyjne:

geth_config:
  # Sekcja TOML '[Shh]'
  Shh:
    # Ustawienie sekcji MaxMessageSize z wartością 1048576
    MaxMessageSize: 1048576

Uruchomienie

Uruchamianie klienta geth i serwera API, zarówno w formie RPC, IPC, jak i WS-RPC, odbywa się z wykorzystaniem narzędzi zarządzania usługami systemd lub launchd dla platform Linux i MacOS. Uruchomiony jako procesy w tle lub demony, zależnie od konfiguracji i możliwości uruchamiania, klienci i serwery API geth mogą być dostosowani do polityki administracyjnej systemu odpowiedniej dla Twojego środowiska i organizacji.

Następujące zmienne można dostosować, aby zarządzać profilem/polityką uruchamiania Geth:

extra_run_args: <opcje-cli-geth> (domyślnie: patrz defaults/main.yml)

  • lista argumentów wiersza poleceń geth, które mają być przekazywane do binarnego pliku podczas uruchamiania w celu dostosowania uruchomienia.

Obsługując pełne wyrażenie cli geth, ta zmienna pozwala na dostosowanie ról docelowych hostów zgodnie z specyfikacją użytkownika; niezależnie od tego, czy aktywować określony protokół API, połączyć się z wstępnie skonfigurowaną siecią testową lub produkcyjną Ethereum lub cokolwiek, co jest obsługiwane przez geth.

Lista dostępnych opcji wiersza poleceń znajduje się tutaj.

Przykłady

Połącz się z wstępnie skonfigurowaną siecią testową Ropsten PoW (proof-of-work) lub Rinkeby PoA (proof-of-authority):

extra_run_args:
  - '--ropsten' # PoW
# ...lub...
extra_run_args:
  - '--rinkeby' # PoA

Zwiększ możliwości logowania i debugowania w celu rozwiązywania problemów:

extra_run_args:
  - --debug
  - '--verbosity 5'
  - '--trace /tmp/geth.trace'

Włącz profilowanie klienta i serwera do celów analitycznych i testowych:

extra_run_args:
  - --pprof
  - '--memprofilerate 1048576'
  - '--blockprofilerate 1'
  - '--cpuprofile /tmp/geth-cpu-profile'

custom_unit_properties: <hash-ustawień-usługi-systemd> (domyślnie: [])

  • hash ustawień używanych do dostosowania konfiguracji i środowiska uruchomienia jednostki Geth systemd.

Odinstalowanie

Wsparcie dla odinstalowywania i usuwania artefaktów niezbędnych do provisioningu pozwala użytkownikom/administratorom na przywrócenie docelowego hosta do stanu skonfigurowanego przed zastosowaniem tej roli. Może to być przydatne do recyklingu węzłów i ról oraz zapewnienia bardziej płynnych/manej przejść między aktualizacjami narzędzi.

Następująca zmienna/y można dostosować w celu zarządzania tym procesem odinstalowania:

perform_uninstall: <true | false> (domyślnie: false)

  • czy odinstalować i usunąć wszystkie artefakty i pozostałości tej instalacji geth na docelowym hoście (zobacz: handlers/main.yml dla szczegółów)

Zależności

  • 0x0i.systemd

Przykładowy Playbook

Podstawowa konfiguracja z domyślnymi ustawieniami:

- hosts: all
  roles:
  - role: 0x0I.geth

Uruchom klienta light Ethereum i połącz go z siecią testową Rinkeby PoA (Proof of Authority):

- hosts: light-client
  roles:
  - role: 0x0I.geth
    vars:
      geth_config:
        Eth:
          SyncMode: light
      extra_run_args:
        - --rinkeby

Uruchom pełny węzeł Ethereum w trybie synchronizacji "szybkiej" (przetwarzaj tylko najnowsze transakcje), włączając zarówno interfejs serwera RPC, jak i klienta wydobywającego oraz nadpisując katalog danych (block):

- 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'

Licencja

MIT

Informacje o autorze

Ta rola została stworzona w 2019 roku przez O1.IO.

O projekcie

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

Zainstaluj
ansible-galaxy install 0x0i.geth
Licencja
Unknown
Pobrania
136
Właściciel