0x0i.geth
Ansible 角色 :computer: :link: Geth
目录
Ansible 角色用于安装、配置和运行 Geth: 这是一个用于操作以太坊节点的命令行界面和API服务器。
支持的平台:
* Debian
* MacOS
* Redhat(CentOS/Fedora)
* Ubuntu
要求
需要在目标主机上安装 unzip/gtar
工具。查看 ansible unarchive
模块的 说明 以获取详细信息。
角色变量
变量可根据以下软件和机器配置阶段进行组织:
- install
- config
- launch
- uninstall
安装
geth
可以使用操作系统包管理系统(如 apt
、homebrew
)或从各种来源下载和解压的压缩档案(.tar
、.zip
)进行安装。
以下变量可进行自定义,以控制此安装过程的各个方面,包括软件版本和二进制文件的源位置以及存储二进制文件的安装目录:
geth_user: <服务用户名称>
(默认值: geth)
- 由
geth
使用的专用服务用户和组,用于权限分离(详情见 这里)
install_type: <package | archive>
(默认值: archive)
- package: 仅受支持于 Ubuntu 和 MacOS,Geth 的包安装从 Ubuntu PPA(个人包归档)或 Mac Homebrew 配方库 获取最新包。
- 注意,安装目录由包管理系统确定,当前在 Linux 上默认是
/usr/bin/geth
,在 MacOS 上是/usr/local/bin/geth
。
- 注意,安装目录由包管理系统确定,当前在 Linux 上默认是
- archive: 与 tar 和 zip 格式兼容,归档安装的二进制文件可以从官方下载/发布网站或开发或自定义版本的工具生成的本地和远程压缩档案中获得。
archive_url: <归档的路径或网址>
(默认值: 见 defaults/main.yml
)
- 包含
geth
二进制文件的压缩 tar 或 zip 包的地址。此方法在技术上支持安装任何可用版本的geth
。官方版本的链接可以在 这里 找到。
install_dir: </path/to/installation/dir>
(默认值: 见 defaults/main.yml | vars/...
)
- 在目标主机上提取
geth
二进制文件的路径
配置
geth
客户端的配置可以在 TOML 格式的配置文件中表达,这是一种用于替代运行时传递命令行参数的简化标记语言。要了解配置应如何看起来,可以使用 geth dumpconfig
子命令导出客户端的现有配置。
以下变量可进行自定义,以管理此 TOML 配置的位置和内容:
config_dir: </path/to/configuration/dir>
(默认值: /etc/geth
)
- 在目标主机上存储
geth
TOML 配置的路径
geth_config: {"<配置部分>": {"<部分设置>": "<设置值>",..},..}
默认值: 见 defaults/main.yml
任何
geth
支持的配置设置/值键对应在geth_config
哈希中均可表达,并正确呈现在关联的 TOML 配置中。值可以按照典型的 yaml/ansible 形式表达(例如,字符串、数字和真/假值应按原样书写,不带引号)。此外,配置不受硬编码的作者定义的默认值限制或预先构建的模板限制。如果配置部分、设置和值被
geth
工具识别, :thumbsup: 可在geth_config
中进行定义。可配置设置的列表可以在 这里 找到。
geth_config
哈希的键表示 TOML 配置部分:geth_config: # [TOML 部分 'Shh'] Shh: {}
geth_config[<key>]
的值表示嵌入哈希中的键值对,表达配置设置:geth_config: # TOML 部分 '[Shh]' Shh: # 部分设置 MaxMessageSize 的值为 1048576 MaxMessageSize: 1048576
启动
运行 geth
客户端和 API 服务器,既可以是其 RPC、IPC 还是 WS-RPC 形式,均可利用 systemd 或 launchd 服务管理工具,在 Linux 和 MacOS 平台上启动。作为后台进程或守护进程启动,受底层管理框架提供的配置和执行潜力的约束,geth
客户端和 API 服务器可设置为遵循您环境和组织中的系统管理策略。
以下变量可进行自定义,以管理 Geth 的执行配置/策略:
extra_run_args: <geth-cli-选项>
(默认值: 见 defaults/main.yml
)
- 在运行时传递给二进制文件的
geth
命令行参数列表,用于自定义启动。
支持完整表达 geth
的 cli,此变量使目标主机的角色能够根据用户的规范进行定制;无论是激活特定的 API 协议侦听器,连接到预配置的以太坊测试或生产网络,或任何 geth
支持的功能。
可用命令行选项的列表可以在 这里 找到。
示例
连接到 Ropsten PoW(工作量证明)或 Rinkeby PoA(权威证明)预配置测试网络:
extra_run_args:
- '--ropsten' # PoW
# ...或者...
extra_run_args:
- '--rinkeby' # PoA
增强日志记录和调试功能,以便排查问题:
extra_run_args:
- --debug
- '--verbosity 5'
- '--trace /tmp/geth.trace'
为分析和测试目的启用客户端和服务器的性能分析:
extra_run_args:
- --pprof
- '--memprofilerate 1048576'
- '--blockprofilerate 1'
- '--cpuprofile /tmp/geth-cpu-profile'
custom_unit_properties: <systemd服务设置的哈希>
(默认值: []
)
- 用于自定义 Geth systemd 服务的
[Service]
单元配置和执行环境的设置哈希。
卸载
支持卸载和移除必要工件,允许用户/操作人员将目标主机返回到应用此角色之前的配置状态。这在回收节点和角色时可能很有用,并且可能提供更优雅/管理的过渡。
以下变量可进行自定义,以管理此卸载过程:
perform_uninstall: <true | false>
(默认值: false
)
- 是否在目标主机上卸载并移除所有
geth
安装的工件和残余物(见:handlers/main.yml
获取详细信息)
依赖项
- 0x0i.systemd
示例剧本
基本设置,使用默认值:
- hosts: all
roles:
- role: 0x0I.geth
启动以太坊轻客户端并连接到 Rinkeby PoA(权威证明)测试网络:
- hosts: light-client
roles:
- role: 0x0I.geth
vars:
geth_config:
Eth:
SyncMode: light
extra_run_args:
- --rinkeby
使用“快速”同步模式运行完整的以太坊节点(仅处理最近的交易),启用 RPC 服务器接口和客户端挖矿,并覆盖(区块)数据目录:
- 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'
许可证
MIT
作者信息
此角色由 O1.IO 于 2019 年创建。