Notes et astuces sur les systèmes libres basés sur GNU/Linux

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, 2 mai 2014

Une IHM pour LXC : LXC-Web-Panel

screenshot01.png
Bonjour à tous,

Un soupçon de motivation m'anime tout d'un coup, autant vous dire que c'est très rare et que je vais en profiter pour faire la promotion du made IN France :D

Comme vous le savez, j'utilise LXC pour faire mes petits tests. A part la mise en oeuvre qui est un petit peu fastidieuse, la solution tourne plutôt bien (très bien même).

Mais j'aime bien avoir une vue générale de ce qui tourne sur mon PC et une petite IHM Web pour visualiser et interagir avec LXC c'est plutôt cool.

J'ai trouvé une solution qui permet de gérer via une web appli votre hyperviseur LXC à la KISS style.
Elle est super bien référencée dans Google mais je n'ai vu aucun article français en parler, avouez que pour une application développée par des Français c'est un comble.

J'ai installé LWP sous ma Debian 7.5, of course it runs sans bidouille, juste en utilisant leur script.

Points Positifs :

  • Installation facile
  • Belle IHM, rien de superflu
  • Fait le boulot attendu.
  • Serveur léger

Axes d'améliorations :

  • Il me manque la gestion des sauvegardes/snapshot et ré-initialisation
  • Une petite console d'accès à distance (je n'ai encore pas encore de solution fiable et intéropérable mais on peut rêver)
  • Gestion des ressources systèmes de chaque containeur via un graphe
  • Laissez un script d'installation tourné en root me plaît pas trop.
  • Tout n'est pas opérationnel sous Debian mais cela devrait rentrer dans l'ordre avec LXC en version 1.0
    • Gestion du réseau
    • Création from scratch d'un container
    • Gestion du lancement des containers au boot
  • Je regrette un peu la technologie choisie qui se base sur du Python/Flask.


Quelques questions à l'un des auteurs Elie DELOUMEAU :

Qu'est-ce qui vous a poussé à developper LWP :

Avoir fait quelque chose d'utile dans ma vie et avoir quelque chose sur mon CV ^^

Quels besoins souhaitiez-vous couvrir avec cette application :

Rester dans une interface utilisable par tout le monde mais aussi poussée parfois pour les professionnels.

Vos prochaines fonctionnalités et développements en cours :

RESTful API
Backup
Gestion avancée des utilisateurs
Gestion d'ACL
Autoupdate
Gestion de plusieurs serveurs via une interface
Personnalisation de l'interface
Configuration du SSL à l'installation (si possible)
Installation sur une base MySQL si l'utilisateur le souhaite
Nous sommes actuellement sur le dev d'une version multi plateformes (debian/ubuntu/fedora etc..)

Pourquoi Python et Flask ?

Je suis parti sur du Python car je ne suis pas développeur et en tant qu'admin systèmes c'est le seul langage que je maîtrise plus ou moins. Et au final j'ai bien fait d'utiliser Python car avec LXC 1, il y a une bibliothèque Python livrée avec :D


Un grand merci à lui et une bonne continuation.

Sources :

mercredi, 5 février 2014

Gestion de mon environnement de developpement

Hello world !
Une petite note pour partager mon "expérience" sur l’administration de mon serveur dédié.
Je ne sais pas comment vous fonctionnez pour gérer vos serveurs mais moi j'utilise Puppet.
J'ai choisi cette technologie car je m'en sers énormément au boulot alors tant qu'à apprendre quelque chose autant que cela me serve.
Ce logiciel me permet d'installer/réinstaller mon serveur de zéro en quelques minutes sans oublier quelque chose.
Il y a plusieurs manières de se servir de Puppet à savoir :

  • Client/Serveur sur architecture n-tiers
  • Client/Serveur en mode standalone

Au vu de mon infrastructure, j'ai choisi la deuxième méthode. Je n'ai pas besoin de gérer un quelconque service central PuppetMaster j'ai développé un petit shell qui me permet d’exécuter mon agent Puppet sur mon serveur sans avoir besoin d'un master Puppet.

Voici l'infrastructure que j'utilise, je vais la détailler par la suite : choixlibres.png
Un petit tour des technos :
Comme vous pouvez le voir, je m’appuie sur trois étapes/environnements pseudo-cloisonnés. Les deux premières itérations s'effectuent sur mon poste de travail via la solution LXC, cette solution a l'avantage d'être légère et facilement réinstallable/réinisialisable.
J'utilise également le gestionnaire de version Git. De un car c'était une belle façon d'apprendre les DCVS et de deux car le service Github est bien pratique.
Cela ne figure pas sur le schéma mais je me sers de Zim pour documenter/noter des liens, je cherche actuellement une solution pour synchroniser mes écrits entre mes différentes machines.

Mes différents environnements :
Dev :

Cette VM me permet de tester de manière sauvage (sans documenter/en patchant comme un goret...) les futurs services que je souhaiterais mettre en place sur mon serveur dédié. Si les tests sont concluants, je passe à l'environnement suivant.

Recette :

Ce conteneur LXC est remise à zéro à chaque utilisation, je me base sur un debootstrap stable pour le faire. Je clone mon dépôt Git dans le répertoire /etc et je commence à développer le code Puppet me permettant de déployer le nouveau service. Je teste plusieurs fois en réinisialisant la VM afin de me placer dans des conditions identiques à la production. Je documente chaque étape (si la procédure le nécessite) dans mon wiki desktop ZIM. Une fois le code, la documentation, le déploiement au point, je commit et Push mon travail dans mon Git.

Production :

Sur mon serveur dédié, je me contente de faire un pull de mon dépôt Puppet et d’exécuter Puppet.
C'est tout !!!

Ce petit billet avait pour but un petit partage d'information, si vous avez des remarques ou des propositions, je suis ouvert à tout commentaires constructif ne cherchant pas à me vendre du viagra :D
Si vous le souhaitez vous pouvez visiter mon dépot Git et même me faire des commits ;)
Un début de documentation est disponible au cas ou vous souhaiteriez vous en servir.
Coming soon, une réecriutre plus propre des modules, plus de paramètres/d'automatisations pour le module parefeu

A bientôt mais en attendant, regarde comme il faut beau dehors, il faut sortir s’aérer : 15h02
J'aime bien ;)
Sources :
Mon dépot Git Puppet

jeudi, 16 mai 2013

LXC, la solution de virtualisation légère

Si comme moi vous aimez bien tester différents outils ou services GNU/Linux sans encombrer votre machine réelle, la solution de virtualisation par container LXC pourrait grandement vous aider.poupée russe

Voici les quelques avantages de cet outil :

  • Optimisation de l'utilisation de votre machine en hébergeant plusieurs configurations systèmes
  • Sécurisation de vos process en les mettant à l'abris dans un "chroot amélioré".
  • Facilité d'installation car l'outil est intégré au noyau Linux.
  • Avoir sous la main un autre GNU/Linux sans manger toute vos ressources CPU


Cet article n'a pas d'autre prétention que de me servir de bloc-note lors d'une prochaine réinstallation et ajouter une ressource française sur le sujet.

Pour l'installer sous Debian :Logo debian

Si besoin ajouter le système de paramétrage CGROUP à votre liste de points de montage dans votre fichier etc/fstab (vérifiez si la ligne suivante est déjà présente):

cgroup          /sys/fs/cgroup  cgroup  defaults        0       0

Si l'on souhaite mettre nos machines virtuelles directement sur le réseau physique, nous avons besoin de créer un pont sur lequel viendra se brancher notre machine physique ainsi que nos machines virtuelles.

Le paquet bridge-utils va créer un pont/commutateur/switch entre vos machines virtuelles/physique et votre réseau local (LAN).

Schema reseau

aptitude install bridge-utils
Pour mettre en place cette configuration, vous allez devoir remplacer votre eth0 en DHCP par br0 dans /etc/network/interfaces :
auto br0
iface br0 inet dhcp
bridge-ports eth0

Installez le paquet LXC contenant un ensemble de script et de templates :

aptitude install lxc

Si vous souhaitez installer une Debian dans un de vos conteneurs, vous aurez besoin d'installer debootstrap :

aptitude install debootstrap

Maintenant, pour créer votre premier container de type Debian sans limitation :

lxc-create -n le_nom_de_votre_container -t debian

Il faudra configurer votre container avant de le lancer en allant toucher le fichier de configuration dans /var/lib/le_nom_de_votre_container/config. Les lignes importantes à modifier sont :

lxc.network.type = veth
lxc.network.flags = up
#On s'appuie sur l'interface br0 physique
lxc.network.link = br0
#On nomme notre interface virtuel eth0
lxc.network.name = eth0

Par défaut sous Debian, lxc ne vous crée pas de terminal pour vous connecter à votre machine virtuelle.
Avouez que c'est dommage !
Nous allons y remédier en créant nous même le fichier spécial correspondant à un terminal virtuel avec mknod :

mknod -m 666 /var/lib/lxc/le_nom_de_votre_container/roots/dev/tty c 4 1

Si vous souhaitez lancer votre machine avec une console virtuel mais ATTENTION vous ne pourrez pas quitter la console sans éteindre votre container :
lxc-start -n le_nom_de_votre_container

Si vous voulez avoir en tâche de fond votre machine virtuelle ou tout simplement pouvoir quitter votre console quand vous le souhaitez (via Ctrl a +q) :

lxc-start -n le_nom_de_votre_container -d

Maintenant, vous pouvez accéder à votre console :

lxc-console -n le_nom_de_votre_container

Ma difficulté à l'installation venait surtout de la création de la console virtuelle sur une version Testing.

Pour l'installer sous ArchLinux :Logo archlinux

La seule difficulté que j'ai rencontré sous Archlinux est la configuration du bridge.
Je passe brièvement l'installation des paquets vus précédemment :

pacman -S lxc bridge-utils

Si besoin rebooter votre machine pour prendre en compte vos nouveaux modules :

lsmod | grep br
bridge                 85984  0
stp                     1621  1 bridge
llc                     3729  2 stp,bridge

Normalement, l'utilitaire netcfg doit créer votre pont automatiquement avec les paramètres que l'on va spécifier ci-dessous :

pacman -S netcfg
Modifier le fichier/etc/network.d/bridge :
INTERFACE="br0"
CONNECTION="bridge"
DESCRIPTION="Mon pont davignon"
BRIDGE_INTERFACES="enp4s0"
IP="dhcp"

Modifier le fichier /etc/conf.d/netcfg :

# Network profiles are found in /etc/network.d
NETWORKS=(bridge)

Ajouter l'unité à votre démarrage afin de monter le réseau à chaque démarrage :

systemctl enable netcfg@bridge.service

Pour créer manuellement votre pont si cela n'a pas été fait :

brctl addif br0 enp4s0

Modifier le fichier /usr/share/lxc/templates/lxc-debian (L.175)afin de faire fonctionner le template:

arch="amd64"


Au plaisir.

Ps : Pas de bol pour moi, une personne vient de publier un article sur LXC sous Debian à l'instant en Français. J'aurais été en début d'écriture, je n'aurai pas écrit ...

Edit : Ajout de la modification du template debian