Project

General

Profile

Evolution #5052

Génération des conteneurs et de leur configurations

Added by Daniel Dehennin about 7 years ago. Updated about 7 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
03/04/2013
Due date:
03/15/2013
% Done:

100%

Spent time:
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 />.


Related issues

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

Associated revisions

Revision 23dfe432 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision 10fb8a13 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision d142da32 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision cdc976e5 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision 263761e2 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision 5d0cd250 (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision 29feee0e (diff)
Added by Daniel Dehennin about 7 years ago

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

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

Ref: #5052 @2m

Revision 17147bba (diff)
Added by Daniel Dehennin about 7 years ago

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

Revision 7e11b597 (diff)
Added by Daniel Dehennin almost 7 years ago

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

Revision c9640f20 (diff)
Added by Daniel Dehennin almost 7 years ago

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

Revision 501f2d50 (diff)
Added by Daniel Dehennin almost 7 years ago

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

Revision 7689e95e (diff)
Added by Curtis Conard over 1 year ago

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

fixes #5052

History

#1 Updated by Daniel Dehennin about 7 years ago

  • Status changed from Accepté to Résolu
  • % Done changed from 0 to 100

#2 Updated by Joël Cuissinat about 7 years ago

  • Status changed from Résolu to Fermé

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

Also available in: Atom PDF