0x0i.geth

logo de ansible

logo de ethereum

Rol de Ansible :computer: :link: Geth

Rol de Galaxy Última versión de GitHub Licencia: MIT

Tabla de Contenidos

Rol de Ansible que instala, configura y ejecuta Geth: una interfaz de línea de comandos y servidor API para operar un nodo de ethereum.

Plataformas Soportadas:
* Debian
* MacOS
* Redhat(CentOS/Fedora)
* Ubuntu

Requisitos

Se requiere tener instalada la utilidad unzip/gtar en el host de destino. Consulte las notas del módulo ansible unarchive para más detalles.

Variables del Rol

Las variables están disponibles y organizadas de acuerdo a las siguientes etapas de provisión de software y máquina:

  • instalación
  • configuración
  • ejecución
  • desinstalación

Instalación

geth se puede instalar utilizando sistemas de gestión de paquetes del SO (por ejemplo, apt, homebrew) o archivos comprimidos (.tar, .zip) descargados y extraídos de diversas fuentes.

Las siguientes variables se pueden personalizar para controlar diferentes aspectos de este proceso de instalación, desde la versión del software y la ubicación de los binarios hasta el directorio de instalación donde se almacenan:

geth_user: <nombre-de-usuario-del-servicio> (predeterminado: geth)

  • usuario y grupo de servicio dedicados que utiliza geth para separación de privilegios

install_type: <package | archive> (predeterminado: archive)

  • package: SOLO soportado por Ubuntu y MacOS, la instalación de paquetes de Geth obtiene el último paquete disponible para cada plataforma desde el Ubuntu PPA (Archivo de Paquetes Personal) o el repositorio de fórmulas de Mac Homebrew.
    • Tenga en cuenta que el directorio de instalación es determinado por el sistema de gestión de paquetes y actualmente se encuentra por defecto en /usr/bin/geth para Linux y /usr/local/bin/geth para MacOS.
  • archive: compatible con los formatos tar y zip, los binarios de instalación de archivos pueden obtenerse de archivos comprimidos locales y remotos, ya sea desde el sitio oficial de descargas/lanzamientos o por versiones de desarrollo o personalizadas de la herramienta.

archive_url: <ruta-o-url-al-archivo> (predeterminado: ver defaults/main.yml)

  • dirección de un paquete comprimido tar o zip que contiene los binarios de geth. Este método soporta técnicamente la instalación de cualquier versión disponible de geth. Los enlaces a versiones oficiales se pueden encontrar aquí.

install_dir: </ruta/al/directorio/de/instalación> (predeterminado: ver defaults/main.yml | vars/...)

  • ruta en el host de destino donde los binarios de geth deben ser extraídos

Configuración

La configuración del cliente geth puede expresarse en un archivo de configuración escrito en TOML, un lenguaje de marcado minimalista, utilizado como alternativa a pasar opciones de línea de comandos en tiempo de ejecución. Para tener una idea de cómo debe ser la configuración, puede usar el subcomando geth dumpconfig para exportar la configuración existente de un cliente.

Las siguientes variables se pueden personalizar para gestionar la ubicación y contenido de esta configuración TOML:

config_dir: </ruta/al/directorio/de/configuración> (predeterminado: /etc/geth)

  • ruta en el host de destino donde la configuración TOML de geth debe almacenarse

geth_config: {"<sección-de-configuración>": {"<ajuste-de-sección>": "<valor-de-configuración>",..},..} predeterminado: ver defaults/main.yml

  • Cualquier ajuste/valor de configuración clave-valor soportado por geth debería poder expresarse dentro del hash geth_config y estar correctamente representado en la configuración TOML asociada. Los valores pueden expresarse en forma típica yaml/ansible (por ejemplo, Cadenas, números y valores verdadero/falso deben escribirse tal como están y sin comillas).

    Además, la configuración no está limitada por valores predeterminados definidos por el autor o limitada por plantillas predefinidas. Si la sección de configuración, ajuste y valor son reconocidos por la herramienta geth, :thumbsup: se puede definir dentro de geth_config.

    Una lista de configuraciones ajustables se puede encontrar aquí.

    Las claves del hash geth_config representan secciones de configuración TOML:

    geth_config:
      # [Sección TOML 'Shh']
      Shh: {}
    

    Los valores de geth_config[<clave>] representan pares clave-valor dentro de un hash embebido que expresa ajustes de configuración:

    geth_config:
      # Sección TOML '[Shh]'
      Shh:
        # Ajuste de sección MaxMessageSize con valor de 1048576
        MaxMessageSize: 1048576
    

Ejecución

Ejecutar el cliente geth y el servidor API, ya sea en su forma RPC, IPC o WS-RPC, se logra utilizando las herramientas de gestión de servicios systemd o launchd, para plataformas Linux y MacOS respectivamente. Se lanzan como procesos en segundo plano o demonios, sujetos a la configuración y el potencial de ejecución proporcionado por los marcos de gestión subyacentes; el cliente geth y los servidores API se pueden configurar para adherirse a las políticas administrativas del sistema adecuadas para su entorno y organización.

Las siguientes variables se pueden personalizar para gestionar el perfil/política de ejecución de Geth:

extra_run_args: <opciones-cli-de-geth> (predeterminado: ver defaults/main.yml)

  • lista de argumentos de línea de comandos de geth para pasar al binario en tiempo de ejecución y personalizar el lanzamiento.

Soportando la expresión completa de la CLI de geth, esta variable permite que el rol de los hosts objetivo se personalice de acuerdo a la especificación del usuario; ya sea activar un listener de protocolo API particular, conectarse a una red Ethereum de prueba o producción preconfigurada o cualquier otra cosa soportada por geth.

Una lista de opciones de línea de comandos disponibles se puede encontrar aquí.

Ejemplos

Conectar a la red de prueba preconfigurada Ropsten PoW (prueba de trabajo) o Rinkeby PoA (prueba de autoridad):

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

Mejorar el registro y las capacidades de depuración para solucionar problemas:

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

Habilitar el perfilado del cliente y del servidor para propósitos de análisis y pruebas:

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

custom_unit_properties: <hash-de-ajustes-del-servicio-systemd> (predeterminado: [])

  • hash de ajustes utilizados para personalizar la configuración de la unidad [Service] y el entorno de ejecución del servicio systemd de Geth.

Desinstalación

El soporte para desinstalar y eliminar artefactos necesarios para la provisión permite a los usuarios/operadores devolver un host de destino a su estado configurado antes de la aplicación de este rol. Esto puede ser útil para reciclar nodos y roles y quizás proporcionar transiciones más suaves/gestionadas entre actualizaciones de herramientas.

Las siguientes variable(s) se pueden personalizar para gestionar este proceso de desinstalación:

perform_uninstall: <true | false> (predeterminado: false)

  • si desinstalar y eliminar todos los artefactos y restos de esta instalación de geth en un host de destino (ver: handlers/main.yml para más detalles)

Dependencias

  • 0x0i.systemd

Ejemplo de Playbook

Configuración básica con valores predeterminados:

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

Lanzar un cliente ligero de Ethereum y conectarlo a la red de prueba Rinkeby PoA (Prueba de Autoridad):

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

Ejecutar un nodo completo de Ethereum utilizando el modo de sincronización "rápido" (solo procesar las transacciones más recientes), habilitando tanto la interfaz del servidor RPC como el minero cliente y sobrescribiendo el directorio de datos (bloques):

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

Licencia

MIT

Información del Autor

Este rol fue creado en 2019 por O1.IO.

Acerca del proyecto

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

Instalar
ansible-galaxy install 0x0i.geth
Licencia
Unknown
Descargas
136
Propietario