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
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"
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/6.0/Debian/10 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
apt update
- Installez le font-end :
apt install opennebula opennebula-sunstone opennebula-gate opennebula-flow opennebula-fireedge
- 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
systemctl start opennebula-fireedge
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).- Lancez "systemctl enable opennebula", "systemctl enable opennebula-sunstone", puis "systemctl enable opennebula-fireedge".
- 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 enp0s3 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 front-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.
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
- Installez avec apt le paquet "bridge-utils"
- Redemarrez
- 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/6.0/Ubuntu/18.04 stable opennebula" > /etc/apt/sources.list.d/opennebula.list
- Installez le font-end :
apt update
apt 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_hosts
- Assurez vous que le dossier /var/lib/one appartienne à oneadmin :
chown -R oneadmin:oneadmin /var/lib/one
-
Puis copiez le contenu du dossier .ssh vers lxd1 :
scp -rp /var/lib/one/.ssh lxd1:/var/lib/one
Sur Lxd1
- Assurez vous que le dossier /var/lib/one appartienne à oneadmin :
chown -R oneadmin:oneadmin /var/lib/one/
- 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
- Le même test ssh peut aussi être réalisé avec "oneadmin" à partir d'opennebula vers Lxd1.
Installation du noeud Lxd2
- Reprenez exactement le même principe que pour Lxd1.