Projet

Général

Profil

Evolution #5052

Génération des conteneurs et de leur configurations

Ajouté par Daniel Dehennin il y a environ 11 ans. Mis à jour il y a environ 11 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
04/03/2013
Echéance:
15/03/2013
% réalisé:

100%

Temps passé:
Distribution:
EOLE 2.4

Description

Il faut réécrire la procédure de génération des conteneurs.

Nous avons désormais accès à toutes les informations nécessaires en dehors de source:creole/cfgparser.py.

Il faut créé un moteur de template pour les fichiers de configuration des conteneurs qui ne peuvent être géré par balise <file />.


Demandes liées

Bloque eole-common - Evolution #2622: Mettre à jour l’utilisation de LXC pour 2.4 Fermé 28/01/2013 21/03/2014

Révisions associées

Révision 23dfe432 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Les chemin des disknods sont résolus en informations de périphérique

L’accès aux disknods déclanche une résolution des chemins en dictionnaire
contenants les informations du périphique.

On ne résoud les chemins vers des répertoires et les périphériques blocs
et caractères, par exemple :

/dev/fuse -> {'type': u'c', 'major': 10, 'minor': 229, 'mode': 'rwm',
'permission': 'allow'}
/home -> {'type': u'b', 'major': 252, 'minor': 0, 'mode': 'rwm',
'permission': 'allow'}

Cette résolution se fait côté client mais ne devrait pas fonctionner dans
les conteneurs.

  • creole/client.py (_gen_device_from_disknod): Résoud un chemin en
    dictionnaire d’information de périphérique. Ne prend en compte que des
    noms de périphérique blocs ou caractères ainsi que des répertoires afin
    d’obtenir les informations du périphérique bloc contenant le système de
    fichier.

Ref: #5052 @30m

Révision 10fb8a13 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Génération des interfaces sur le réseau inter-conteneurs

Cela permet de gérer toutes les interfaces de conteneurs de la même
façon.

Les interfaces sur le réseau inter-conteneurs sont la sortie par défaut
et peuvent être surpassées par des définissions ultérieurs.

Ces interfaces sont donc ajoutées précautionneusement afin de ne pas
écraser la définition de « sortie par défaut » d’une autre interface du
groupe de conteneur.

  • creole/loader.py (CreoleContainer.gen_interfaces): Ajout des interfaces
    du réseau inter-conteneurs avant les interfaces personnalisées.

Ref: #5052 @45m

Révision d142da32 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Moteur de templatisation des configurations LXC

Ce moteur est à amélioré afin d’ajouter une gestion d’erreurs.

  • creole/containers.py (ContainerTemplateEngine): Moteur de templating
    basé sur « CreoleTemplateEngine » afin de gérer la configurations des
    conteneurs LXC.
    (generate_lxc_container): Wrapper à la commande « lxc-create ».
    (generate_lxc_containers): Génération des conteneurs pour tous les
    groupes de conteneurs.

Fixes: #5052 @45h

Révision cdc976e5 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

L’attribut « gateway » n’est pas supporté dans la DTD

  • data/creole.dtd: Ajout de l’attribut optionnel « gateway » pour
    l’interface.

Ref: #5052 @2m

Révision 263761e2 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Génération du fichier « /etc/network/interfaces » des conteneurs

  • creole/containers.py: Ajout du fichier à généré.
    (get_components): Ajout de la « gateway ».
  • data/creole.dtd: Définition de la valeur par défaut de « fstype » à
    « auto », utile dans le cas d’un mount « bind ».

Ref: #5052 @2m

Révision 5d0cd250 (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Le chemin des fichiers préfixé par le conteneur est « full_container_name »

  • creole/loader.py (CreoleContainer.gen_files): L’attribut de
    fichier « full_container_name » est le chemin du fichier préfixé par le
    chemin du conteneur.
  • creole/template.py (CreoleTemplateEngine.patch_template): Suppression
    de l’argument inutile « container ».
    (CreoleTemplateEngine.strip_template_comment): Idem.
    (CreoleTemplateEngine.prepare_template): Idem
    (CreoleTemplateEngine.verify): Idem. Utilisation de
    « full_container_name » au lieu de reconstruire le chemin.
    (CreoleTemplateEngine.remove_destfile): Idem.
    (CreoleTemplateEngine.process): Utilisation de
    « full_container_name » au lieu de reconstruire le chemin.
    (CreoleTemplateEngine.change_properties): Utilisation de
    « name » au lieu de construire le chemin, la commande est exécutée dans
    le « chroot ». Utilisation de « pyeole.process.creole_system_out() »
    afin de passer le dictionnaire du conteneur et ne tenir compte
    du « path » de celui-ci.
    (CreoleTemplateEngine._instance_file): Correction des API.
  • creole/containers.py (ContainerTemplateEngine.instance_lxc_file):
    Utilisation de « full_container_name ». Utilisation du « path » du
    maître pour l’appel à « CreoleTemplateEngine.change_permission() ».
  • bin/CreoleCat (main): Définition de « full_container_name ».

Ref: #5052 @45m

Révision 29feee0e (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Le conteneur « all » fait partie de tous les groupes de conteneurs

  • creole/containers.py (get_components): Ajout du conteneur « all ».

Ref: #5052 @2m

Révision 17147bba (diff)
Ajouté par Daniel Dehennin il y a environ 11 ans

Génération des conteneurs lors des « reconfigure »

  • creole/reconfigure.py: Initialisation du logger avec
    « pyeole.log.getLogger », cela permet d’utiliser les fonctions de
    reconfigure depuis d’autres scripts.
    Récupération du code du nouveau « gen_conteneurs ».

Ref: #5052 @2m

Révision 7e11b597 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Ne pas générer de fichier dans le conteneur « all »

Ces fichiers sont à générér pour chaque conteneur.

La clef « name » du dictionnaire d’un fichier doit être unique, nous lui
assignons la valeur qui était celle de « full_container_name ».

Le nom relatif à l’intérieur du conteneur est stocké dans la
clef « relative_name ».

  • creole/loader.py (CreoleContainer._gen_file): Prépare une structure de
    fichier pour un conteneur.
    Renommage de la clef « name » en « relative_name ».
    Renommage de la clef « full_container_name » en « name ».
    (gen_files): Prend en charge les fichiers du conteneur « all ».
  • creole/template.py: Prise en compte du renommage des clefs du
    dictionnaire de fichier.
  • creole/containers.py (ContainerTemplateEngine.instance_lxc_file): Idem.
  • bin/CreoleCat: Idem.

Ref: #5052 @20m

Révision c9640f20 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Ne pas générer toutes les interfaces lors d’un « gen_conteneurs »

Cela permet de démarrer des conteneurs minimalistes afin d’installer des
paquets.

  • creole/containers.py (get_components): Nouveau paramètre afin de
    supprimer certaines informations.
    (ContainerTemplateEngine.instance_lxc_file): Idem.
    (ContainerTemplateEngine.instance_lxc_files): Idem.
  • creole/reconfigure.py (containers): Générer des configurations
    minimales.

Ref: #5052 @10m

Révision 501f2d50 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Créer les points de montage des conteneurs

Les conteneurs LXC ne démarrent pas si les montages ne peuvent pas se faire.

  • creole/containers.py (ContainerTemplateEngine._create_mount_points):
    Création de l’arborescence jusqu’au point de montage.
    (ContainerTemplateEngine.instance_lxc_file): Appel à la création des
    points de montage.

Ref: #5052 @5m

Révision 7689e95e (diff)
Ajouté par Curtis Conard il y a plus de 5 ans

Fix display of recent and popular KB articles (#5068)

fixes #5052

Historique

#1 Mis à jour par Daniel Dehennin il y a environ 11 ans

  • Statut changé de Accepté à Résolu
  • % réalisé changé de 0 à 100

#2 Mis à jour par Joël Cuissinat il y a environ 11 ans

  • Statut changé de Résolu à Fermé

=> programme /usr/share/eole/sbin/gen_conteneurs

Formats disponibles : Atom PDF