0x0i.lotus
Rol de Ansible :cherry_blossom: :link: Lotus
Índice
- Plataformas Soportadas
- Requisitos
- Variables del Rol
- Dependencias
- Ejemplo de Playbook
- Licencia
- Información del Autor
Rol de Ansible que instala y configura Lotus: una implementación en Go del protocolo blockchain de la red de almacenamiento distribuido Filecoin.
Plataformas Soportadas:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
Requisitos
Se requiere que el utilitario unzip/gtar
esté instalado en el host de destino. Vea las notas del módulo unarchive
de ansible aquí para más detalles.
Variables del Rol
Las variables están disponibles y organizadas de acuerdo con las siguientes etapas de provisión de software y máquina:
- instalar
- configurar
- lanzar
- desinstalar
Instalar
lotus_user: <nombre-de-usuario-del-servicio>
(predeterminado: lotus)
- usuario y grupo de servicio dedicados usados por
lotus
para la separación de privilegios (vea aquí para más detalles)
install_type: <archivo | fuente>
(predeterminado: archivo)
archivo: actualmente soportado por las distribuciones de Ubuntu y Fedora (debido a la disponibilidad de versiones >= 2.27 del paquete
glibc
GNU libc libraries -- vea aquí para la disponibilidad del paquete por distribución), la instalación de Lotus a través de archivos comprimidos resulta en la descarga directa de sus binarios de componente, el cliente de redlotus
y el software de mineríalotus-miner
, desde la URL del archivo comprimido especificado.nota: los binarios de instalación archivados se pueden obtener del sitio oficial de versiones o aquellos generados desde fuentes de desarrollo/ personalizadas.
fuente: construir los binarios del cliente de red lotus y del minero de almacenamiento desde la fuente. Este proceso de instalación consiste en clonar el repositorio alojado en github y compilar desde el código fuente usando directivas
make
. Vea aquí para más detalles sobre la construcción desde la fuente.
install_dir: </ruta/a/directorio/de/instalación>
(predeterminado: /opt/lotus
)
- ruta en el host de destino donde deben extraerse los binarios de
lotus
.
include_benchmarks: <true|false>
(predeterminado: false
)
- para construir e instalar
lotus-bench
. Más información aquí.
archive_url: <ruta-o-url-al-archivo>
(predeterminado: ver defaults/main.yml
)
- dirección de un archivo comprimido tar o zip que contiene los binarios de
lotus
. Este método admite técnicamente la instalación de cualquier versión disponible delotus
. Los enlaces a versiones oficiales se pueden encontrar aquí.
archive_checksum: <ruta-o-url-al-checksum>
(predeterminado: ver defaults/main.yml
)
- dirección de un archivo de suma de verificación para verificar la integridad de los datos del archivo especificado. Aunque se recomienda y generalmente se considera una buena práctica, especificar una suma de verificación no es obligatorio y se puede desactivar proporcionando una cadena vacía (
''
) como su valor.
checksum_format: <cadena>
(predeterminado: ver sha512
)
- algoritmo de hash utilizado para la verificación de archivos asociado con la suma de verificación del archivo o paquete especificado. Consulte aquí para más información sobre sumas de verificación/hash criptográficos.
git_url: <ruta-o-url-al-repo-git>
(predeterminado: ver defaults/main.yml
)
- dirección del repositorio git de
lotus
. La dirección puede referirse al sitio de Github o a una fuente personalizada alojada en un sitio de git diferente.
git_version: <cadena>
(predeterminado: v0.1.0
)
- versión del repositorio para extraer. Puede ser la cadena literal HEAD, un nombre de rama o un nombre de etiqueta.
lotus_path: </ruta/a/directorio/de/ejecución>
(predeterminado: /opt/lotus/.lotus
)
- ruta en el host de destino que el servicio
lotus
debe establecer como su directorio de configuración de tiempo de ejecución y datos.
lotus_storage_path: </ruta/a/directorio/de/datos-del-minero>
(predeterminado: /opt/lotus/.lotusstorage
)
- ruta en el host de destino que el servicio
lotus-miner
debe establecer como su directorio de almacenamiento de datos y tiempo de ejecución.
go_autoinstall: <true|false>
(predeterminado: false
)
- instalar automáticamente la versión especificada de los paquetes y binarios de Go. Útil al instalar desde la fuente que requiere
go
como parte de su proceso de compilación.
go_url: <ruta-o-url-al-archivo>
(predeterminado: ver defaults/main.yml
)
- dirección de un archivo comprimido tar o zip que contiene los binarios de
go
o la fuente para compilación. Este método admite técnicamente la instalación de cualquier versión disponible dego
. Los enlaces a versiones oficiales se pueden encontrar aquí.
go_install_dir: </ruta/a/directorio/de/instalación>
(predeterminado: /usr/local
)
- ruta en el host de destino donde deben extraerse los binarios de
go
.
Configurar
La configuración del cliente lotus
se puede expresar en un archivo de configuración escrito en TOML, un lenguaje de marcado mínimo. Nota: Este archivo se puede encontrar en el directorio especificado por las variables de entorno LOTUS_PATH
(para el cliente/servicio lotus) o LOTUS_STORAGE_PATH
(para el minero lotus). Para tener una idea de las opciones de configuración disponibles, consulte este ejemplo (instalado por defecto).
Las siguientes variables se pueden personalizar para manejar el contenido de esta configuración TOML:
config: {"<sección-de-configuración>": {"<configuración-sección>": "<valor-configuración>",..},..}
predeterminado: ver defaults/main.yml
Cualquier configuración de clave/valor que sea compatible con
lotus
debe poder expresarse dentro del hashconfig
y renderizarse correctamente dentro de la configuración TOML asociada. Los valores se pueden expresar en forma típica de yaml/ansible (por ejemplo, Cadenas, números y valores verdadero/falso deben escribirse tal cual y sin comillas).Además, la configuración no está restringida por valores predeterminados definidos por el autor ni limitada por plantillas predefinidas. Si la sección de configuración, configuración y valor son reconocidos por la herramienta
lotus
, :thumbsup: se pueden definir dentro deconfig
.Las claves del hash
config
representan secciones de configuración TOML:config: # [Sección TOML 'API'] API: {}
Los valores de
config[<clave>]
representan pares clave-valor dentro de un hash incrustado que expresa la configuración:config: # Sección TOML '[API]' API: # Configuración de la sección ListenAddress con valor de localhost enlazando en el puerto 1234 ListenAddress: "/ip4/127.0.0.1/tcp/1234/http"
Lanzar
extra_run_args: <opciones-de-línea-de-comando-lotus-cli>
(predeterminado: []
)
- lista de argumentos de línea de comando
lotus daemon
que se pasarán al binario en tiempo de ejecución para personalizar el lanzamiento. Admite la expresión completa del cli delotus daemon
, esta variable permite personalizar el lanzamiento según la especificación del usuario.
extra_miner_args: <opciones-de-línea-de-comando-lotus-miner-cli>
(predeterminado: []
)
- lista de argumentos de línea de comando
lotus-miner run
que se pasarán al binario en tiempo de ejecución para personalizar el lanzamiento. Admite la expresión completa del cli delotus-miner run
, esta variable permite personalizar el lanzamiento según la especificación del usuario.
custom_unit_properties: <hash-de-configuraciones-del-servicio-systemd>
(predeterminado: []
)
- hash de configuraciones utilizadas para personalizar la configuración y el entorno de ejecución de la unidad de servicio Lotus systemd.
custom_miner_properties: <hash-de-configuraciones-del-servicio-systemd>
(predeterminado: []
)
- hash de configuraciones utilizadas para personalizar la configuración y el entorno de ejecución de la unidad de servicio Lotus Storage Miner systemd.
Ejemplo
custom_unit_properties:
Environment: "LOTUS_PATH=/var/data/lotus"
custom_miner_properties:
Environment: "LOTUS_STORAGE_PATH=/var/data/lotus-miner"
Para establecer múltiples variables de entorno, deben separarse por espacios:
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"
Consulte la página del manual systemd.service para una visión general y referencia de configuración.
Desinstalar
perform_uninstall: <true | false>
(predeterminado: false
)
- si debe desinstalar y eliminar todos los artefactos y restos de esta instalación de
lotus
en un host de destino (ver:handlers/main.yml
para detalles)
Dependencias
- 0x0i.systemd
Ejemplo de Playbook
ejemplo predeterminado:
- hosts: all
roles:
- role: 0x0I.lotus
instalar lotus
desde la versión fuente de git especificada:
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
git_url: https://github.com/filecoin-project/lotus.git
git_version: v0.1.1
instalar lotus
para la red de calibración
; incluir extensiones SHA; incluir rust; incluir lotus-bench
:
- hosts: all
roles:
- ansible-rustup
- hosts: all
environment:
# Extensiones SHA
RUSTFLAGS: "-C target-cpu=native -g"
FFI_BUILD_FROM_SOURCE: 1
vars:
# Ruta para 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
exponer el servidor API/JSON-RPC de lotus
en una dirección que no sea de loopback (comodín/*)
- 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"]
lanzar el servicio lotus
y los agentes lotus-miner
con rutas de almacenamiento/configuración de tiempo de ejecución personalizadas y opciones de lanzamiento:
- 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
Licencia
MIT
Información del Autor
Este rol fue creado en 2019 por O1.IO.
Lotus, an implementation of the Filecoin distributed storage network protocol written in Go
ansible-galaxy install 0x0i.lotus