0x0i.lotus
Rôle Ansible :cherry_blossom: :link: Lotus
Table des Matières
- Plateformes Supportées
- Exigences
- Variables de Rôle
- Dépendances
- Exemple de Playbook
- Licence
- Informations sur l’Auteur
Rôle Ansible qui installe et configure Lotus : une implémentation Go du protocole blockchain de réseau de stockage distribué Filecoin.
Plateformes Supportées:
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu
Exigences
Nécessite l'utilitaire unzip/gtar
installé sur l'hôte cible. Voir les notes du module ansible unarchive
pour plus de détails.
Variables de Rôle
Les variables sont disponibles et organisées selon les étapes suivantes de provisionnement logiciel et machine :
- installation
- configuration
- lancement
- désinstallation
Installation
lotus_user: <nom-utilisateur-service>
(par défaut : lotus)
- utilisateur et groupe de service dédiés utilisés par
lotus
pour la séparation des privilèges (voir ici pour plus de détails)
install_type: <archive | source>
(par défaut : archive)
archive : actuellement supporté par les distributions Ubuntu et Fedora (en raison de la disponibilité de la version >= 2.27 du paquet glibc GNU libc libraries -- voir ici pour la disponibilité des paquets par distribution) et compatible avec les formats tar et zip, l'installation de Lotus via des archives compressées entraîne le téléchargement direct de ses exécutables, le client réseau
lotus
et le logiciel d'extractionlotus-miner
, à partir de l'URL d'archive spécifiée.remarque : les binaires d'installation archivés peuvent être obtenus depuis le site officiel releases ou ceux générés à partir de sources de développement/personnalisées.
source : construire les binaires client réseau lotus et mineur de stockage à partir des sources. Ce processus d'installation consiste à cloner le répertoire hébergé sur Github et à construire à partir du code source à l'aide des directives
make
. Voir ici pour plus de détails sur la construction à partir des sources.
install_dir: </chemin/vers/le/répertoire/d'installation>
(par défaut : /opt/lotus
)
- chemin sur l'hôte cible où les binaires
lotus
doivent être extraits.
include_benchmarks: <true|false>
(par défaut : false
)
- pour construire et installer
lotus-bench
. Plus d'informations ici.
archive_url: <chemin-ou-url-vers-l'archive>
(par défaut : voir defaults/main.yml
)
- adresse d'une archive compressée tar ou zip contenant les binaires
lotus
. Cette méthode supporte techniquement l'installation de n'importe quelle version disponible delotus
. Les liens vers des versions officielles peuvent être trouvés ici.
archive_checksum: <chemin-ou-url-vers-le-checksum>
(par défaut : voir defaults/main.yml
)
- adresse d'un fichier de checksum pour vérifier l'intégrité des données de l'archive spécifiée. Bien que recommandé et généralement considéré comme une bonne pratique, spécifier un checksum n'est pas obligatoire et peut être désactivé en fournissant une chaîne vide (
''
) pour sa valeur.
checksum_format: <chaîne>
(par défaut : voir sha512
)
- algorithme de hachage utilisé pour la vérification de fichier associé au checksum de l'archive ou du paquet spécifié. Référence ici pour plus d'informations sur les checksums/cryptographic hashes.
git_url: <chemin-ou-url-vers-le-répertoire-git>
(par défaut : voir defaults/main.yml
)
- adresse du dépôt git
lotus
. L'adresse peut faire référence à celle du site Github ou à une source personnalisée hébergée sur un autre site Git.
git_version: <chaîne>
(par défaut : v0.1.0
)
- version du dépôt à vérifier. Cela peut être la chaîne littérale HEAD, un nom de branche, un nom de tag.
lotus_path: </chemin/vers/le/répertoire/à/exécution>
(par défaut : /opt/lotus/.lotus
)
- chemin sur l'hôte cible que le service
lotus
doit établir comme son répertoire de configuration et de données d'exécution.
lotus_storage_path: </chemin/vers/le/répertoire/de/données/miner>
(par défaut : /opt/lotus/.lotusstorage
)
- chemin sur l'hôte cible que le service
lotus-miner
doit établir comme son répertoire d'exécution et de stockage des données.
go_autoinstall: <true|false>
(par défaut : false
)
- installer automatiquement la version spécifiée des paquets et binaires Go. Utile lors de l'installation à partir de sources qui requièrent
go
comme partie de leur processus de construction.
go_url: <chemin-ou-url-vers-l'archive>
(par défaut : voir defaults/main.yml
)
- adresse d'une archive compressée tar ou zip contenant des binaires ou sources Go pour la compilation. Cette méthode supporte techniquement l'installation de n'importe quelle version disponible de
go
. Les liens vers des versions officielles peuvent être trouvés ici.
go_install_dir: </chemin/vers/le/répertoire/d'installation>
(par défaut : /usr/local
)
- chemin sur l'hôte cible où les binaires
go
doivent être extraits.
Configuration
La configuration du client lotus
peut s'exprimer dans un fichier de configuration écrit en TOML, un langage de balisage minimal. Remarque : Ce fichier peut être trouvé sous le répertoire spécifié par les variables d'environnement LOTUS_PATH
(pour le client/service lotus) ou LOTUS_STORAGE_PATH
(pour le mineur lotus). Pour avoir une idée des options de configuration disponibles, référez-vous à cet exemple (installé par défaut).
Les variables suivantes peuvent être personnalisées pour gérer le contenu de cette configuration TOML :
config: {"<section-config>": {"<setting-section>": "<valeur-setting>",..},..}
par défaut : voir defaults/main.yml
Toute paire clé/valeur de configuration supportée par
lotus
devrait pouvoir s'exprimer dans le hachageconfig
et être correctement rendue dans la configuration TOML associée. Les valeurs peuvent être exprimées sous forme typique yaml/ansible (par exemple, chaînes, nombres et valeurs vrai/faux doivent être écrites telles quelles et sans guillemets).En outre, la configuration n'est pas contrainte par des valeurs par défaut définies par l'auteur ou limitée par des modèles préfabriqués. Si la section de configuration, le paramètre et la valeur sont reconnus par l'outil
lotus
, :thumbsup: à définir dansconfig
.Les clés du hachage
config
représentent les sections de configuration TOML :config: # [Section TOML 'API'] API: {}
Les valeurs de
config[<key>]
représentent des paires clé, valeur dans un hachage imbriqué exprimant les paramètres de configuration :config: # Section TOML '[API]' API: # Paramètre de section ListenAddress avec valeur de localhost lié au port 1234 ListenAddress: "/ip4/127.0.0.1/tcp/1234/http"
Lancement
extra_run_args: <options-lotus-cli>
(par défaut : []
)
- liste des arguments de ligne de commande pour
lotus daemon
à passer à l'exécutable au moment de l'exécution pour personnaliser le lancement. Supporte l'expression complète du cli delotus daemon
, cette variable permet de personnaliser le lancement selon les spécifications de l'utilisateur.
extra_miner_args: <options-lotus-miner-cli>
(par défaut : []
)
- liste des arguments de ligne de commande pour
lotus-miner run
à passer à l'exécutable au moment de l'exécution pour personnaliser le lancement. Supporte l'expression complète du cli delotus-miner run
, cette variable permet de personnaliser le lancement selon les spécifications de l'utilisateur.
custom_unit_properties: <hachage-des-paramètres-service-systemd>
(par défaut : []
)
- hachage des paramètres utilisés pour personnaliser la configuration de l'unité
[Service]
et l'environnement d'exécution du service Lotus systemd.
custom_miner_properties: <hachage-des-paramètres-service-systemd>
(par défaut : []
)
- hachage des paramètres utilisés pour personnaliser la configuration de l'unité
[Service]
et l'environnement d'exécution du service Lotus Storage Miner systemd.
Exemple
custom_unit_properties:
Environment: "LOTUS_PATH=/var/data/lotus"
custom_miner_properties:
Environment: "LOTUS_STORAGE_PATH=/var/data/lotus-miner"
Pour définir plusieurs variables d'environnement, elles doivent être séparées par des espaces :
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"
Référez-vous à la page de manuel systemd.service pour un aperçu et des références de configuration.
Désinstallation
perform_uninstall: <true | false>
(par défaut : false
)
- indique s'il faut désinstaller et supprimer tous les artefacts et résidus de cette installation
lotus
sur un hôte cible (voir :handlers/main.yml
pour plus de détails)
Dépendances
- 0x0i.systemd
Exemple de Playbook
exemple par défaut :
- hosts: all
roles:
- role: 0x0I.lotus
installer lotus
à partir d'une version git spécifiée :
- hosts: all
roles:
- role: 0x0I.lotus
vars:
install_type: source
git_url: https://github.com/filecoin-project/lotus.git
git_version: v0.1.1
installer lotus
pour le réseau calibration
; inclure les extensions SHA ; inclure rust ; inclure lotus-bench
:
- hosts: all
roles:
- ansible-rustup
- hosts: all
environment:
# Extensions SHA
RUSTFLAGS: "-C target-cpu=native -g"
FFI_BUILD_FROM_SOURCE: 1
vars:
# Chemin pour 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
exposer le serveur API/JSON-RPC de lotus
sur une adresse non-loopback (wildcard/*)
- 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"]
lancer le service lotus
et les agents lotus-miner
avec des chemins d'exécution/de stockage personnalisés et des options de lancement :
- 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: "mon_mineur"
extra_run_args: ['--bootstrap']
extra_miner_args: ['--nosync']
custom_miner_properties:
LimitDATA: 1T
Licence
MIT
Informations sur l’Auteur
Ce rôle a été créé en 2019 par O1.IO.
Lotus, an implementation of the Filecoin distributed storage network protocol written in Go
ansible-galaxy install 0x0i.lotus