0x0i.geth
Rol de Ansible :computer: :link: Geth
Tabla de Contenidos
- Plataformas Soportadas
- Requisitos
- Variables del Rol
- Dependencias
- Ejemplo de Playbook
- Licencia
- Información del Autor
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.
- 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
- 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 degeth
. 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 hashgeth_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 degeth_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.
Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.
ansible-galaxy install 0x0i.geth