Préparation de l'hyperviseur
Afin de permettre le développement et les expérimentations autour de OSFS, il est souhaitable d'automatiser autant que possible les phases d'installation et de paramétrage de la plateforme. De plus, il est préférable d'avoir un processus commun entres les différents types de plateforme. Notre choix de plateforme commune réside dans un environnement salt-ready. À partir de cette étape le déploiement et la configuration des systèmes peut être réalisée de manière commune.
Dans un premier temps, la mise en place de la plateforme à 3 ctrl est décrite. Pour rappel, la plateforme visée (décrite précédemment) est:

Architecture système de la plateforme de développement (virtualisée)
Installation de paquets
Les paquets suivants sont nécessaires à la plateforme:
- libvirt-bin: environnement de virtualisation libvirt qui par dépendance déploie aussi QEmu.
- bridge-utils: CLI pratique pour certaine opération sur les bridges.
- salt (dépôt et binaire): infrastructure de configuration et de gestion (détails ici)
- virtinst: pour la construction de VM en ligne de commande
Ce qui se traduit par:
$ sudo apt-get install libvirt-bin bridge-utils $ wget -O - https://repo.saltstack.com/apt/debian/8/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add - $ sudo /bin/sh -c 'echo "deb http://repo.saltstack.com/apt/debian/8/amd64/latest jessie main" > /etc/apt/sources.list.d/salt.list' $ sudo apt-get update $ sudo apt-get install salt-ssh salt-master
Paramétrage disque
Afin de permettre un maximum de flexibilité, les unités de stockage sont:
- construite avec LVM,
- puis des snapshot et des merge sont réalisés au cours des divers cycles de développement.
$ sudo lvcreate -n ctrl-1 -L 10G data # création, à partir du VG data, du disque /dev/data/ctrl-1 de 10Go $ sudo lvcreate -n ctrl-1_snap -L 10G -s /dev/data/ctrl-1 # création d'un snapshot COW intégral du disque ctrl-1 nommé ctrl-1_snap $ sudo lvconvert --merge data/ctrl-1_snap # merge du snapshot ctrl-1_snap dans son disque d'origine
Pour la plateforme voulue, 6 volumes logiques sont nécessaires. Ils sont créés à l'aide de la commande lvcreate comme précédemment indiqué. Les disques sont:
- /dev/data/ctrl-1
- /dev/data/ctrl-1-ceph1
- /dev/data/ctrl-1-ceph2
- /dev/data/ctrl-2
- /dev/data/ctrl-2-ceph1
- /dev/data/ctrl-2-ceph2
- /dev/data/ctrl-3
- /dev/data/ctrl-3-ceph1
- /dev/data/ctrl-3-ceph2
Paramétrage réseau
Dans le contexte de la plateforme expérimentale virtuelle, les réseaux, au niveau de l'hyperviseur, sont constitués par des bridges. La mise en place de ces réseaux se fait à l'aide de libvirt. Le paramétrage d'un nouveau réseau se fait à l'aide d'une description en XML
<network> <name>default</name> <forward mode='nat'/> <bridge name='virbr0' stp='off' delay='0'/> <ip address='192.168.122.254' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.100' end='192.168.122.200'/> </dhcp> </ip> </network>
Dans cette description sont spécifiés:
- name: le nom du réseau
- forward: la mise en place d'un NAT pour la sortie du réseau
- bridge: la création du bridge virbr0 pour instancier ce réseau sur l'hyperviseur
- ip: pour définir l'adresse IP du l'interface virbr0
- dhcp: la définition d'un serveur DHCP sur le réseau en cours de création avec la plage d'adresse dynamique
Dans le contexte de OSFS, le serveur DHCP n'est utilisé que pour la première installation de la machine (et l'ajout éventuel ultérieur de machines supplémentaires). En effet, un plan d'adressage IP est défini et mis en place pendant la phase de configuration de la machine.
Lorsqu'aucune sortie du réseau n'est voulue, la description XML du réseau peut se réduire à:
<network> <name>data</name> <bridge name='virbr1' stp='off' delay='0'/> </network>
Pour les besoins de la plateforme, 5 réseaux sont nécessaires:
- API / accès (nommé default): réseau avec DHCP correspondant au XML virbr0, ci-dessus;
- service (nommé srv): réseau sans DHCP correspondant au XML virbr1, ci-dessus;
- data (nommé data): réseau sans DHCP analogue au XML virbr1 (remplacé par virbr2), ci-dessus;
- IaaS: (nommé iaas): réseau sans DHCP correspondant au XML virbr1 (remplacé par virbr3), ci-dessus;
- externe: (nommé ext): réseau sans DHCP correspondant au XML virbr1 (remplacé par virbr4), ci-dessus;
La création par libvirt se fait effectivement, réseau par réseau, grâce à:
# virsh net-define -f default.xml # virsh net-autostart default # virsh net-start default
Création des VMs
Toujours avec l'aide de la libvirt, les VM sont créées de manière automatique avec:
- virt-install
- une configuration preseed de Debian
Utilisation de virt-install
$ sudo /usr/bin/virt-install \ --name ctrl-1 \ # nom de la VM --ram=4096 \ # quantité de RAM (en Mo) --vcpu=2 \ # nombre de vCPUs --os-type linux \ # définie le type d'OS dans la VM --os-variant debianwheezy \ # définie un sous-type --graphics none \ # pas d'interface graphique --console "pty,target_type=serial" \ # définition et usage de la console sur port série --location "http://ftp.fr.debian.org/debian/dists/jessie/main/installer-amd64/" \ # source d'installation de Debian --initrd-inject=/tmp/preseed \ # localisation du fichier preseed --extra-args "console=ttyS0,115200n8 serial" \ # paramètre noyau pour la déclaration de la console sur port série --noautoconsole \ # pas d'ouverture automatique d'une console pendant l'installation --disk /dev/data/ctrl-1 \ # rattachement du disque /dev/data/ctrl-1 à la VM --network bridge=virbr0 # connection de l'interface réseau à un bridge (virbr0)
Les options --disk et --network peuvent être répétées autant que nécessaire pour disposer de plusieurs disques ou de plusieurs interfaces réseau.
Le fichier /tmp/preseed est un fichier de configuration automatique correspondant au Debian Installer. Ce fichier, est décrit dans la section suivante.
Première page / Page précédante / Sommaire / Page suivante / Dernière page