Préparation du prochain cours

20 avril 2021


Mise en situation

Pour les prochains cours; installation de K8s, NFS, les volumes et Ingress Controllers, nous aurons besoin de trois machines virtuelles de type Ubuntu serveur 20.04.

Il est possible de ‘scripter‘, avec Vagrant, la création, la configuration et l’installation de machines virtuelles, incluant les packages supplémentaires comme par exemple, ‘apt install docker‘.

En procédant ainsi, nous n’aurons pas à créer et à installer manuellement les VM.

En pré-requis, il faut installer un hyperviseur de virtualisation. Dans le cas qui nous intéresse, nous utiliserons Virtualbox.

Je vous demande d’installer Vagrant, et à partir d’un fichier Vagrantfile, fournit avec ce document, de créer les trois VM nécessaires pour la suite de nos apprentissages.

Si jamais, pour une raison technique, vous n’arrivez pas à démarrer les trois VM avec Vagrant, alors vous devrez installer manuellement trois serveurs Ubuntu dans VirtualBox.

Dans ce cas, je vous demande de communiquer avec moi, via Teams, pour recevoir du support technique.


Étape 1 – Installer Vagrant sur votre ordinateur

Note: Vagrant est disponible pour Windows, MacOS et Linux.


Étape 2 – Enregistrer le fichier ‘Vagrantfile’ suivant:

# -*- mode: ruby -*-
# vi: set ft=ruby :
# =========================================================================
# Nom du fichier:     Vagrantfile
# Auteur:             Alain Boudreault
# Date:               2021.04.07
# -------------------------------------------------------------------------
# M-A-J: 2021.04.15 - Ajout du routage des paquets IP et du DNS local
# -------------------------------------------------------------------------
# Démarrage:          vagrant up
# Lister les VM:      vagrant global-status
# Login via vagrant:  vagrant ssh nomDeLaMachine
#   Pour passer en mode root: sudo -s 
#   Pour permettre ssh:       sudo passwd vagrant
#
# Login direct:       ssh vagrant@ip (password=vagrant)
# Arrêt des VM:       vagrant halt
# Suppression des VM: vagrant destroy    
# =========================================================================
# https://raw.githubusercontent.com/ve2cuy/4204d4/main/module06/Vagrantfile
# ---------------
# Voici un exemple K8s complet: https://github.com/ansilh/k8s-vagrant
# =========================================================================

Vagrant.configure("2") do |config|
  # master server
  config.vm.define "k8s-master" do |kmaster|
    kmaster.vm.synced_folder '.', '/vagrant', disabled: true
    kmaster.vm.box = "ubuntu/focal64"
    kmaster.vm.hostname = "k8s-master"
    # Installer docker sur la VM
    kmaster.vm.provision "docker"
    kmaster.vm.box_url = "ubuntu/focal64"
    kmaster.vm.network :private_network, ip: "192.168.56.101"
    kmaster.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
      v.customize ["modifyvm", :id, "--memory", 2048]
      v.customize ["modifyvm", :id, "--name", "k8s-master"]
      v.customize ["modifyvm", :id, "--cpus", "2"]
    end
    # Activation du ssh hors vagrant:    
    config.vm.provision "shell", inline: <<-SHELL
      sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config    
      service ssh restart
      # Activer le routage des paquets IP entre les réseaux
      echo "[SCRIPT][INFO] Activer le routage des paquets IP entre les réseaux:"
      sysctl -w net.ipv4.ip_forward=1
      sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
      echo "[SCRIPT][INFO] Activer la résolution DNS pour les applications locales"
      systemctl enable systemd-resolved.service
      systemctl start  systemd-resolved.service
    SHELL
  end

  # Création des noeuds ouvriers:
  numberSrv=2
  (1..numberSrv).each do |i|
    config.vm.define "k8s-node#{i}" do |knode|
      knode.vm.synced_folder '.', '/vagrant', disabled: true
      knode.vm.box = "ubuntu/focal64"
      knode.vm.hostname = "k8s-node#{i}"
      # Installer docker sur la VM
      knode.vm.provision "docker"
      knode.vm.network "private_network", ip: "192.168.56.10#{i+1}"
      knode.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
        v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
        v.name = "k8s-node#{i}"
        v.memory = 1024
        v.cpus = 1
      end
      # Activation du ssh hors vagrant:
     config.vm.provision "shell", inline: <<-SHELL
       sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config    
       service ssh restart
      # Activer le routage des paquets IP entre les réseaux
      echo "[SCRIPT][INFO] Activer le routage des paquets IP entre les réseaux:"
      sysctl -w net.ipv4.ip_forward=1
      sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
      echo "[SCRIPT][INFO] Activer la résolution DNS pour les applications locales"
      systemctl enable systemd-resolved.service
      systemctl start  systemd-resolved.service
     SHELL
    end
  end
end

NOTE: Il est possible d’obtenir la version la plus récente de ce Vagrantfile ainsi:

wget https://raw.githubusercontent.com/ve2cuy/4204d4/main/module06/Vagrantfile

# Ou

curl https://raw.githubusercontent.com/ve2cuy/4204d4/main/module06/Vagrantfile > Vagrantfile

 


3 – Lancer l’environnement virtuel de Vagrant

À partir, absolument, du dossier abritant le fichier ‘Vagrantfile’;

$ vagrant up

Si cette opération affiche un message d’erreur, il faut m’en aviser.

NOTE IMPORTANTE: L’opération précédente ne va fonctionner que si Vagrant est installé dans votre OS et peut durer de nombreuses minutes.

Suite à quoi, il devrait y avoir TROIS (3) VM Ubuntu en marche sur votre ordinateur.

Il est possible de vérifier avec la commande suivante:

alain@k8s:~$ vagrant status
Current machine states:

k8s-master                running (virtualbox)
k8s-node1                 running (virtualbox)
k8s-node2                 running (virtualbox)

3.1 – Tester une des VM

Pour tester une VM, il suffit d’y ouvrir une session ssh avec la commande:

$ vagrant ssh k8s-master

NOTE: À partir d’un même réseau IP, il est aussi possible de se connecter directement à une VM Vagrant:

monPC $ ssh vagrant@192.168.56.101

# mot de passe: vagrant

# Pour ce faire, il faut avoir avec une carte d'interface réseau dans la même classe IP que la CIR de la VM.

 


3.2 – Arrêt des VM

Pour arrêter les VM, sans les effacer;

vagrant halt

# Si la VM ne répond pas alors
vagrant halt --force

3.3 – Effacer les VM et récupérer l’espace disque;

vagrant destroy

NOTE: Cette opération est irréversible.  Toutes les modifications apportées aux VM seront perdues.

3.4 – Relancer les VM;

vagrant up

4 – Et pour terminer

Pensez à faire un arrêt des VM Vagrant car elles consomment des ressources de votre ordinateur. Voir 3.2.

ATTENTION: Toutes les commandes du cli de Vagrant doivent être exécutées à partir du dossier qui contient le fichier ‘Vagrantfile‘.

 


Document rédigé par Alain Boudreault – aka, ve2cuy – version 2021.04.22.01