# 02-Installation

## <span style="text-decoration: underline; color: rgb(45, 194, 107);">**A - Paramétrage :**</span>

### <span style="color: rgb(53, 152, 219);">**1. VMware :**</span>

##### **Message UUID dans Syslog :**

Sur Ubuntu 20, le syslog est vite noyé avec des messages UUID, il y a un petit réglage à effectuer côté VMWARE :

<p class="callout info">[https://www.suse.com/support/kb/doc/?id=000016951](https://www.suse.com/support/kb/doc/?id=000016951)</p>

Pour faire simple il faut arrêter la VM et ajouter un attribut sur les VM Ubuntu 20 :

```bash
disk.EnableUUID = "TRUE"
```

##### **VMware tools :**

```
# Installation des VMware Tools :
apt install open-vm-tools
```

### <span style="color: rgb(53, 152, 219);">**1. Gestion date et heure:**</span>

```bash
# Changer la date :
date -s "02/18/2017 12:34:00"

# Changer le fuseau horaire :
rm /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
# Pour que le changement de fuseau survive au redémarrage de la machine, il faut aussi le mettre dans le bon fichier.
vi /etc/timezone
ZONE="Europe/Paris"

# Ce qui donne en une seule commande :
sudo su
rm /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
cat > /etc/timezone << eof
ZONE="Europe/Paris"
eof
cat /etc/timezone
exit
date
```

### <span style="color: rgb(53, 152, 219);">**3. Accès SSH :**</span>

<p class="callout info">L'algorithme ssh-rsa est désactivé dans la version de SSH livrée dans Ubuntu 22.04 car il utilise la fonction cryptographique SHA-1 qui est jugée dangereuse depuis des années.  
La connexion SSH de guacamole vers ce serveur ne fonctionne pas. Il est nécessaire de réactiver temporairement la connexion RSA en attendant la mise à jour de Guacamole.</p>

<p class="callout info">Source : [http://shaarli.guiguishow.info/?4DVyLA](http://shaarli.guiguishow.info/?4DVyLA)</p>

```bash
vi /etc/ssh/sshd_config
```

```bash
# JKT-20220517 - Connexion Guacamole :
# Source : http://shaarli.guiguishow.info/?4DVyLA
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

/etc/init.d/ssh restart
```

### <span style="color: rgb(53, 152, 219);">**4. Prérequis :**</span>

```bash
# Mise à jour du serveur :
apt-get update && apt-get upgrade -y

# Installation des utilitaires :
apt-get install ntp postfix

# Installation de la supervision :
apt-get install nagios-nrpe-server nagios-plugins -y
```

#### <span style="color: rgb(35, 111, 161);">***Ajout du disque de stockage BTRFS pour LXC :***</span>

##### **Disque LXC :**

Ce disque est dédié pour stocker les CT LXC.  
On ne configure pas de base ce disque qui va être géré directement par LXC en BTRFS.  
Il ne faut pas configurer le disque en ZFS car cela nécessite une configuration avancé du paramètre ashift.  
Par défaut l'ashift est de 512byte =2^9  
Hors sur les serveurs les secteurs sont à minima 4k = 2^12  
Ce qui fait qu'il va écrire sur les disques 8 fois plus et cela va également générer un problème de fragmentation du disque et à terme une panne accéléré du disque.

### <span style="color: rgb(53, 152, 219);">**5. Installation de LXC :**</span>

Certaines terminologies courantes utilisées avec LXC incluent :  
chroot - Chroot, également appelé changement de racine ou changement de racine, est une section du système de fichiers isolée du reste du système de fichiers. Un programme exécuté dans cet environnement ne peut pas accéder aux fichiers en dehors de l'arborescence de répertoires désignée.  
cgroups - Il s'agit d'une fonctionnalité du noyau qui permet d'agréger ou de partitionner des tâches (processus) et tous leurs enfants en groupes organisés hiérarchiquement pour isoler les ressources.

```bash
# Installation de lxd et des outils associés :
# sudo apt install lxd lxc-utils iraf-dev zfsutils-linux -y
sudo apt install lxc lxd-installer
```

#### <span style="color: rgb(35, 111, 161);">***Ajouter un utilisateur au groupe LXD à des fins de gestion :***</span>

Pas besoin d'être l'utilisateur root pour gérer le démon LXD. Pour gérer le serveur LXD, ajoutez votre nom d'utilisateur au groupe lxd à l'aide de la commande adduser sur Ubuntu Linux:

```bash
sudo adduser adminme lxd
```

#### <span style="color: rgb(35, 111, 161);">***Configurer les options de mise en réseau et de stockage LXD :*** </span>

Maintenant que nous avons installé LXD, il est temps de configurer le serveur LXD. Vous devez configurer l'option de mise en réseau et de stockage telle que le répertoire, ZFS, Btrfs, etc., entrez :

```bash
sudo lxd init
```

Ensuite, vous devez répondre à une série de questions sur la façon de configurer le serveur LXD, y compris l'option de stockage et de mise en réseau.   
Voici un exemple de session que j'ai configuré pour ZFS et le sous-réseau NAT 10.105.28.1/24. N'hésitez pas à choisir les options selon vos besoins:

Prérequis pour la préparation du stockage en ZFS :

```bash
sudo lxd init

Would you like to use LXD clustering? (yes/no) [default=no]: # no
Do you want to configure a new storage pool? (yes/no) [default=yes]: # yes
Name of the new storage pool [default=default]: # lxc-storage01
Name of the storage backend to use (ceph, btrfs, dir, lvm, zfs) [default=zfs]: # btrfs
Create a new BTRFS pool? (yes/no) [default=yes]: # yes
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: # yes
Path to the existing block device: /dev/disk/by-id/scsi-36000c2920fa37484c1bbc95b339370e5 # Stockage sdb
Would you like to connect to a MAAS server? (yes/no) [default=no]: # no
Would you like to create a new local network bridge? (yes/no) [default=yes]: # yes
What should the new bridge be called? [default=lxdbr0]: # lxdbr0
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: # 192.168.25.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: # yes 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: # none
Would you like the LXD server to be available over the network? (yes/no) [default=no]: # no
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] # yes
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: # no

# Redémarrer le serveur :
reboot
```

Vous êtes ensuite invité à configurer un pont réseau pour les conteneurs LXD. Cela active les fonctionnalités suivantes :  
\- Chaque conteneur obtient automatiquement une adresse IP privée.  
\- Chaque conteneur peut communiquer entre eux sur le réseau privé.  
\- Chaque conteneur peut initier des connexions à Internet.  
\- Chaque conteneur reste inaccessible depuis Internet par défaut ; vous ne pouvez pas initier une connexion à partir d'Internet et atteindre un conteneur à moins que vous ne l'activiez explicitement. Vous apprendrez à autoriser l'accès à un conteneur spécifique à l'étape suivante.

Nous pouvons vérifier les informations en tapant les commandes suivantes:

```bash
lxc profile list
lxc profile show default

lxc network list
lxc network show lxdbr0

lxc storage list
lxc storage show lxc-storage01

sudo btrfs filesystem show
```

#### <span style="color: rgb(35, 111, 161);">***Configurer VIM pour éditer la configuration des CT à la place de nano*** </span>

Par défaut, nano est utilisé pour l'éditer de la configuration des containers. La documentation suivante permet de modifier l'éditeur et utilise vim.

Source : https://askubuntu.com/questions/1116800/change-default-editor-in-lxd-snap

```bash
# Modification de l'éditeur :
echo 'export EDITOR=vim' >> ~/.profile 
source ~/.profile

# Test :
lxc config edit $CTNAME
```