3. Environnement de lab

Pour éprouver localement OpenStack en phase d'apprentissage, il est recommandé de l'installer soi-même sur une instance de développement.

1. Caractéristiques matérielles

L'ordinateur qui hébergera la solution devra répondre aux caractéristiques minimales suivantes :

  • 16-32 Go RAM
  • 8-16 CPU
  • Host-passtrough
  • 128-256 Go HD
  • eth0 réseau public externe pontée (au minimum)
  • Deux interfaces privées eth1 et eth2
  • Ubuntu minimum 16.04 et + ou Centos 7

2. Virtualisation d'OpenStack

Plusieurs possibilités nous sont offertes :

  • VirtualBox
  • Qemu/KVM
  • LXD

3. Concurrence des hyperviseurs

Il ne peut y avoir qu'un hyperviseur qui profitent des ressources de virtualisations CPU/RAM : VirtualBox, KVM, VMware sont donc incompatibles. Il faut faire un choix.

4. VirtualBox

VirtualBox est hyperviseur de type 2 très souple, performant et très bien integré sur toutes plateformes mais il est tout sauf libre. Il reste toutefois un outil très fonctionnel pour une solution mono-poste.

5. KVM

KVM est l'hyperviseur du noyau Linux. Il est accompagné de QEMU et de pilotes de périphériques I/O virtualisé intégrés aux noyaux des invités Linux récents. QEMU/KVM peut entre autres se manipuler dans l'espace utilisateur par la librairie libvirt qui fournit les facilités de connectivité au réseau et de support aux disques. Libvirt offre une interface en ligne de commande virsh. Pour plus d'information sur QEMU, il existe un article dédié : Virtualisation KVM

Ces outils sont essentiels à maîtriser dans le domaine de la virtualisation des ordinateurs x86.

6. LXD

LXD est un gestionnaire de conteneurs (virtualisation OS) qui se fonde sur LXC (bas niveau). Alors que Docker vise à déployer des applications, LXD vise à déployer ce qui ressemble plus à des machines virtuelles.

Canonical supporte LXD est propose des interfaces pour un service openstack "nova-lxd" et pour déployer un lab léger OpenStack (OpenStack Developer Edition sur Ubuntu).

LXD probablement beaucoup plus performant que KVM.

7. Configuration matérielle et environnement de l'hôte de virtualisation

Configuration Matérielle : C2L chez Scaleway

  • Serveur Bare-Metal
  • 8 CPUs (Intel AtomC2750 @ 2.40GHz)
  • 32 Go RAM
  • 50 Go SSD pour le système
  • 250 Go SSD (W: 495 MB/s, R: 2.2 GB/s) /dev/sda1 monté sur /home
  • 800 Mbps dédiés matériels
  • instructions de virtualisation accessibles

Système d'exploitation : Ubuntu Bionic (18.04)

Environnement de virtualisation, au choix :

  • Virtualbox (5.2.18)
  • Libvirt/ KVM

Version d'OpenStack :

  • Pike

Utilisateur privilégié : stack (HOME=/home/stack)

Cet machine est notre machine d'expérimentation. Elle est dédiée uniquement aux exercices sur OpenStack. Ce serveur "Bare-Metal" est appelé "hôte de virtualisation" dans ce document.

Le livre de jeu Ansible pour l'approvisionnement indique les étapes suivantes :

#ansible-playbook stacktrain.yml --list-tasks
#playbook: stacktrain.yml

  play #1 (all): SCALEWAY PROVISIONNING    TAGS: [start]
    tasks:
      Scaleway provisionning    TAGS: [start]

  play #2 (all): MOUNT /dev/sda1 ON /opt    TAGS: [mount]
    tasks:
      mount the additional block device    TAGS: [mount]

  play #3 (all): UPGRADE AND INSTALL NEEDED SOFTWARES    TAGS: [requs]
    tasks:
      Ensure en_US.UTF-8 locale exists    TAGS: [requs]
      upgrade all packages    TAGS: [requs]
      ensure dependencies are installed    TAGS: [requs]

  play #4 (all): REBOOT SCALEWAY SERVER    TAGS: [reboot]
    tasks:
      restart scaleway    TAGS: [reboot]

  play #5 (all): FINISH INSTALLATION    TAGS: [post]
    tasks:
      install missing linux kernel headers    TAGS: [post]
      install virtualbox    TAGS: [post]
      install kvm    TAGS: [post]
      Send SSH Key    TAGS: [post]

8. Solutions de déploiement rapide d'OpenStack

On trouvera au moins quatre solutions de déploiement rapide (test/dev) : RDO, DevStack, Openstack Ubuntu conjure-up, OpenStack Training Labs.

  1. OpenStack Training Labs avec KVM ou Virtualbox
  2. DevStack - https://github.com/openstack-dev/devstack en natif
  3. Conjuring Up OpenStack with NovaLXD en natif
  4. Packstack - RDO Project

9. Utilisateur Sudoer stack

useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/stack
sudo su - stack
cat << EOF >> .bashrc
export LANG=en_US.utf-8
export LC_ALL=en_US.utf-8
EOF