# Virt - Divers

# Archipel

Archipel : interface de gestion de machines virtuelles Xen, KVM, OpenVZ, VirtualBox par échange de messages XMPP (protocole de messagerie instantanée).

Installation sur Squeeze : [https://github.com/primalmotion/Archipel/wiki/Installation-manual](https://github.com/primalmotion/Archipel/wiki/Installation-manual)

## <span class="mw-headline" id="bkmrk-ejabberd-0">ejabberd</span>

### <span class="mw-headline" id="bkmrk-installation-1">Installation</span>

Sur un des serveurs hôtes (les autres serveurs Archipel feront appel à lui)

Modules ejabberd (mod\_admin\_extra et ejabberd\_xmlrpc) :

La librairie erlang-xmlrpc n'est pas fournie par Debian. On doit la construire.

```
cd /usr/local/src
wget <a class="external free" href="http://ejabberd.jabber.ru/files/contributions/xmlrpc-1.13-ipr2.tgz" rel="nofollow">http://ejabberd.jabber.ru/files/contributions/xmlrpc-1.13-ipr2.tgz</a>
tar -xzf xmlrpc-1.13-ipr2.tgz
cd xmlrpc-1.13/src
vi Makefile
```

Remplacer :

- XMERL\_PATH=../../xmerl par XMERL\_PATH=/usr/lib/erlang/lib/xmerl-1.2.5
- $(XMERL\_PATH)/inc par $(XMERL\_PATH)/include

Puis

```
make
cp -a xmlrpc-1.13 /usr/lib/erlang/lib/
```

Obtenir les sources des modules

```
cd /usr/local/src
svn checkout <a class="external free" href="http://svn.process-one.net/ejabberd-modules/" rel="nofollow">http://svn.process-one.net/ejabberd-modules/</a>
cd /usr/local/src/ejabberd-modules/ejabberd_xmlrpc/trunk
./build.sh
cp ebin/ejabberd_xmlrpc.beam /usr/lib/ejabberd/ebin/
cd /usr/local/src/ejabberd-modules/mod_admin_extra/trunk/
./build.sh
cp ebin/mod_admin_extra.beam /usr/lib/ejabberd/ebin/
```

### <span class="mw-headline" id="bkmrk-configuration-0">Configuration</span>

```
mv /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.dist
vi /etc/ejabberd/ejabberd.cfg
```

Copier dans ce fichier vide le contenu du .cfg donné sur la page d'install [https://github.com/primalmotion/Archipel/wiki/Ejabberd-configuration-sample](https://github.com/primalmotion/Archipel/wiki/Ejabberd-configuration-sample).

Remplacer "FQDN" par le nom fqdn réèl du serveur (au moins 2 occurences).

Remplacer /opt/ejabberd-2.1.6/conf/server.pem par /etc/ejabberd/ejabberd.pem

Relancer ejabberd

Créer un compte admin XMPP

```
ejabberdctl register admin your.fqdn.com yourpassword
```

Tester ejabberd

```
/etc/init.d/ejabberd live
```

Pour sortir taper q()

## <span class="mw-headline" id="bkmrk-archipel-agent-0">Archipel Agent</span>

### <span class="mw-headline" id="bkmrk-installation-2">Installation</span>

Sur chacun des serveurs à administrer

Installer Git

```
apt-get install git
```

puis cloner le repository Archipel

```
cd /usr/local/src
git clone <a class="external free" href="git://github.com/primalmotion/Archipel.git" rel="nofollow">git://github.com/primalmotion/Archipel.git</a>
cd Archipel
```

Installer les tools python (pour avoir easy\_install)

```
apt-get install python-pip
easy_install /usr/local/src/Archipel/ArchipelAgent/archipel-agent
```

Puis lancer le script de post-install

```
archipel-initinstall
```

A la fin de l'installation, on doit avoir le message :

```
# Installation initialization started
 - installing init script to /etc/init.d/archipel: [OK]

 - installing configuration to /etc/archipel:      [OK]

 - installing data folder to /var/lib/archipel     [OK]

[SUCCESS] : installation initialization complete

 ** IMPORTANT NOTE 1: you now need to edit /etc/archipel/archipel.conf top match your informations **
 ** IMPORTANT NOTE 2: if this is not already done, you need to run archipel-tagnode and archipel-rolesnode **
```

Editer le fichier de configuration :

```
vi /etc/archipel/archipel.conf
```

Remplacer "xmpp\_server = REPLACE\_THIS\_WITH\_YOUR\_XMPP\_SERVER\_FQDN" par le fqdn réèl du serveur

remplacer éventuellement le chemin des VM vm\_base\_path (ou carrément la racine archipel\_folder\_data)

**NOTE Debian Squeeze** : créer un lien "/usr/bin/qemu-img" vers "/usr/bin/kvm-img"

Lancer Archipel

```
/etc/init.d/archipel start
```

### <span class="mw-headline" id="bkmrk-post-install-0">Post install</span>

```
archipel-tagnode --jid=admin@FQDN --password=YOURPASSWORD --create
archipel-rolesnode --jid=admin@FQDN --password=YOURPASSWORD --create
```

(Pubsub signifie PUBlishers and SUBscribers). Permet le push des messages de création de tags (recherches) et de rôles (permissions).

### <span class="mw-headline" id="bkmrk-mise-%C3%A0-jour-0">Mise à jour</span>

```
easy_install -U archipel-agent
/etc/init.d/archipel restart
```

(Si la configuration a changé, il faudra relancer archipel-initinstall, mais ce n'est pas nécessaire dans le cas contraire)

### <span class="mw-headline" id="bkmrk-notes-0">NOTES</span>

- Les images iso doivent être dans $(archipel\_folder\_data)/iso
- Les images vdisks seront créées dans $(archipel\_folder\_data)/drives/&lt;UUID&gt;. Si aucune extension n'est donnée, il prend l'extension correspondant au format de fichier à créer (qcow2 par défaut).

## <span class="mw-headline" id="bkmrk-installation-client-0">Installation Client</span>

**NOTE ARCHITECTURE** : le client se connecte en premier au serveur ejabberd (avec son JID). Ensuite on lui enregistre des "contacts" (les "hyperviseurs" correspondant aux agents installés sur les serveurs). Le serveur ejabberd peut donc être seul sur un serveur à part.

Utiliser [http://app.archipelproject.org](http://app.archipelproject.org/) (client disponible en ligne), ou installer le client nightly à partir de [http://nightlies.archipelproject.org/](http://nightlies.archipelproject.org/) (à décompresser, puis lancer index.html dans le navigateur du poste).

Avec Chromium en local : lancer chromium --disable-web-security sinon il refuse d'executer un file://....

Pour mettre le client sur un apache centralisé (comme app.archipelproject.org), créer un virtualhost apache et juste décompresser le tar dans le DocumentRoot du vhost : **A LA RACINE** (pas dans un sous-rep Archipel comme le crée le tar.gz !)

TODO : Sécurité : il faudra mettre ça en https et ajouter un .htaccess ?

- Enregistrer un hyperviseur:

bouton "+" en bas à gauche, donner le JID et un alias

- Enregistrer une VM créé par libvirt (ex : avec virt-manager) :

```
virsh dumpxml testdeb  | grep uuid
archipel-importvirtualmachine --file=/var/lib/archipel/hypervisor.sqlite3 --uuid=52df5ff8-9cff-c75d-df55-08b2f138652c --xmppserver=ysabell.systea.net --name=testdeb
```

Puis dans le GUI, onglet "virtual machine", double cliquer sur l'uuid dans la liste et "accepter le contact"

### <span class="mw-headline" id="bkmrk-utilisation-du-gui-0">Utilisation du GUI</span>

- Création VM

!! attention a activer ACPI et APCI dans la definition, et vérifier que l'os invité les gère, sinon on ne pourra pas interagir avec la VM (shutdown, pause...)

- Création vdisk
- Onglet Chat : chatter directement avec la VM !

```
taper "help" dans la zone de saisie pour avoir les commandes de base
```