0x0i.geth
Rola Ansible :computer: :link: Geth
Spis treści
- Obsługiwane platformy
- Wymagania
- Zmienne roli
- Zależności
- Przykładowy playbook
- Licencja
- Informacje o autorze
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
gethdo 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/gethdla systemu Linux i/usr/local/bin/gethdla MacOS.
- Uwaga, że katalog instalacji jest określany przez system zarządzania pakietami i obecnie domyślnie to
- 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 wersjigeth. 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
gethpowinny 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
gethpowinna być wyrażona w skróciegeth_configi 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
gethna docelowym hoście (zobacz:handlers/main.ymldla 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.
Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.
ansible-galaxy install 0x0i.geth