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
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.
- 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
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óciegeth_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.
Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.
ansible-galaxy install 0x0i.geth