0x0i.geth

logo ansible

logo ethereum

Rôle Ansible :ordinateur: :lien: Geth

Rôle Galaxy Version GitHub (dernière date) Licence : MIT

Table des Matières

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.
  • 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 de geth. 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 hachage geth_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 dans geth_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.

À propos du projet

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

Installer
ansible-galaxy install 0x0i.geth
Licence
Unknown
Téléchargements
136
Propriétaire