lotus
Роль Ansible :цветок-вишни: :ссылка: Lotus
Содержание
- Поддерживаемые платформы
- Требования
- Переменные роли
- Зависимости
- Пример плейбука
- Лицензия
- Информация об авторе
Роль Ansible для установки и настройки Lotus: реализации протокола блокчейн-сети Filecoin.
Поддерживаемые платформы:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
Требования
Необходима утилита unzip/gtar
, установленная на целевом хосте. См. примечания к модулю ansible unarchive
здесь для подробностей.
Переменные роли
Переменные доступны и организованы по следующим этапам установки и настройки:
- установка
- конфигурация
- запуск
- удаление
Установка
lotus_user: <имя-пользователя-сервиса>
(по умолчанию: lotus)
- специальный пользователь и группа, используемые
lotus
для разделения привилегий (подробности здесь)
install_type: <архив | источник>
(по умолчанию: архив)
архив: поддерживается текущими версиями дистрибутивов Ubuntu и Fedora (из-за доступности версии >= 2.27 пакета
glibc
GNU libc libraries -- см. здесь для проверки доступности пакетов) и совместим с форматами tar и zip. Установка Lotus через сжатые архивы ведёт к непосредственному скачиванию его компонентов, клиентов сетиlotus
и программного обеспечения для майнингаlotus-miner
, по указанному url-адресу архива.примечание: архивированные установочные бинарные файлы можно получить на официальном сайте выпусков или тех, которые генерируются с разработки/индивидуальных источников.
источник: сборка бинарных файлов клиента сети lotus и майнера хранилища. Этот процесс установки включает клонирование репозитория на github репозитория и сборку из исходного кода с использованием директив
make
. Подробности о сборке из исходников можно найти здесь.
install_dir: </путь/к/директории/установки>
(по умолчанию: /opt/lotus
)
- путь на целевом хосте, куда должны быть извлечены бинарные файлы
lotus
.
include_benchmarks: <true|false>
(по умолчанию: false
)
- для сборки и установки
lotus-bench
. Более подробная информация здесь.
archive_url: <путь-или-url-архива>
(по умолчанию: см. defaults/main.yml
)
- адрес сжатого tar или zip архива, содержащего бинарные файлы
lotus
. Этот метод позволяет устанавливать любую доступную версиюlotus
. Ссылки на официальные версии можно найти здесь.
archive_checksum: <путь-или-url-контрольной-суммы>
(по умолчанию: см. defaults/main.yml
)
- адрес контрольной суммы файла для проверки целостности данных указанного архива. Хотя это рекомендуется и считается лучшей практикой, указание контрольной суммы не требуется и может быть отключено, если указать пустую строку (
''
) в качестве значения.
checksum_format: <строка>
(по умолчанию: см. sha512
)
- алгоритм хеширования, используемый для проверки файлов, связанного с контрольной суммой указанного архива или пакета. Ссылка здесь для получения дополнительной информации о контрольных суммах/криптографических хешах.
git_url: <путь-или-url-к git-репозиторию>
(по умолчанию: см. defaults/main.yml
)
- адрес git-репозитория
lotus
. Адрес может указывать на Github или индивидуальный источник на альтернативном сайте хостинга git.
git_version: <строка>
(по умолчанию: v0.1.0
)
- версия репозитория, которую нужно проверить. Это может быть строка HEAD, имя ветки или тег.
lotus_path: </путь/к/директории/времени/выполнения>
(по умолчанию: /opt/lotus/.lotus
)
- путь на целевом хосте, который сервис
lotus
должен установить как свой путь конфигурации и директорию данных во время выполнения.
lotus_storage_path: </путь/к/майнеру/директории-данных>
(по умолчанию: /opt/lotus/.lotusstorage
)
- путь на целевом хосте, который сервис
lotus-miner
должен установить как свою директорию хранения данных и конфигурации во время выполнения.
go_autoinstall: <true|false>
(по умолчанию: false
)
- автоматически установить указанную версию пакетов и бинарных файлов Go. Полезно при установке из источника, который требует
go
в процессе сборки.
go_url: <путь-или-url-архива>
(по умолчанию: см. defaults/main.yml
)
- адрес сжатого tar или zip архива, содержащего бинарные файлы или источник для компиляции Go. Этот метод позволяет устанавливать любую доступную версию
go
. Ссылки на официальные версии можно найти здесь.
go_install_dir: </путь/к/директории/установки>
(по умолчанию: /usr/local
)
- путь на целевом хосте, куда должны быть извлечены бинарные файлы
go
.
Конфигурация
Конфигурация клиента lotus
может быть представлена в конфигурационном файле, написанном на TOML, минимальном языке разметки. Примечание: Этот файл можно найти в директории, указанной переменными окружения LOTUS_PATH
(для клиента/сервиса lotus) или LOTUS_STORAGE_PATH
(для майнера lotus). Для представления доступных параметров конфигурации, см. этот пример (устанавливается по умолчанию).
Следующие переменные могут быть настроены для управления содержанием этой TOML конфигурации:
config: {"<раздел-конфигурации>": {"<настройка-раздела>": "<значение-настройки>",..},..}
по умолчанию: см. defaults/main.yml
Любая настройка/значение пары ключей, поддерживаемая
lotus
, должна быть представлена в хэшеconfig
и корректно обработана в связанной TOML конфигурации. Значения могут быть выражены в типичной yaml/ansible форме (например, строки, числа и значения true/false следует записывать как есть без кавычек).Более того, конфигурация не ограничивается жестко запрограммированными значениями по умолчанию или ограничена предустановленными шаблонами. Если раздел конфигурации, настройка и значение признаны инструментом
lotus
, :thumbsup: их можно определять вconfig
.Ключи хэша
config
представляют разделы TOML конфигурации:config: # [TOML Раздел 'API'] API: {}
Значения
config[<key>]
представляют пары ключ-знание внутри встроенного хэша, выражающего настройки конфигурации:config: # TOML Раздел '[API]' API: # Настройка раздела ListenAddress со значением localhost, привязанным на порту 1234 ListenAddress: "/ip4/127.0.0.1/tcp/1234/http"
Запуск
extra_run_args: <опции-lotus-cli>
(по умолчанию: []
)
- список аргументов командной строки
lotus daemon
, которые нужно передать бинарному файлу во время выполнения для настройки запуска. Поддерживает полное выражение clilotus daemon
, эта переменная позволяет настроить запуск в соответствии с требованиями пользователя.
extra_miner_args: <опции-lotus-miner-cli>
(по умолчанию: []
)
- список аргументов командной строки
lotus-miner run
, которые нужно передать бинарному файлу во время выполнения для настройки запуска. Поддерживает полное выражение clilotus-miner run
, эта переменная позволяет настроить запуск в соответствии с требованиями пользователя.
custom_unit_properties: <хэш-настроек-systemd-сервиса>
(по умолчанию: []
)
- хэш настроек, используемых для настройки конфигурации и среды выполнения юнита Lotus systemd сервиса.
custom_miner_properties: <хэш-настроек-systemd-сервиса>
(по умолчанию: []
)
- хэш настроек, используемых для настройки конфигурации и среды выполнения юнита Lotus Storage Miner systemd сервиса.
Пример
custom_unit_properties:
Environment: "LOTUS_PATH=/var/data/lotus"
custom_miner_properties:
Environment: "LOTUS_STORAGE_PATH=/var/data/lotus-miner"
Чтобы задать несколько переменных окружения, они должны быть разделены пробелами:
custom_unit_properties:
Environment: "BELLMAN_CPU_UTILIZATION=0.875 FIL_PROOFS_MAXIMIZE_CACHING=1 FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1"
custom_miner_properties:
Environment: "BELLMAN_CPU_UTILIZATION=0.875 FIL_PROOFS_MAXIMIZE_CACHING=1 FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1"
Сослаться на systemd.service man страницу для общего обзора конфигурации и ссылок.
Удаление
perform_uninstall: <true | false>
(по умолчанию: false
)
- следует ли удалить и удалить все артефакты и остатки установки
lotus
на целевом хосте (см.handlers/main.yml
для подробностей)
Зависимости
- 0x0i.systemd
Пример плейбука
умолчаная установка:
- hosts: all
roles:
- role: 0x0I.lotus
установить lotus
из указанной версии git:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
git_url: https://github.com/filecoin-project/lotus.git
git_version: v0.1.1
установить lotus
для сети calibration
; включить расширения SHA; включить rust; включить lotus-bench
:
- hosts: all
roles:
- ansible-rustup
- hosts: all
environment:
# Расширения SHA
RUSTFLAGS: "-C target-cpu=native -g"
FFI_BUILD_FROM_SOURCE: 1
vars:
# Путь для rust/cargo
cargo_home: "{{ /home/{{ ansible_env.HOME }}/.cargo }}"
roles:
- role: 0x0I.lotus
vars:
install_type: source
include_benchmarks: true
git_url: https://github.com/filecoin-project/lotus.git
git_version: ntwk-calibration
go_autoinstall: true
go_url: https://dl.google.com/go/go1.15.5.linux-amd64.tar.gz
выставить lotus
API/JSON-RPC сервер на не-обратном (шаблонном/*) адресе
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: archive
config:
API:
ListenAddress: /ip4/0.0.0.0/tcp/1234/http
LibP2P:
ListenAddresses: ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0"]
запустить сервис lotus
и агентов lotus-miner
с пользовательскими путями выполнения/хранения и параметрами запуска:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
lotus_path: /mnt/lotus
lotus_storage_path: /mnt/lotus/miner
managed_services: ['lotus', 'lotus-miner']
config:
Metrics:
Nickname: "my_miner"
extra_run_args: ['--bootstrap']
extra_miner_args: ['--nosync']
custom_miner_properties:
LimitDATA: 1T
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2019 году компанией O1.IO.
Lotus, an implementation of the Filecoin distributed storage network protocol written in Go
ansible-galaxy install 0x0I/ansible-role-lotus