Objectif

  • OpenNebula est une solution de cloud privé, complète et assez simple à mettre en oeuvre
  • La maquette disposera de 4 machines virtuelles :
    • Un routeur DebHub16 ou Pfsense, pour que chaque élève soit isolé
    • Un front-end OpenNebula basé sur Debian 10 64 bits : mémoire 1 Go, disque de 20 Go, 1 processeur, 1 carte réseau
    • Deux noeuds Lxd1 et Lxd2, basés sur Ubuntu 18.04 64 bits : mémoire 1Go, disque de 8 Go, 2 processeurs, 2 cartes réseau

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Le routeur

  • Je ne détaille pas l'installation
  • Ce routeur dispose d'une carte WAN en mode pont et d'une carte LAN locale branché sur le hub virtuel "hub16"

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Installation du front-end

Toutes les opérations suivantes se font sur la machine Debian 10

  • J'utilise une Debian 10 64 bits "netinstall". Installation d'un simple serveur sans interface graphique. ISO : https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso
  • Accès root uniquement. S'il y a un autre utilisateur, je le supprime.
  • J'ajoute le paquet "xfce4" pour avoir une interface graphique minimaliste.
  • Les paquets "wget", "ssh", "dnsmasq" et "gpg" doivent être ensuite installés.
  • Dans le fichier de configuration "/etc/ssh/sshd_config", autorisez l'accès au compte root, avec la ligne "PermitRootLogin yes". Lorsque la configuration sera totalement terminée, vous pourrez autoriser seulement l'accès avec un certificat : "PermitRootLogin prohibit-password"
  • Ajoutez la clé de vérification, puis ajoutez le dépot :
wget -q -O- https://downloads.opennebula.org/repo/repo.key | apt-key add -
echo "deb https://downloads.opennebula.org/repo/5.10/Debian/10 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
apt update
  • Installez le font-end :
apt-get install opennebula opennebula-sunstone opennebula-gate opennebula-flow
  • Je n'utilise pas de base de données Mysql. OpenNebula crée donc automatiquement une base Sqlite.
  • Dans le fichier "/var/lib/one/.one/one_auth", configurez le mot de passe pour oneadmin : "oneadmin:btsinfo"
  • Lancez OpenNebula :
systemctl start opennebula
systemctl start opennebula-sunstone 
  • Attention les services ne redémarre pas automatiquement après un reboot. j'ai essayé la méthode officielle "systemctl enable opennebula" sans succès. J'ai donc simplement ajouté les deux lignes précédentes à la fin du fichier "/etc/rc.local" (c'est une solution temporaire).
  • Vous devriez maintenant avoir accès à l'interface web : "https://127.0.0.1:9869". Utilisez le login "oneadmin" et le mot de passe défini dans "one_auth".
  • Configurez le réseau avec une adresse ip fixe dans "/etc/network/interfaces" :
allow-hotplug
iface enp0s3 inet static
address 192.168.16.100
netmask 255.255.255.0
gateway 192.168.16.254
  • Puis le DNS dans "/etc/resolv.conf" :
nameserver 127.0.0.1

Dnsmasq

  • Les machines doivent recevoir un nom qu'il il faut associer à une adresse IP. Une solution possible est de configurer le fichier hosts de chaque machine (front-end et noeuds).
  • Dnsmasq permet une autre approche : utiliser un seul fichier /etc/host sur le fornt-end. Ce fichier sera visible via le protocole DNS (port 53)
  • Indiquez le nom de la machine dans "/etc/hostname" : nebula
  • Complétez le fichier "/etc/hosts" :
127.0.0.1     localhost
192.168.16.100     nebula
192.168.16.101     lxd1
192.168.16.102     lxd2
  • Configurez dnsmasq, dans le fichier "/etc/dnsmasq.conf
domain-needed
bogus-priv
no-resolv
server=1.1.1.1
  • Après un reboot , votre front-end doit être totalement fonctionnel.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Installation du noeud Lxd1

Sur Lxd1

  • Lxd1 doit disposer d'au moins deux coeurs de processeur
  • Les cartes réseau doivent être configuré en mode "promisc", sinon le réseau ne fonctionnera pas.
  • OpenNebula impose l'utilisation de LXD 3.0. Cette version est uniquement disponible sur Ubuntu 18.04 ou plus récent.
  • J'utilise une Ubuntu 18.04 64 bits "netinstall". Installation d'un simple serveur sans interface graphique. ISO : http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso
  • Accès root uniquement. S'il y a un autre utilisateur, je le supprime.
  • Indiquez le nom de la machine dans "/etc/hostname" : lxd1
  • La méthode de configuration du réseau "netplan" pose problème. Il faut revenir à "ifupdown". Le nom des interfaces peut rester en enp0s3 et enp0s8. Voir l'article sur le downgrade du réseau
  • Voici la configuration du fichier /etc/network/interfaces :
auto lo
auto lo inet loopback

auto br0
iface br0 inet static
address 192.168.16.101
netmask 255.255.255.0
gateway 192.168.16.254
bridge_ports enp0s3
bridge_stp off
bridge_fd 2
bridge_maxwait 0

iface br1 inet static
address 192.168.17.101
netmask 255.255.255.0
bridge_ports enp0s8
bridge_stp off
bridge_fd 2
bridge_maxwait 0
  • Créez un nouveau fichier /etc/resolv.conf (à la place du lien), avec l'adresse IP de la machine qui héberge le fichier host et dnsmasq (le front-end) :
nameserver = 192.168.16.100
  • Redemarrez
  • Le réseau doit être totalement fonctionnel avant de poursuivre
  • Les paquets "wget", "ssh" et "gpg" doivent être ensuite installés.
  • Dans le fichier de configuration "/etc/ssh/sshd_config", autorisez l'accès au compte root, avec la ligne "PermitRootLogin yes". Lorsque la configuration sera totalement terminée, vous pourrez autoriser seulement l'accès avec un certificat : "PermitRootLogin prohibit-password"
  • Ajoutez la clé de vérification, puis ajoutez le dépot :
wget -q -O- https://downloads.opennebula.org/repo/repo.key | apt-key add -
echo "deb https://downloads.opennebula.org/repo/5.10/Debian/10 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
apt update
  • Installez le font-end :
apt-get install opennebula-node-lxd

Sur le front-end

Configurez ssh pour qu'un dialogue puisse s'établir entre lxd1 et nebula, à l'aide de certificats :

  • Ajoutez les clés d'anti-usurpation dans le fichier /var/lib/one/.ssh/known_hosts :
ssh-keyscan nebula >> /var/lib/one/.ssh/known_hosts
ssh-keyscan lxd1 >> /var/lib/one/.ssh/known_hotst
  • Puis copiez le contenu du dossier .ssh vers lxd1 :
scp -rp /var/lib/one/.ssh lxd1:/var/lib/one
  • Vous pouvez vérifier maintenant que le compte "oneadmin" a accès à lxd1 sans utiliser de mot de passe :
su oneadmin
ssh lxd1
exit
exit

Sur Lxd1

  • Vous pouvez effacer le contenu du fichier "/var/lib/one/.ssh/known_host" (mais ne pas l'effacer)
  • Modifiez ensuite le propriétaire:groupe des fichiers dans .ssh
chown oneadmin:oneadmin /var/lib/one/.ssh/*
  • Vous pouvez vérifier maintenant que le compte "oneadmin" a accès à nebula sans utiliser de mot de passe :
su oneadmin
ssh nebula
exit
exit

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Installation du noeud Lxd2

  • Reprenez exactement le même principe que pour Lxd1.
  • La commande "ssh-keyscan nebula ..." n'est bien sur plus nécessaire.