0x0i.geth
Rôle Ansible :ordinateur: :lien: Geth
Table des Matières
- Plateformes Supportées
- Exigences
- Variables du Rôle
- Dépendances
- Exemple de Playbook
- Licence
- Informations sur l'Auteur
Rôle Ansible qui installe, configure et exécute Geth : une interface en ligne de commande et un serveur API pour faire fonctionner un nœud Ethereum.
Plateformes Supportées :
* Debian
* MacOS
* Redhat(CentOS/Fedora)
* Ubuntu
Exigences
Nécessite l'utilitaire unzip/gtar
installé sur l'hôte cible. Voir les notes du module unarchive
pour plus de détails.
Variables du Rôle
Les variables sont disponibles et organisées selon les étapes suivantes de provisionnement logiciel et machine :
- installation
- configuration
- lancement
- désinstallation
Installation
geth
peut être installé en utilisant les systèmes de gestion de paquets de l’OS (ex. apt
, homebrew
) ou des archives compressées (.tar
, .zip
) téléchargées et extraites à partir de diverses sources.
Les variables suivantes peuvent être personnalisées pour contrôler divers aspects de ce processus d'installation, comme la version du logiciel, l'emplacement source des binaires et le répertoire d'installation où ils sont stockés :
geth_user: <nom-utilisateur-service>
(par défaut : geth)
- utilisateur et groupe de service dédiés utilisés par
geth
pour la séparation des privilèges (voir ici pour plus de détails)
install_type: <package | archive>
(par défaut : archive)
- package : SUPPORTÉ UNIQUEMENT par Ubuntu et MacOS, l'installation par paquet de Geth récupère le dernier paquet disponible pour chaque plateforme à partir de l'Ubuntu PPA ou du dépôt de formules Mac Homebrew.
- Notez que le répertoire d'installation est déterminé par le système de gestion de paquets et est actuellement par défaut
/usr/bin/geth
pour Linux et/usr/local/bin/geth
pour MacOS.
- Notez que le répertoire d'installation est déterminé par le système de gestion de paquets et est actuellement par défaut
- archive : compatible avec les formats tar et zip, les binaires d'installation par archive peuvent être obtenus à partir d'archives compressées locales et distantes, soit à partir du site de téléchargement/releases officiel, soit via des versions de développement ou personnalisées de l'outil.
archive_url: <chemin-ou-url-de-l-archive>
(par défaut : voir defaults/main.yml
)
- adresse d'un paquet compressé tar ou zip contenant les binaires
geth
. Cette méthode supporte techniquement l'installation de n'importe quelle version degeth
. Des liens vers les versions officielles peuvent être trouvés ici.
install_dir: </chemin/vers/le/répertoire/d-installation>
(par défaut : voir defaults/main.yml | vars/...
)
- chemin sur l'hôte cible où les binaires
geth
doivent être extraits
Configuration
La configuration du client geth
peut être exprimée dans un fichier de configuration écrit en TOML, un langage de balisage minimal, utilisé comme alternative au passage de drapeaux en ligne de commande à l'exécution. Pour avoir une idée de la manière dont la configuration doit sembler, vous pouvez utiliser la sous-commande geth dumpconfig
pour exporter la configuration existante d'un client.
Les variables suivantes peuvent être personnalisées pour gérer l'emplacement et le contenu de cette configuration TOML :
config_dir: </chemin/vers/le/répertoire/de/configuration>
(par défaut : /etc/geth
)
- chemin sur l'hôte cible où la configuration TOML de
geth
doit être stockée
geth_config: {"<section-de-configuration>": {"<paramètre-de-section>": "<valeur-paramètre>",..},..}
par défaut : voir defaults/main.yml
Tout paramètre de configuration/support clé/valeur pris en charge par
geth
doit pouvoir être exprimé dans le hachagegeth_config
et rendu correctement dans la configuration TOML associée. Les valeurs peuvent être exprimées sous forme typique yaml/ansible (ex. : les chaînes, les nombres et les valeurs vrai/faux doivent être écrites telles quelles et sans guillemets).De plus, la configuration n'est pas contrainte par des valeurs par défaut définies par l'auteur ou limitée par des modèles préconçus. Si la section de configuration, le paramètre et la valeur sont reconnus par l'outil
geth
, :thumbsup: pour définir dansgeth_config
.Une liste des paramètres configurables peut être trouvée ici.
Les clés du hachage
geth_config
représentent des sections de configuration TOML :geth_config: # [Section TOML 'Shh'] Shh: {}
Les valeurs de
geth_config[<clé>]
représentent les paires clé, valeur dans un hachage imbriqué exprimant les paramètres de configuration :geth_config: # Section TOML '[Shh]' Shh: # Paramètre de section MaxMessageSize avec la valeur de 1048576 MaxMessageSize: 1048576
Lancement
L'exécution du client geth
et du serveur API, que ce soit sous forme RPC, IPC ou WS-RPC, se réalise en utilisant les outils de gestion de service systemd ou launchd pour les plateformes Linux et MacOS respectivement. Lancé en tant que processus en arrière-plan ou démons soumis à la configuration et à l'exécution fournies par les cadres de gestion sous-jacents, le client geth
et les serveurs API peuvent être adaptés aux politiques administratives du système appropriées pour votre environnement et votre organisation.
Les variables suivantes peuvent être personnalisées pour gérer le profil/de la politique d'exécution de Geth :
extra_run_args: <options-geth-cli>
(par défaut : voir defaults/main.yml
)
- liste des arguments en ligne de commande
geth
à passer au binaire à l'exécution pour personnaliser le lancement.
Supportant l'expression complète du cli de geth
, cette variable permet de personnaliser le rôle des hôtes cibles selon les spécifications de l'utilisateur ; que ce soit pour activer un protocole API particulier, se connecter à un réseau de test ou de production Ethereum pré-configuré ou tout ce qui est supporté par geth
.
Une liste des options de ligne de commande disponibles peut être trouvée ici.
Exemples
Se connecter au réseau de test Ropsten PoW (preuve de travail) ou Rinkeby PoA (preuve d'autorité) pré-configuré :
extra_run_args:
- '--ropsten' # PoW
# ...ou...
extra_run_args:
- '--rinkeby' # PoA
Améliorer les capacités de journalisation et de débogage pour résoudre les problèmes :
extra_run_args:
- --debug
- '--verbosity 5'
- '--trace /tmp/geth.trace'
Activer la profilage du client et du serveur pour des analyses et tests :
extra_run_args:
- --pprof
- '--memprofilerate 1048576'
- '--blockprofilerate 1'
- '--cpuprofile /tmp/geth-cpu-profile'
custom_unit_properties: <hachage-des-paramètres-du-service-systemd>
(par défaut : []
)
- hachage de paramètres utilisés pour personnaliser la configuration et l'environnement d'exécution de l'unité Geth systemd.
Désinstallation
La prise en charge de la désinstallation et de la suppression des artefacts nécessaires à la provision permet aux utilisateurs/operators de ramener un hôte cible à son état configuré avant l'application de ce rôle. Cela peut être utile pour recycler des nœuds et des rôles et peut-être fournir des transitions plus douces/gérées entre les mises à niveau des outils.
Les variables suivantes peuvent être personnalisées pour gérer ce processus de désinstallation :
perform_uninstall: <true | false>
(par défaut : false
)
- savoir si vous devez désinstaller et supprimer tous les artefacts et restes de cette installation
geth
sur un hôte cible (voir :handlers/main.yml
pour plus de détails)
Dépendances
- 0x0i.systemd
Exemple de Playbook
Configuration de base avec les valeurs par défaut :
- hosts: all
roles:
- role: 0x0I.geth
Lancer un client Ethereum léger et le connecter au réseau de test Rinkeby PoA (Preuve d'Autorité) :
- hosts: light-client
roles:
- role: 0x0I.geth
vars:
geth_config:
Eth:
SyncMode: light
extra_run_args:
- --rinkeby
Exécuter un nœud Ethereum complet en mode de synchronisation "rapide" (traiter uniquement les transactions les plus récentes), en activant l'interface de serveur RPC et le client mineur et en remplaçant le répertoire de données (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'
Licence
MIT
Informations sur l'Auteur
Ce rôle a été créé en 2019 par O1.IO.
Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.
ansible-galaxy install 0x0i.geth