geth
Роль Ansible :computer: :link: Geth
Содержание
- Поддерживаемые платформы
- Требования
- Переменные роли
- Зависимости
- Пример плейбука
- Лицензия
- Информация об авторе
Роль Ansible, которая устанавливает, настраивает и запускает Geth: интерфейс командной строки и API сервер для работы с узлом Ethereum.
Поддерживаемые платформы:
* Debian
* MacOS
* Redhat(CentOS/Fedora)
* Ubuntu
Требования
Необходимо установить утилиту unzip/gtar
на целевом хосте. Для подробностей смотрите примечания к модулю ansible unarchive
здесь.
Переменные роли
Переменные доступны и организованы в соответствии со следующими этапами установки и настройки ПО:
- установка
- настройка
- запуск
- удаление
Установка
geth
может быть установлен с помощью систем управления пакетами ОС (например, apt
, homebrew
) или из сжатых архивов (.tar
, .zip
), загруженных и распакованных из различных источников.
Следующие переменные можно настроить для управления различными аспектами этого процесса установки, начиная от версии программного обеспечения и источника двоичных файлов до директории установки, где они будут храниться:
geth_user: <имя-пользователя-сервиса>
(по умолчанию: geth)
- выделенный пользователь и группа для
geth
, используемые для разделения привилегий (подробности здесь).
install_type: <package | archive>
(по умолчанию: archive)
- package: ПОДДЕРЖИВАЕТСЯ только для Ubuntu и MacOS. Установка пакета Geth загружает последнюю доступную версию для любой из платформ из Ubuntu PPA или из репозитория формул Mac Homebrew.
- Заметьте, что директория установки определяется системой управления пакетами и по умолчанию составляет
/usr/bin/geth
для Linux и/usr/local/bin/geth
для MacOS.
- Заметьте, что директория установки определяется системой управления пакетами и по умолчанию составляет
- archive: совместим с обеими tar и zip форматами, двоичные файлы для установки можно получить из локальных и удалённых сжатых архивов, как с официального сайта загрузки/релизов, так и из кастомных версий инструмента.
archive_url: <путь-или-url-к-архиву>
(по умолчанию: смотрите defaults/main.yml
)
- адрес сжатого tar или zip пакета, содержащего двоичные файлы
geth
. Этот метод технически поддерживает установку любой доступной версииgeth
. Ссылки на официальные версии можно найти здесь.
install_dir: </путь/к/директории/установки>
(по умолчанию: смотрите defaults/main.yml | vars/...
)
- путь на целевом хосте, куда должны быть распакованы двоичные файлы
geth
.
Настройки
Конфигурация клиента geth
может быть выражена в конфигурационном файле, написанном на TOML, минимальном языке разметки, используемом вместо передачи флагов командной строки во время выполнения. Чтобы понять, как должна выглядеть конфигурация, можно использовать подкоманду geth dumpconfig
для экспорта существующей конфигурации клиента.
Следующие переменные можно настроить, чтобы управлять расположением и содержимым этой TOML конфигурации:
config_dir: </путь/к/директории/конфигурации>
(по умолчанию: /etc/geth
)
- путь на целевом хосте, где должна храниться TOML конфигурация
geth
.
geth_config: {"<раздел-конфигурации>": {"<параметр-раздела>": "<значение-настроек>",..},..}
по умолчанию: смотрите defaults/main.yml
Любая пара ключ/значение для настроек, поддерживаемых
geth
, должна быть выражена в хэшеgeth_config
и корректно отображена в соответствующей конфигурации TOML. Значения могут быть записаны в типичном формате yaml/ansible (например, строки, числа и значения true/false записываются без кавычек).Кроме того, конфигурация не ограничена предопределёнными значениями по умолчанию или заранее заготовленными шаблонами. Если раздел конфигурации, параметр и значение распознаются инструментом
geth
, :thumbsup: можно определить вgeth_config
.Список настраиваемых параметров можно найти здесь.
Ключи хэша
geth_config
представляют разделы конфигурации TOML:geth_config: # [TOML Раздел 'Shh'] Shh: {}
Значения
geth_config[<ключ>]
представляют пары ключ, значение внутри встроенного хэша, выражающего настройки конфигурации:geth_config: # TOML Раздел '[Shh]' Shh: # Параметр раздела MaxMessageSize со значением 1048576 MaxMessageSize: 1048576
Запуск
Запуск клиента geth
и API сервера, либо в его форме RPC, IPC или WS-RPC, осуществляется с использованием инструментов управления службами systemd для Linux и launchd для MacOS. Запускается как фоновый процесс или демон, подчиняясь конфигурации и возможностям выполнения, предоставленным управляемыми фреймворками. Клиент geth
и API сервера могут быть настроены в соответствии с политиками системного администрирования, подходящими для вашей среды и организации.
Следующие переменные можно настроить для управления профилем/политикой выполнения Geth:
extra_run_args: <аргументы-CLI-geth>
(по умолчанию: смотрите defaults/main.yml
)
- список аргументов командной строки
geth
, которые передаются двоичному файлу во время выполнения для настройки запуска.
Поддерживая полное выражение CLI geth
, эта переменная позволяет настраивать роли целевых хостов в соответствии со спецификациями пользователя; например, активировать конкретный слушатель API, подключиться к заранее настроенной тестовой или производственной сети Ethereum или что угодно, что поддерживается 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>
(по умолчанию: []
)
- хэш настроек, используемых для настройки конфигурации и среды выполнения юнита
[Service]
сервиса Geth systemd.
Удаление
Поддержка удаления и удаления артефактов, необходимых для настройки, позволяет пользователям/операторам вернуть целевой хост к его первоначальному состоянию до применения этой роли. Полезно для переработки узлов и ролей и, возможно, для более плавных/управляемых переходов между обновлениями инструментов.
Следующая(ие) переменная(ые) могут быть настроены для управления процессом удаления:
perform_uninstall: <true | false>
(по умолчанию: false
)
- указывает, следует ли удалить и удалить все артефакты и остатки установки
geth
на целевом хосте (смотрите:handlers/main.yml
для подробностей).
Зависимости
- 0x0i.systemd
Пример плейбука
Базовая настройка с настройками по умолчанию:
- hosts: all
roles:
- role: 0x0I.geth
Запуск Ethereum легкого клиента и подключение его к сети тестирования Rinkeby PoA (доказательство полномочий):
- hosts: light-client
roles:
- role: 0x0I.geth
vars:
geth_config:
Eth:
SyncMode: light
extra_run_args:
- --rinkeby
Запуск полного узла Ethereum с использованием режима синхронизации "быстрый" (обработка только самых последних транзакций), включив как интерфейс сервера 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
Информация об авторе
Эта роль была создана в 2019 году компанией O1.IO.
Geth (Go-Ethereum), a Go-based Ethereum client installation for Linux and MacOs.
ansible-galaxy install 0x0I/ansible-role-geth