Lorawan-stack: Fournir des packages système standard comme alternative à Docker

Créé le 2 févr. 2019  ·  10Commentaires  ·  Source: TheThingsNetwork/lorawan-stack

Sommaire:
Toutes les principales distributions Linux s'appuient sur des gestionnaires de packages pour installer des logiciels de manière contrôlée et sécurisée.

Cette proposition est que les packages sont créés dans les formats RPM , deb et opkg comme point de départ, avec des formats de package supplémentaires ajoutés ultérieurement.

Pourquoi avons nous besoin de ça?
De nombreuses entreprises empêchent git de se connecter à des serveurs autres que les leurs et peuvent également ne pas autoriser les commandes wget .

Docker n'est souvent pas non plus disponible au sein de ces organisations, mais l'accès aux référentiels de packages est une "quantité connue" et donc plus facile à vendre aux équipes de sécurité, d'autant plus que les packages ont tendance à être entièrement signés dans le cadre du processus de création.

Il existe également des situations pour lesquelles Docker ne convient tout simplement pas. Cela peut inclure lorsque les intégrateurs de systèmes/fournisseurs de services gérés souhaitent effectuer une mise à l'échelle à l'aide de groupes AWS Auto Scaling basés sur des instances plutôt que sur des conteneurs, ou pour des installations sans système d'exploitation dans des environnements sécurisés.

L'installation via des outils de gestion de configuration tels que Ansible, Chef ou Puppet est également incroyablement difficile lorsque vous n'avez pas de packages disponibles.

Enfin, l'installation à partir d'un référentiel git par opposition à un package est difficile sans compilateurs, ce qui ouvre un risque de sécurité en installant des compilateurs sur des systèmes de production.

Qu'y a-t-il déjà ?

À l'heure actuelle, nous avons le choix entre deux conteneurs docker ( ttn-lw-stack et ttn-lw-cli ) ou construire des binaires du même nom à partir de git.

Le déploiement se fait via docker pull ou git clone , qui peuvent ne pas fonctionner derrière des pare-feu d'entreprise/d'éducation.

Que manque-t-il?

La possibilité d'installer via yum , apt ou opkg

Comment proposez-vous de mettre cela en œuvre ?

Cela devrait être relativement facile à mettre en œuvre à l'aide de GO Releaser , mais GO n'est pas un langage que je connais particulièrement (encore !)

Environnement:

Linux - basé sur CentOS/RHEL, basé sur Debian/Ubuntu, basé sur OpenWRT

Que pouvez-vous faire vous-même et pour quoi avez-vous besoin d'aide ?

J'aurais besoin d'une confirmation qu'il s'agit de la manière appropriée de conditionner une application go pour le déploiement, puis de l'aide pour la mise en œuvre de la part de quelqu'un qui comprend GO !

blocked

Commentaire le plus utile

Nous ferons également cette partie du CD.

Ajoutant également brew à la liste de souhaits.

Tous les 10 commentaires

Je vais commencer par ajouter des packages à APT, AUR et https://github.com/nixos/nixpkgs , car je connais déjà le format de ceux-ci. D'autres seront ajoutés ultérieurement.
Les contributions sont, bien entendu, toujours les bienvenues !

@rvolosatovs allez-vous utiliser go-releaser, ou une autre façon de créer les packages ?

Je serais heureux de travailler sur le côté RPM tant que je sais ce que vous utilisez pour les créer ! :)

Nous ferons également cette partie du CD.

Ajoutant également brew à la liste de souhaits.

J'ajoute juste mon soutien à cela. Je n'ai jamais utilisé docker auparavant, et même si j'apprécie qu'il existe de nombreux langages de programmation, c'était un énorme saut pour quelqu'un qui ne l'avait jamais fait auparavant. Bien que l'installation à partir d'un dépôt soit la façon dont les développeurs aiment faire les choses, ce n'est pas très convivial pour les utilisateurs finaux.

Merci pour tout votre travail là-dessus, j'espère trouver du temps dans les prochains jours pour ajouter le support RPM et le tester.

@proffalken Nous construirons le package RPM dans le cadre de CI - vous pourrez le trouver sur notre page de versions une fois que nous aurons publié une version. (Pour votre information, github prend également en charge les flux Atom pour les versions : https://github.com/thethingsnetwork/lorawan-stack/releases.atom)

J'ai suivi votre suggestion d'utiliser goreleaser.
Concernant le paquet RPM lui-même - c'est (pour l'instant) juste https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L79 -L92
Je soupçonne que l'emplacement de l'interface, par exemple, n'est pas standard pour les packages RPM et, en fait, n'est pas non plus par défaut pour la pile (nous nous attendons à ce qu'il soit à /srv/ttn-lorawan/public ).
Votre avis sur la façon dont cela devrait être fait serait donc très utile.

Notez que pour brew , par exemple, nous encapsulons le binaire de la pile pour définir la variable d'environnement associée pour qu'elle pointe vers l'interface :
https://github.com/TheThingsNetwork/lorawan-stack/blob/b1183962c502e6b53191086c23567c546c2b8ec5/.goreleaser.yml#L116 -L119

Je suis sûr que l'emplacement prévu de ceci dans le package RPM est différent, mais nous pouvons, espérons-le, utiliser la même approche ici.

@rvolosatovs est parfaitement logique pour moi.

Le réglage des variables env est probablement mieux fait dans un script de service systemd, j'essaierai d'en créer un dès que possible.

Coller des choses dans /srv/ttn-lorawan/public est également parfaitement acceptable :)

@rvolosatovs pouvez-vous mettre à jour les étiquettes et/ou le commentaire d'origine pour indiquer que nous n'avons plus besoin d'aide, ou d'aide pour une distribution spécifique ? Avant que les membres de la communauté ne commencent à le mettre en œuvre avec impatience alors que la majeure partie est en cours.

Bloqué par manque de version v3.0.0 .
Cela n'a pas de sens de publier des versions préliminaires dans des référentiels.

Fermé pour cause de libération. Nous avons le support Snappy et Brew, ainsi que les fichiers deb et rpm

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

johanstokking picture johanstokking  ·  6Commentaires

johanstokking picture johanstokking  ·  5Commentaires

kschiffer picture kschiffer  ·  6Commentaires

johanstokking picture johanstokking  ·  8Commentaires

MatteMoveSRL picture MatteMoveSRL  ·  7Commentaires