Gérez les images de vos machines virtuelles · Installation interactive: répondre aux...

65
Gérez les images de vos machines virtuelles 1

Transcript of Gérez les images de vos machines virtuelles · Installation interactive: répondre aux...

Page 1: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Gérez les images de vos machines virtuelles

1

Page 2: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Mathieu Corbin, Ingénieur @Exoscale

Sysadmin

● Automatisation● CI/CD● Monitoring● Systèmes distribués● ...

Développeur

● Clojure● Golang● Emacs● ...

mcorbin.fr@_mcorbin 2

Page 3: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Un Cloud Provider Européen

3

Page 4: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

4

Page 5: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Le cloud

Sélection d’une imageCréation

5

Page 6: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Le cloud

Sélection d’une imageCréation

6

Page 7: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images “custom”

Utilisation d’images que vous avez créé

Construction Cloud providerUpload

7

Page 8: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images “custom”: pourquoi ?● Images non disponibles sur votre cloud

○ OS, distributions spécifiques

● Multi Cloud○ Déployer la même image sur différents Cloud

8

Page 9: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images “custom”: pourquoi ?● Images répondant à un besoin spécifique

○ Logiciels pré-installés○ Gain de temps

● Gérer les mises à jour○ Sécurité○ Mises à jour

● Immutable infrastructure 9

Page 10: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

La VM est la brique de base d’une infrastructure

Souvent négligée au profit des conteneurs

10

Page 11: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Construire une imageShell scripts + qemu + chroot + ...

11

Page 12: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Construire une imageShell scripts + qemu + chroot + ...

12

Page 13: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Construire une image

13

Page 14: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Packer: avantages

● Façon standard de construire des images

● Configuration des constructions en json (versioning)

● Support pour de nombreux Cloud/outils

14

Page 15: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Cloud initUne collection de scripts permettant de configurer une

machine au boot

15

Page 16: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Cloud init● Chaque Cloud Provider maintient une “Datasource” dans

Cloud Init

● Les Cloud providers exposent des services qui seront contactés par Cloud Init

● Au boot, Cloud Init détecte le Cloud Provider et va chercher des informations sur la machine

16

Page 17: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

La datasource Exoscale● Expose des informations sur la machine (offering, ip,

hostname, instance ID, zone)...

● Gère l’authentification (clé publique et mot de passe)

● Va chercher les user data fournies par le client

17

Page 18: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

User dataUn fichier YAML passé à la création de la machine

18

Page 19: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Cloud init est obligatoireSans Cloud Init, la machine n’est pas configurée

19

Page 20: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Packer: fonctionnement

Builder Provisioner Builder

20

Page 21: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

BuilderDémarre une machine virtuelle

Cloud

21

Page 22: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Image de baseLes builders partent d’une image de base

22

Page 23: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images de votre Cloud Provider

● Vous démarrez une image disponible sur votre Cloud Provider, si ce dernier possède un Builder Packer

● Cloud Init généralement pré-installé sur ces images

● La machine virtuelle est transformée en template

23

Page 24: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images “Cloud” des distributionsLes distributions Linux (Debian, Ubuntu, Centos…)

fournissent des images “Cloud”

● Cloud Init pré-installé

● Prêtes à être utilisées sur un Cloud Provider

24

Page 25: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Images “Cloud” des distributionsOn peut vouloir personnaliser ces images avant de les

déployer chez notre Cloud Provider.

25

Page 26: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Authentification: Cloud initIl faut pouvoir se connecter sur la machine que l’on démarre

Cloud init fournit deux datasources utilisables “hors ligne”

● No Cloud

● No Cloud Net

26

Page 27: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Datasource No Cloud

Un disque contenant des user data est passé à la machine

Cloud init détectera ce disque et configurera la machine

27

Page 28: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Datasource No Cloud

Fichier “user-data”

cloud-localds seed.img user-data

28

Page 29: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Datasource No Cloud Net

Packer peut exposer à la machine virtuelle un dossier en HTTP

La datasource “No Cloud Net” va lire et utiliser ces fichiers

29

Page 30: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Un exemple: Debian 10

30

Page 31: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Variables

31

Page 32: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Builder

32

Page 33: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Compression des imagesTaille virtuelle

33

Page 34: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Provisioners

34

Page 35: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Provisioners● Shell: exécute des scripts shells

● File: copie des fichiers sur la machine

● Ansible: lance des playbooks Ansible sur la machine

● Custom: possibilité d’étendre Packer

● ...35

Page 36: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Créer une image à partir d’un installer

36

Page 37: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Créer une image à partir d’un installerInstallation interactive: répondre aux “questions” lors de

l’installation

● Permet de construire plus de distributions

● Plus d’options lors de l’installation (choix des partitions par exemple)

● On simule le clavier avec Packer37

Page 38: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Un exemple: OpenBSD

38

Page 39: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Variables

39

Page 40: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Builder

40

Page 41: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

41

Page 42: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Une fois l’installation terminée...

● La machine redémarrera

● Configuration de la machine via ssh + mot de passe○ Désactiver le mot de passe à la fin de l’installation

42

Page 43: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

RHEL/Centos: Fichiers kickstart(ou équivalent chez Debian etc…)

43

Page 44: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Fichier kickstart

● Packer expose un fichier “kickstart.cfg” via HTTP

● Ce fichier décrit comment construire l’image

● Technique utilisable pour d’autres distributions (mais format différent)

44

Page 45: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Fichier kickstart: exemple

45

Page 46: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

46

Page 47: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

47

Page 48: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

48

Page 49: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Fichier kickstart: le lire depuis packer

49

Page 50: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Gérer l’UEFIConstruire/démarrer des images UEFI

UEFI pour des disques > 2 TB

50

Page 51: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Création d’une partition EFI

51

Page 52: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Utilisation du firmware UEFI

52

Page 53: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Post processorsRéalise une action après la construction

● Publier l’image sur un cloud

● Compression du résultat du build

● Exécution de scripts shell

● ... 53

Page 54: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Test d’une image

54

Page 55: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Pourquoi tester une image ?

● Tests de sécurité (clés publiques existantes par exemple)

● Tester si l’image/certains services démarrent correctement

● Tests “techniques” (reboot, cloud init…)

55

Page 56: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Comment tester ?

● Server spec / Goss○ S’installent sur la machine○ Permettent de définir des checks à exécuter

● Outil maison

56

Page 57: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Les tests à Exoscale: pytest (Python)

● Création d’une fixture pytest créant une machine à partir d’un template

● Exécution du test

● Destruction de la machine

57

Page 58: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Les tests à Exoscale● Test de Cloud Init

● Test de la connexion via clé/mot de passe

● Test du changement de mot de passe

● Test de migration “live” d’un hyperviseur à un autre

● ... 58

Page 59: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Les tests à Exoscale

59

Page 60: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Intégration continueTout cela s’intègre très bien dans un outil de CI

60

Page 61: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Intégration continueExoscale utilise Jenkins (Jenkinsfile + Job DSL)

61

Page 62: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Intégration continue: build + publish● Un dépôt git contenant un dossier par image à construire

● Un job Jenkins prenant en paramètre le nom de l’image à construire

● Le job construit l’image, l’upload sur SOS (S3-like),

● L’image est ensuite publiée en préprod62

Page 63: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Intégration continue: build + publish

63

Page 64: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Intégration continue: Tests● Un job prenant un template ID et qui lance les tests sur ce

dernier

Intégration continue: Release● Un job prenant un template ID et l’enregistre sur

l’environnement de production

64

Page 65: Gérez les images de vos machines virtuelles · Installation interactive: répondre aux “questions” lors de l’installation Permet de construire plus de distributions Plus d’options

Questions ?

65