geth

логотип ansible

логотип ethereum

Роль Ansible :computer: :link: Geth

Galaxy Role GitHub release (latest by date) License: MIT

Содержание

Роль 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
Лицензия
Unknown
Загрузки
127
Владелец