systemx

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

Mot-clé - virtualbox

Fil des billets - Fil des commentaires

mercredi, janvier 22 2014

Connection SSH X11 et virtualbox affichage illisible


Je suis un grand utilisateur de vagrant mais parfois ca plante.
C'est plutôt virtualbox qui est capricieux mais dans ce cas le GUI est parfois indispensable.
Profitons de l'interface X11 et de son affichage déporté via SSH.

Sous CentOS il faut ajouter le package d'authentification X qui n'est en général pas installé sur un serveur.
yum install xorg-x11-xauth

Ensuite ajouter ces packages :
yum install urw-fonts libXfont
Sans ce package on aura un horrible affichage avec des carrés à la place des fontes :

vboxfontbroken.png Puis on se connecte (sur le port 999 au lieu de 22) en faisant passer les connection X11 (graphique) via ssh :
korora:/data/home/$ ssh -p 999 -X root@myhost.ovh.com
Last login: Wed Jan 22 22:23:27 2014 from yo.fbx.proxad.net
CentOS release 6.5 (Final)
Linux myhost.ovh.net 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

# echo $DISPLAY 
localhost:10.0
# VirtualBox
Et si votre Virtualbox est illisible avec plein de gros carré à la place des lettres :
yum install fontforge
On peut même simplifier avec le ssh_config :
toto : cat ~/.ssh/config 
Host lab
    HostName myhost.ovh.com    
    Port 999
    User root
    IdentityFile ~/.ssh/id_rsa_lab
    ForwardX11 yes
puis :
ssh lab

lundi, juillet 8 2013

vagrant veewee


Vagrant est un outil sympa pour se créer des VM à la volée, en quelque sorte se faire un mini cloud.
J'utilise virtualbox mais cela fonctionne sous kvm et même VMware quelquechose. Il y a une bonne page de présentation sur ce blog. Cependant il y a deux inconvenients majeurs.
  1. vagrant home
  2. Par default vagrant créé tout dans la home directory ce qui rends cette home extremement volumineuse et ne devrait pas être inclus dans les backups de la home.
    Pour résoudre le probleme, il faut (à partir de la version 1.1.x je crois) utiliser :
    export VAGRANT_HOME=/data/virt/Vagrant/
    La doc parle aussi de VAGRANT_CWD dans le doute je met les 2.
  3. Les bases box
  4. Ce sont des machines pré profilées que l'on peut recupérer directement du WEB, mais on ne maitrise pas trop ce qu'il y a dedans.
    Créer une base box à partir des iso OS est un process un peu lourd (decrit ici). Afin de pallier à cet inconvenient l'utilitaire veewee permet d'automatiser ce processus et surtout fonctionne avec les standards d'installation serveur.
    On peut en effet lancer son kickstart comme pour toute installation de server, parfait pour les admins systemes (ou preseed pour les debian).
    Je vais donc créer avec veewee des modèle de VM qui seront ensuite importés et packagés par vagrant pour créer (deployer) des VM.

On initialise vagrant (pour l'installation utiliser la dernière version de l'auteur, les package OS étant souvent obsolètes (sauf gentoo testing)).
$ cd $VAGRANT_HOME
$ vagrant init 
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Le fichier Vagrantfile décrit la ou les machines gérées par vagrant.
Parfait maintenant on peut commencer à travailler.
Pour les tests ci dessous, j'utilise une centos 6.4.
Je télécharge en prévision des installations l'iso source et le guest addition et les place dans le repertoire $VAGRANT_HOME/iso :
  • vboxaddition (en fonction de la version installée)
  • http://download.virtualbox.org/virtualbox/4.1.14/VBoxGuestAdditions_4.1.14.iso
  • centos
  • http://mirror.ovh.net/ftp.centos.org/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso
On créé l'enveloppe de notre nouvelle box :
vagrant basebox define centos64 CentOS-6.3-x86_64-minimal
Le template 6.4 n'existant pas je pars d'une version 6.3 qui sera downloadée d'internet.
Cela créé un repertoire dans definitions/centos64 très intéressant avec entre un ks.cfg bien connu des admin redhat.
Afin de passer en 6.4 je modifie le fichier definition.rb :
  :os_type_id => 'RedHat_64',
  :iso_file => "CentOS-6.4-x86_64-minimal.iso",
  :iso_src => "",
  :iso_md5 => "4a5fa01c81cc300f4729136e28ebe600",
On retrouve le fichier que j'ai downloadé précédemment (et son md5sum).
Ensuite après avoir adapté les scripts je change cette partie :
:postinstall_files => [
      "top.sh"
  ],
Le fichier sera copié sur le nouveau modèle et executé au moment de la création.
Puis je modifie les fichiers de config qui sont en 2 type :
  1. ks.cfg
  2. Ajout de clavier francais, partitionnement ...
  3. top.sh
  4. il contient en gros les opérations d'installation du modèle (voir le lien de création manuelle de modèle vagrant).
    Ainsi que l'installation des salt-minion (à la place de puppet) pour permettre le provionning au boot à la création de la VM.
On lance la creation de la box :
% veewee vbox build centos64 --debug --redirectconsole
Creating vm centos64 : 480M - 1 CPU - RedHat_64
Creating new harddrive of size 10140, format vdi, variant Standard 
Attaching disk: /data/virt/centos64/centos64.vdi
Mounting cdrom: /data/virt/Vagrant/iso/CentOS-6.4-x86_64-minimal.iso
Mounting guest additions: /data/virt/Vagrant/iso/VBoxGuestAdditions_4.2.14.iso
Received port hint - 7222
Found port 7222 available
Received port hint - 7222
Found port 7222 available
Changing ssh port from 22 to 7222
Waiting 10 seconds for the machine to boot
Received port hint - 7122
Found port 7122 available

C'est assez sympa de voir la vbox créée de zéro et surtout le kickstart est vraiment cool.
On peut le voir sur le screenshot ci dessous où veewee passe les paramètres de boot kickstart au moment du boot de l'iso : veewee-vbox1.png
Veewee est même assez sympa pour créer un server web local qui va répondre à la demande de kickstart.
On suite aussi dans les logs veewee (en mode debug) :
Typing:[1]:  text ks=http://10.0.2.2:7122/ks.cfg
Done typing.
Une fois que cela est terminé, on valide la box :
veewee vbox validate 'centos64'
Je suis un peu dubitatif quand à l'utilité de cette étape car les vérifications sont pas forcement appropriées. Puis on exporte :
veewee vbox export 'centos64'   


Ensuite on peut utiliser cette box dans vagrant avec le provisionning type salt/puppet.
vagrant package --base centos64 
mv /data/virt/Vagrant/package.box /data/virt/Vagrant/centos64.box
On l'ajoute dans notre repository de box :
vagrant box add centOS-6.4 centos6.4.box
Cela va créer dans VAGRANT_HOME un repertoire boxes qui contient les infos pour utiliser ces box. Modifier le fichier Vagrantfile :
  config.vm.box = "centOS-6.4"
On démarre la machine :
pierre@gentoox64 /data/virt/Vagrant $ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'centOS-6.4'
...
On se loggue :
pierre@gentoox64 /data/virt/Vagrant $ vagrant ssh 
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ id 
uid=501(vagrant) gid=501(vagrant) groups=501(vagrant),10(wheel)
[vagrant@localhost ~]$ sudo su - 
[root@localhost ~]#
Pour que Salt soit accessible au provisionnement de virtualbox, il faut ajouter le plugin vagrant/salt qui s'installe très facilement avec l'option plugin de vagrant des dernières versions.
Ces solutions sont vraiments très bien pour créer des environements de tests et de les distribuer.
Il suffira ensuite de donner la box à une personne disponsant de vagrant et la création est un jeu d'enfant.
Par contre le gros point noir est l'installation des composants vagrant/veewee et ruby, très capricieux sur les versions et en général la version de Vagrant est périmée sur les distros (ubuntu par exemple).
De plus l'auteur de vagrant ne propose plus des gems mais des packages.
A notre que le package deb fonctionne sur debian/ubuntu. Ca simplifie pour vagrant mais ne resouds rien pour veewee.
La méthode rvm pour veewee est pour moi la seule qui fonctionne avec des packages de l'auteur (ou gentoo en testing).
Pour un utilisateur simple de box vagrant le package s'est révélé très efficace. PS : J'ai installé sans probleme avec le package de chez vagrant avec ensuite veewee en gem (en temps que user local) avec :
gem install net-scp  # Peut être pas nécessaire car inclus avec fog (à verifier)
gem install fog --version 1.8
gem install veewee
Mettre dans ~/.gemrc pour ne pas installer la partie doc :
install: --no-document
update: --no-document
gem: --no-ri --no-rdoc

mardi, avril 16 2013

Fedora grrr Redhat

RedHat étant un acteur important de l'écosystem linux voir le géniteur de l'opensource dans les datacenter, je suis régulièrement ce qui se passe sous fedora qui est leur bouillon de culture et qui permet de découvrir pas mal de nouvelles choses.
Cependant cette distro est vraiment pas confortable au quotidien car les softs non redhat sont très mal supportés et on doit invariablement passer par l'ajout de repos ou bien la chasse aux rpms sur internet.
Dans mon aventure sur Kokora j'avais une fois de plus noté l'inflation des repos (entre autre pour les produits google) et les problèmes de cohérence de l'ensemble du système.
Travaillant avec vagrant pour faire des usines de test Redhat, j'ai fait un tour sur fedora ou bien évidement le package n'existait pas (alors qu'il est dispo sur ubuntu/gentoo par exemple).
Ensuite l'intégration a vraiment confirmé cette impression de pas fini et du peu de considération de redhat pour les pauvres péquins comme moi.
En gros pour creer un modele de box vagrant il faut packager une virtualbox avec la command vagrant package qui sous fedora créé un fichier temporaire dans /tmp.
Or depuis F18 /tmp est un filesystem tempfs qui fait par defaut la taille de la moitié de la mémoire.
[@fedora .vagrant.d]$ df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           968M   28K  968M   1% /tmp
La creation de la box plante lamentablement et plombe /tmp, il faut en général quelques GB pour creer les package.
De plus virtualbox est pas packagé, il faut ajouter les repos, tout reconstruire à la mimine.
Il y a bien de moyens de changer ce comportement mais au final travailler sous fedora avec virtualbox/vagrant c'est un cauchemar.
Je retourne sous gentoo, sabayon ou même ubuntu où tout est très bien packagé et fonctionne sans problème.
Il reste à mon avis une belle place pour une distro basée sur fedora qui intégrerait bien tous ces composants (et d'autres) suite à la mort fuduntu (encore du aux abus de pouvoir de RH entre gnome/sytemd). car quoi qu'on en dise RH reste le plus gros acteur Linux en entreprise.
Toutes ces reflections me font d'ailleurs penser à la belle place que peuvent trouver Ubuntu ou Opensuse qui font des distributions à la fois orientées enteprises et end user qui sont plus souples et intégrées que le trio boiteux RHEL/CentOS/Fedora.

samedi, avril 13 2013

Virtualbox - Installation pour utilisation CLI


Le but de ce billet est de résumer tous les points que j'ai vu pour avoir une configuration virtualbox complétement contrôlable en ligne de commande avec graphique accessible en VRDP.
Le nom de la VM est guest.

  • Creer un port de connection VRDE
  • Cela permet d'avoir ensuite l'accès à la console car en mode headless impossible de recuperer la console du client lourd.
    La fonctionnalité est fournie avec les extention pack de Virtualbox, à ne pas confondre avec les guest addition.
    Il faut télécharger le pack à cette URL ($VBOXVER est la version virtualbox) :
    http://download.virtualbox.org/virtualbox/$VBOXVER/Oracle_VM_VirtualBox_Extension_Pack-$VBOXVER.vbox-extpack
    Ensuite faire la configuration suivante pour utiliser la fonctionnalité vrde :
    VBoxManage extpack install "fichier downloadé"
    VBoxManage modifyvm guest --vrde on
    VBoxHeadless --startvm guest --vrde config

  • Forwarder port SSH pour le mode NAT
  • La machine arrétée il faut changer les propriétés avec la commande suivante :
    VBoxManage modifyvm "guest" --natpf1 "guestssh,tcp,,2222,,22"
    On pourra ensuite se connecter à la VM avec
    ssh -p 2222 localhost

  • Permettre le server DNS de repondre au requete de l'hote
  • il faut que la VM passe les requetes DNS au guest.
    VBoxManage modifyvm "guest" --natdnshostresolver on

  • Installer le guest addition
  • Cette partie là est à faire sur la machine invitée donc après l'installation.
    Cela necessite une compilation, il faudra donc ajouter les "kernel headers" et autres outils de compilation.
    J'ai trouvé cette page qui détaille bien l'installation.

Ensuite on peut avoir pas mal de details avec les commandes suivantes :
VBoxManage getextradata guest enumerate
VBoxManage showvminfo guest --details
VBoxManage list extpacks
La deuxième commande est particulièrement utile car on peut voir les details VRDP.

On peut aussi voir l'IP de la VM après avoir installé l'ext pack et le VM guest addition.
VBoxManage guestproperty get guest /VirtualBox/GuestInfo/Net/0/V4/IP | awk -F ':' '{print $2}'

Enfin en cas de plusieures VM tournant sur le même hôte, on pourra gérer les différents port VRDP en utilisant un "range" de ports à la declaration :
VBoxManage modifyvm guest --vrdeport 3333-3353


Enfin pour bien ranger ses vm dans un répertoire donné on peut faire un :
VBoxManage setproperty machinefolder /data/VirtualBoxVm/

Je trouve ca vraiment stupide de mettre des fichiers de plusieurs gig dans un fichier caché de la home ....

J'ai compilé tout ca dans mon script de management en mode cli de virtualbox.
Il y a maintenant un version python3 de la chose plus sympa à utiliser : vb.py

samedi, septembre 11 2010

booter sur clé USB via Virtualbox ou qemu

Le but est de tester les distro sur clé usb pour ensuite les utiliser pour installer sur une vraie machine.
Tiré de ce post
  1. On créé un disque dur qui utilise /dev/sdb qui est le device de ma clé usb
  2. VBoxManage internalcommands createrawvmdk -filename /data/virtualbox/HD/testusb.vdi -rawdisk /dev/sdb  -relative -register
  3. On créé la box et regle les parametres
  4. VBoxManage createvm --name  testusb  --register

    VBoxManage modifyvm testusb --acpi on --nic1 nat --ioapic on

    VBoxManage modifyvm testusb --memory 512 --vram 128
  5. On associe le disk virtuel et le driver ide
  6. VBoxManage storagectl  testusb --name "IDE Controller" --add ide

    VBoxManage modifyvm testusb --hda /data/virtualbox/HD/testusb.vdi
  7. Démarrage de la vm
  8. VBoxManage startvm testusb --type gui&
Ou plus simple avec qemu (pour installer equo install app-emulation/qemu-kvm-0.12.5-r1 / verifier version avec equo search qemu).
puis :
qemu-system-x86_64 -m 1024 -usb /dev/sdb