6 – Industrialisation : installation d’ansible

J’aime bien automatiser les choses et l’installation par défaut de debian est bien mais pas trop. Alors on va utiliser ansible pour mettre tout ça au carré.

Tout d’abord il faut installer et configurer ansible. Sur votre debian :

apt install ansible

Un petit peu de configuration est nécessaire pour ansible. Votre fichier /etc/ansible/hosts doit ressembler à ça :

[base]
hv010

[hypervisors]
hv010

la section entre crochet définie un groupe et en dessous les machines faisant partie du groupe. Ici notre hyperviseur fait à la fois parti du groupe base du groupe hypervisors. Donc les règles que nous allons définir pour la configuration de base et pour celle des hyperviseurs s’appliqueront à hv010

Enfin nous allons mettre à jour notre fichier /etc/hosts pour faire le lien entrehv010 et son ip :

192.168.0.24 hv010

On vérifie que tout fonctionne correctement

oaudry@aragorn:~$ ansible all -u root -m ping
smobe-hv010 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Et on passe à la suite

5 – Première connexion

En premier lieu il va falloir identifier l’ip de la nouvelle machine. On se connecte en console (écran et clavier) et en root dessus  :

root@hv010:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp6s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether d8:5d:4c:80:45:21 brd ff:ff:ff:ff:ff:ff
3: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e0:d5:5e:14:d5:f1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.47/24 brd 192.168.0.255 scope global enp0s31f6
       valid_lft forever preferred_lft forever
    inet6 fe80::e2d5:5eff:fe14:d5f1/64 scope link 
       valid_lft forever preferred_lft forever

Donc notre ip wan est 192.168.0.47. On remarquera au passage une des nouveautés de cette Stretch : le nommage assez pénible des interfaces réseaux. Ici enp0s31f6 et enp6s0. Il y a tout un tas de très bonnes raisons à ça alors on va s’y faire. C’est comme systemd 🙂

Ensuite par défaut il n’est pas possible de se connecter en ssh en root. Alors on va se connecter avec notre utilisateur et ensuite passer root avec ‘su -‘

Pour se connecter en ssh en root directement sans se prendre la tête et en gardant une certaine sécurité on utilise des clés.  Avant toute chose nous allons vérifier que vous n’en avez pas déjà une :

ls -l ~/.ssh/id_rsa*
-rw------- 1 oaudry oaudry 1679 févr. 19  2015 /home/oaudry/.ssh/id_rsa
-rw-r--r-- 1 oaudry oaudry  396 févr. 19  2015 /home/oaudry/.ssh/id_rsa.pub

id_rsa est la clé privé que vous devez garder bien au chaud
id_rsa.pub est la clé publique que vous allez partager

Si vous n’en avez pas vous pouvez générer une clé ssh sur la machine que vous utilisez avec la commande :

ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oaudry/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/oaudry/.ssh/id_rsa.
Your public key has been saved in /home/oaudry/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:mEMo6Ss50hfNATPvCDusKScAsaGrb0M0+R886QuUJCw oaudry@aragorn
The key's randomart image is:
+---[RSA 2048]----+
|o   +            |
|.= . *           |
|E *.o +          |
|.=+* B +         |
|o.=o=.B.S        |
|o=.+..=.         |
|@.+ oo o         |
|o*o. .o          |
| ...  ..         |
+----[SHA256]-----+

Vous pouvez saisir une passphrase mais je vous laisse vous renseigner sur comment gérer ça ensuite. Une indice : ssh-agent il me semble.

Maintenant copier le fichier /home/oaudry/.ssh/id_rsa.pub de votre machine dans le fichier /root/.ssh/authorized_keys de la machine cible.

Comme je suis fainéant au dernier degré, pour créer le répertoire /root/.ssh sur la machine cible je tape la commande suivante pour avoir un répertoire créé avec les bon droits :

ssh 0

et je réponds oui à la question.

Ensuite je copie colle le contenu de mon /home/oaudry/.ssh/id_rsa.pub dans /root/.ssh/authorized_keys de la machine cible.

Et enfin je me connecte

oaudry@aragorn:~$ ssh root@192.168.0.47
Linux smobe-hv010 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3+deb9u1 (2017-12-23) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jan  5 16:08:44 2018 from 192.168.0.45
root@hv010:~# 

On profite d’être connecter pour générer le fichier preseed qui permettra l’installation de la même machine.

apt install  debconf-utils
debconf-get-selections --installer  > preseed.cfg

Gardez ce fichier dans un coin pour plus tard. Vous pouvez retrouver le mien ici

4 – installation de l’os

Suivre le programme d’installation classique de la debian. Je m’arrêterais juste sur la partie partitionnement. Je vous recommande simplement d’installer l’os en anglais et de ne configurer que l’interface qui sera relier à l’exterieur. Nous appellerons cette interface l’interface wan.

Je partagerai sur mon compte github le fichier preseed de cette installation. Nous l’utiliserons ultérieurement pour installer les autres hyperviseurs.

Partitionnement  des 14,4Go disponible sur l’intel optane :

  1.  100Mo en début de disk pour l’uefi
  2. 2Go pour le swap
  3. tout le reste dans /

Je ne sépare pas en plusieurs partition car les logs seront tous renvoyé sur une vm et aucun processus autre que qemu et ssh ne tourneront dans cet os.

Pour le reste n’oubliez pas de décocher Debian desktop environnement et de bien cocher SSH server. Vous pouvez aussi décocher print server.

Ca s’installe on reboot et on passe à la suite.

3 – Création de la clé usb d’installation de l’os sur l’hyperviseur matériel

 

  1. On télécharge l’image d’installation d’une debian 9 Stretch la stable du moment
                    wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.3.0-amd64-netinst.iso
    
  2. On crée une clé usb bootable à partir de l’image.Identifier avec dmesg le nom du périphérique et le démonter si jamais il a été monté automatiquement.
    [1123852.756273] usb 1-11: new high-speed USB device number 16 using xhci_hcd
    [1123852.958194] usb 1-11: New USB device found, idVendor=8564, idProduct=1000
    [1123852.958195] usb 1-11: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [1123852.958196] usb 1-11: Product: Mass Storage Device
    [1123852.958197] usb 1-11: Manufacturer: JetFlash
    [1123852.958197] usb 1-11: SerialNumber: 490GRA4BEI7F1PI8
    [1123852.958724] usb-storage 1-11:1.0: USB Mass Storage device detected
    [1123852.958861] scsi host7: usb-storage 1-11:1.0
    [1123854.287960] scsi 7:0:0:0: Direct-Access     JetFlash Transcend 4GB    1100 PQ: 0 ANSI: 0 CCS
    [1123854.288461] sd 7:0:0:0: Attached scsi generic sg4 type 0
    [1123854.288661] sd 7:0:0:0: [sde] 7913472 512-byte logical blocks: (4.05 GB/3.77 GiB)
    [1123854.289215] sd 7:0:0:0: [sde] Write Protect is off
    [1123854.289216] sd 7:0:0:0: [sde] Mode Sense: 43 00 00 00
    [1123854.289780] sd 7:0:0:0: [sde] No Caching mode page found
    [1123854.289782] sd 7:0:0:0: [sde] Assuming drive cache: write through
    [1123854.292494]  sde: sde1 sde2
    [1123854.294373] sd 7:0:0:0: [sde] Attached SCSI removable disk
    

    ici mon périphérique est sde. Je copie donc en root l’iso sur la clé

    dd if=debian-9.3.0-amd64-netinst.iso of=/dev/sde bs=4096k
    
    72+1 enregistrements lus
    72+1 enregistrements écrits
    304087040 bytes (304 MB, 290 MiB) copied, 53,3858 s, 5,7 MB/s
    

    Je vide les tampons du système de fichiers

    sync
    

    Et je branche ma clé usb sur l’hyperviseur pour démarrer ma debian

2 – Matériel

– processeur : Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz

– mémoire : 16G

– intel optane 16G pour l’os

– 2 ssd 256G pour ceph

– 1 sata 1T pour ceph

– 2 interfaces réseau. 1 pub et une privée