•  untoreh-lumière

Alpin

Pine, Alpine Linux basé sur OSTree

Choisir quoi Système d'exploitation s'exécute sur vos serveurs est une question de commodité et de familiarité. La commodité signifie que vous voulez quelque chose qui vous cause le moins de problèmes possible, la familiarité signifie que vous préférez ne pas pour apprendre des choses supplémentaires si vous n'y êtes pas obligé.

Mes serveurs sont animaux domestiquesJe peux donc émettre manuellement quelques commandes de temps en temps et ne nécessite pas une automatisation complète.

Après avoir essayé CoreOS pendant un an je suis passé au mien simplifié distribution basé sur l'alpin et ostrée.

Buts

Cette version de l'alpin s'inspire de wagon plat et projet-atomique et est censé être installé en tant que système de fichiers racine en lecture seule avec des mises à jour se produisant de manière atomique, c'est-à-dire qu'elles réussissent ou que le système revient à l'état précédent. Pour que cela soit possible, le système doit toujours avoir au moins deux instantanés de la version publiée du système de fichiers, disponible sur le stockage.

Cibles

Dans quels environnements le système fonctionnera-t-il ? j'ai ciblé OVZ et [KVM], mais en général vous pouvez dire conteneurs et machines virtuelles la principale différence étant que les conteneurs n'exécutent pas leur propre noyau, en particulier ils n'ont pas de processus de démarrage, ils appellent directement dans le init système (qui par exemple dans unDockerfile il serait défini par leCMD ouENTRYPOINT instructions), qui est chargé de gérer l'arborescence des processus qui maintiendront le conteneur en cours d'exécution (tout comme une session normale, si le processus d'initialisation meurt, le conteneur se termine). De plus, les conteneurs ne peuvent pas configurer les boutons système et peuvent avoir des restrictions supplémentaires sur les capacités.

Bissection du processus de construction

Comment se construit l'image ?

Dépendances

Lesprepare.sh le script gère les dépendances, dont la plupart sont les packages pour offrir des outils cli communs commecoreutils, util-linux, binutils , des utilitaires pour fonctionner avec des périphériques de bloc commeblkid, sfdisk, multipath-tools et les systèmes de fichiers avecxfsprogs ete2fsprogs . Lessquashfs-tools package est utilisé à la fin pour compresser le système de fichiers racine construit. UNEglib le package de compatibilité est également installé par défaut car alpine est basé surmusl, le package de compatibilité fonctionne en fournissant des bibliothèques construites contre .

L'arbre

Les arborescences de fichiers pour les machines virtuelles et les conteneurs sont construites avec respectivementmake.sh etmake_ovz.sh . Ceci est une description simplifiée des étapes

Pour les conteneurs, la séquence est la même, mais la configuration change, car avec un système non démarré à partir d'un chargeur de démarrage ostree a du mal à vérifier l'environnement, nous devons appliquer solutions de contournement et configurer certains périphériques qui sont généralement gérés par le initramfs étape. C'est ainsi OVZ ou LXC les modèles sont configurés.

Emballage

Une fois que nous avons notre arborescence de fichiers validés ostreebuild.sh oubuild-update.sh se charge de produire l'artefact qui sera distribué. La différence entre les scripts est que la version de mise à jour démarre à partir d'un référentiel ostree précédent, et aussi produit un artefact delta qu'un système en cours d'exécution peut appliquer sur son instance ostree pour effectuer des mises à niveau. Ceci est une description simplifiée des étapes de construction

La configuration des partitions est appliquée avec un fdisklayout.cfg qui définit les tailles de partition, nous avons une partition pour le rootfs (~430M ), la partition de démarrage (~40M ) et une partition d'échange (~40M ). Avec des conteneurs, il suffit d'ignorer le montage de la version précédente sur un périphérique en boucle et de tirer simplement le nouveau commit ostree sur l'ancien référentiel ostree (extrait).

Personnalisations

Qu'est-ce que je regroupe dans cette image (à part les packages installés) ?

Ce qui était et n'est plus

Installation

Pour installer l'image, vous pouvez soit la télécharger sur le fournisseur d'hébergement et l'installer à partir de VNC, dans le cas de machines virtuelles, mais je détourne généralement une installation existante, car c'est toujours possible, tant que j'ai testé le script d'installation par rapport à la version de la distribution linux, généralement j'utilise debian-8 ou ubuntu-14, n'en a pas testé d'autres car j'ai toujours trouvé qu'elles étaient disponibles. Les étapes de configuration suivent

Conclusion

J'ai fait pin 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on NAT serveurs qui ont tendance à offrir des ressources ultra-faibles, en fait j'ai une boîte qui tourne avec juste64M de RAM, et j'ai toujours toutes les fonctionnalités dont j'ai besoin.

[1]système de fichiers racine

Mots-clés :