0x0i.lotus

logo ansible

logo lotus

Rôle Ansible :cherry_blossom: :link: Lotus

Rôle Galaxy Dernière version GitHub Licence : MIT

Table des Matières

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'extraction lotus-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 de lotus. 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 hachage config 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 dans config.

    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 de lotus 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 de lotus-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.

À propos du projet

Lotus, an implementation of the Filecoin distributed storage network protocol written in Go

Installer
ansible-galaxy install 0x0i.lotus
Licence
Unknown
Téléchargements
70
Propriétaire