Donc, vous aussi, vous avez été déçu de voir que Google Compute Engine (GCE) ne contient aucune image de Fedora sur Google ?
La bonne nouvelle est que, grâce à cette image manquante, vous allez créer votre propre image personnalisée et apprendre ainsi un aspect important de Google Cloud Platform (GCP). Cela signifie une personnalisation étendue de vos machines virtuelles si vous le souhaitez.

Les Machines Virtuelles, c’est quoi ?

Avant de commencer, une brève chose à savoir. Les VM ressemblent beaucoup aux ordinateurs, mais vous le saviez déjà, non ? Ce que vous ne savez peut-être pas, c’est que, dans GCE, les images sont des systèmes d’exploitation pré-installés que l’ordinateur virtuel utilisera lors de son premier démarrage. C’est un peu comme lorsque vous achetez un ordinateur, vous obtenez (malheureusement) une version pré-installée de Windows sur le disque dur. Et lorsque vous démarrez la première fois, la version pré-installée est identique pour tous les ordinateurs de ce modèle / fabricant.

Dans Google Compute Engine, c’est pareil. Lorsque vous créez une instance, vous devez commencer quelque part, elle vous laissera donc choisir un Linux pré-installé, également appelé «image». Notez que certains utilisateurs de machines virtuelles diront: «Dans les machines virtuelles, nous commençons généralement à démarrer via un CD ISO avec un assistant de configuration», mais les machines virtuelles de Google Compute Engine sont généralement conçues pour fonctionner sans surveillance.

Donc, dans cet article, nous allons:

  • Télécharger la dernière image officielle de Fedora Cloud.
  • Ajouter un logiciel au-dessus pour qu’il soit plus compatible avec Google Compute Engine.
  • Le « zipper » en tant qu’image GCP.
  • Créer une instance en utilisant cette image.

Tout cela dans Google Compute Engine.

Obtenir une image Fedora Cloud personnalisée

Pour commencer, vous devez créer une machine virtuelle sur laquelle nous allons créer et modifier l’image officielle de Fedora Cloud. Donc, créez une instance avec les options suivantes:

  1. Donnez-lui un nom, choisissez la bonne zone, etc.
  2. Veuillez garder la zone à l’esprit car nous en aurons besoin plus tard.
  3. Dans «Machine Type», choisissez le «f1-micro». C’est plus que suffisant pour nos besoins.
  4. Dans “Boot Disk”, cliquez sur “Change” et choisissez “CentOS 7”. Ceci est l’image la plus proche de Fedora (Fedora est maintenu par Red Hat, CentOS est RHEL sans support client) et l’utilisation d’outils familiers aidera à la construction l’image.
  5. Dans «Identity and API access», choisissez «Allow all access to Cloud APIs». C’est plus pratique car nous utiliserons beaucoup gcloud et créer un compte de service est plus compliqué.
    Comme il ne s’agit que d’une VM qui dure quelques minutes, ce n’est pas un problème. Ne l’utilisez pas la production et génération d’images automatisées.
  6. Vous souhaiterez peut-être rendre la VM «preemptible», car les machines virtuelles « preemptibles » coûtent beaucoup moins cher. Notez toutefois que si vous le faites, Google peut arrêter votre machine virtuelle à tout moment. Si cela arrive, vous devrez redémarrer la machine virtuelle et reprendre là où vous en étiez.
  7. Cliquez sur le bouton « Create ». Le moment le plus amusant de l’administration du cloud est celui-ci, si vous me le demandez.

Donnez-lui 2 minutes pour démarrer et ensuite, rendez-vous dans le SSH de la VM en utilisant le bouton « SSH ». Il ouvrira une fenêtre avec SSH connecté à votre toute nouvelle VM CentOS 7.

La première chose dont vous avez besoin est d’installer wget. Vous pouvez installer curl si vous préférez, mais l’article utilisera wget.
Alors:

$ sudo yum install wget

Ensuite, une fois installé, rendez-vous sur https://alt.fedoraproject.org/cloud/ et à côté de «Cloud Base compressed raw image», cliquez avec le bouton droit sur «Download» et copiez le lien de l’adresse.

Récupérez la machine virtuelle et procédez comme suit:

$ wget « {URL ICI}« 

Cela va télécharger le fichier. Les serveurs Fedora, leurs miroirs et Google disposent d’une excellente infrastructure. Le téléchargement ne durera donc que quelques secondes. Probablement mon deuxième moment préféré de l’administration cloud !

Une fois terminé, exécutez cette commande:

$ xz –decompress –keep « Fedora-Cloud-Base-XX-X.X.x86_64.raw.xz »

Notez que vous devez adapter le nom du fichier en fonction de la version que vous téléchargez.
Cela va extraire un fichier fragmenté de ~ 3 Go que nous pouvons ensuite monter en boucle pour la deuxième étape.
Cela va prendre une minute, alors prenez une pause-café et revenez quand vous aurez terminé.

Installer Fedora sur Google Compute Engine

Quand Linux kiffe les chapeaux et porte un Fedora…

OK, alors comment appelons-nous la préparation ici ? En gros, il s’agit de monter en boucle le disque brut, de le chrooter à l’intérieur, d’ajouter un logiciel pour pouvoir utiliser toutes les fonctionnalités de GCP, puis de nettoyer divers fichiers temporaires.

OK, montons-le:

$ mkdir boot
$ sudo mount -o loop,offset=1048576 « $PWD/Fedora-Cloud-Base-XX-X.X.x86_64.raw »
« $PWD/boot »

Encore une fois, adaptez le nom du fichier.
Ok, je vois que vous ne comprenez pas vraiment cette ligne de commande, une explication s’impose donc.

Cette commande dit à Linux: Prenez un fichier sur le disque, agissez comme s’il s’agissait d’une partition de disque et essayez de le monter. C’est le principe du montage en boucle. Mais vous remarquerez également le «offset = 1048576». Il existe un décalage car ce disque brut est un disque et non une partition. Il est partitionné, avec un chargeur de démarrage dessus, donc la VM sait quoi faire au démarrage. Mais nous ne pouvons pas monter ou chrooter dans un chargeur de démarrage, non ?

Donc, en définissant le décalage, Linux est en fait en train de monter la première partition du disque brut stocké dans le fichier. C’est une partition ext4 et pour laisser suffisamment d’espace aux bootloaders, les premières partitions démarrent généralement 1 Mio après le début du disque. D’où le décalage. Poursuivre par :

$ cd boot
$ sudo mount –bind /dev dev && sudo mount –bind /sys sys && sudo mount –bind /proc proc && sudo mount –bind /etc/resolv.conf etc/resolv.conf
$ sudo chroot ./ /usr/bin/bash

Et maintenant, bienvenue sur votre chroot Fedora monté en boucle! Alors, pourquoi tout ça ? Tout d’abord, nous montons tout ce qui est nécessaire pour qu’une application décente fonctionne, /dev, /proc et /sys. Nous montons aussi bind resolv.conf car sinon le chroot n’a pas d’accès à Internet (!). Enfin, nous chrootons dedans. Notez que nous utilisons /usr/bin/bash car /bin dans Fedora est un lien symbolique vers /usr/bin.

Maintenant, il est temps d’installer le logiciel Google Cloud Platform pour qu’il fonctionne correctement.
La première chose à faire est d’avoir une image à jour. C’est mieux non ? Alors:

# dnf upgrade –assumeyes –nogpgcheck « * »

Encore une fois une occasion de prendre une gorgée de café, car cela va prendre du temps. Le «–nogpgcheck» est parce que le contrôle GPG et le chroot n’agissent pas très bien l’un avec l’autre. Ensuite, faites ceci:

# cat > « /etc/yum.repos.d/google-cloud.repo » <<« EOR »
[google-cloud-compute]
name=Google Cloud Compute
baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-compute-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOR

Et fait:

# dnf install –nogpgcheck –assumeyes google-compute-engine python-google-compute-engine

Cela va installer tous les logiciels liés à Google afin d’être le mieux compatible avec Google Compute Engine. Par exemple, cela vous permettra de vérifier / décocher le transfert IP depuis l’interface de la plate-forme Google Cloud, ou d’utiliser SSH dans le navigateur au lieu d’avoir à créer explicitement une clé SSH pour la machine virtuelle. Prochain:

# touch « /.autorelabel »
# dnf clean all

Comme vous le savez, l’une des meilleures choses à propos de Fedora, ce sont ses fonctionnalités de sécurité et sa qualité au niveau de l’entreprise, et SELinux en fait partie. Ainsi, pour éviter les maux de tête, il redéclenche un ré-étiquetage du disque entier lors du premier démarrage de la VM.

Il le fait parce que les étiquettes dans SELinux sont incorrectes dans un environnement chroot et en oubliant ce petit pas, la VM ne démarre plus et est inaccessible de l’extérieur. La mise à niveau de dnf ci-dessus réécrit beaucoup de fichiers core non étiquetés, puis SELinux empêche leur exécution. Notez que cela signifie que le premier démarrage de la machine virtuelle peut prendre quelques minutes avant d’être prêt.

dnf clean up permet de garder l’image aussi petite que possible. Cela vous évite de devoir stocker à maintes reprises des éléments inutiles.

Temps de quitter chroot:

# exit
$ cd ../

Maintenant que vous êtes sorti du répertoire monté en boucle, vous pouvez démonter les éléments liés au bind:

$ sudo umount boot/dev boot/proc boot/sys boot/etc/resolv.conf

Et puis, faisons ceci:

$ sudo fstrim –verbose boot

Cela vous aide à réduire l’image montée sur la boucle. Fondamentalement, lors de la mise à niveau, l’image brute sera rapidement remplie de zones de fichiers temporaires. Contrairement aux vrais disques durs, lorsqu’un fichier est supprimé dans une image brute, il est simplement supprimé dans les métadonnées du système de fichiers de l’image brute et utilise toujours de l’espace sur le disque dur hébergeant l’image brute. fstrim vous permet de rendre ces zones inutilisées « rares » et donc cet espace de fichiers supprimés est redonné au disque.

Démontez le périphérique monté en boucle maintenant:

$ sudo umount boot
$ mv « Fedora-Cloud-Base-XX-X.X.x86_64.raw » « disk.raw »
$ tar –create –auto-compress –file= »Fedora-Cloud-Base-XX-X.X.x86_64.tar.gz » –sparse disk.raw

OK, cool, vous avez maintenant votre image finale, pré-emballée! La taille pour moi est d’environ 350 Mio, minuscule hein? Maintenant, tu te souviens quand j’ai dit que tu devais prendre note de la zone? C’est maintenant que vous en avez besoin!

Rendez-vous sur Google Cloud Storage et créez un compartiment. Je suppose que vous n’avez pas déjà un seau dans la bonne zone, sinon il est parfait d’utiliser un seau pré-existant. Créez donc un compartiment avec les options suivantes:

Donne lui un nom.
Choisissez le type «régional». Comme nous n’utilisons ici que le seau pour les images, qui peuvent être régénérées facilement, la région permet de payer moins cher en n’ayant pas de sauvegarde géo-redondante du fichier.
Choisissez la région où se trouve la machine virtuelle CentOS que vous avez créée.
Hit créer.
Attendez que le compartiment soit créé, et une fois terminé, allez à nouveau dans la fenêtre SSH et faites:

$ gsutil cp « Fedora-Cloud-Base-XX-X.X.x86_64.tar.gz » « gs://[name of the bucket]/ »

Cela copie l’image compressée dans Google Cloud Storage afin que nous puissions dire à GCP: Prenez ce fichier .tar.gz et faites-en une image.

Maintenant, vous pouvez arrêter l’instance à ce stade. Ne le supprimez pas encore car nous allons tester l’instance Fedora avant de supprimer cette VM de build.

Maintenant, dans Google Compute Engine, entrez dans «Images». Appuyez sur le bouton « Create Image ». Configurez-le comme ceci:

  1. Nommez-le «fedora-cloud-XX-AAAAMMJJ» où XX est la version et AAAAMMJJ, l’année, le mois et la date du jour.
  2. Dans «Family», entrez «fedora-cloud-XX».
  3. Dans «Source», choisissez «Cloud Storage file».
  4. Cliquez sur le bouton «Browse», entrez dans votre compartiment et sélectionnez le fichier .tar.gz téléchargé précédemment.
  5. Créez l’image.

Et c’est tout les gars !

BREAKING NEWS ! Un nounours s’évade du Storage de Google !

Phase de test

OK, mais ce ne serait pas un vrai guide si nous ne testions pas si cela fonctionne comme prévu. Donc, pour voir si cela a bien fonctionné, accédez à «VM Instances», puis cliquez sur «Create Instance».

Configurez l’instance de cette façon:

  1. Bien que Fedora Cloud puisse fonctionner sur presque toutes les formes de machine virtuelle, je vous recommande de choisir le type de machine virtuelle le moins cher, f1-micro, car nous n’utilisons cette machine virtuelle qu’à des fins de test.
  2. Sous « Boot disk », cliquez sur le bouton « Change ».
    Allez dans l’onglet «Custom Image», puis choisissez l’image que vous venez de créer.
    N’oubliez pas de définir la taille du disque de démarrage. Il sera réglé en dessous de 4 Go, bien trop petit. La taille minimale des disques Google Cloud Platform est de 10 Go et le minimum recommandé par Google est de 200 Go.
  3. Encore une fois, vous voudrez peut-être définir la machine virtuelle comme « preemptible », surtout si vous l’utilisez uniquement à des fins de test et non pour la conserver.
  4. Cliquez sur le bouton « Create ».

Maintenant, vous devez attendre 5 minutes, assez de temps pour nettoyer votre clavier! Et après ces 5 minutes, vous pouvez maintenant cliquer sur le bouton « SSH ».

Et maintenant, espérons-le, hooray, vous êtes connecté à votre VM Fedora, gérée par Google Cloud ! À ce stade, n’oubliez pas de supprimer la machine virtuelle de test et la machine virtuelle de génération.

J’espère que vous avez apprécié le tutoriel, et cela fonctionnera parfaitement pour vous. C’est tout (pour de vrai cette fois), et on se voit dans une VM Fedora !

Si vous êtes américain et que vous avez souffert à traduire cet article, je vous offre un moment de rage en vous indiquant à la TOUTE FIN que je l’ai aussi écrit en anglais à cette adresse. Ne me remerciez pas.

Vous êtes fan de Queen ?
Cet article n’est pas suffisant ?
The Show Must Go On?

VOIR D’AUTRES ARTICLES