Créer une infrastructure en tant que code dans GCP avec Packer et Terraform : la deuxième étape vers l’automatisation DevOps

30-03-2018 / Stacy Véronneau

Tout le monde veut adopter une infrastructure en tant que code pour configurer et automatiser leur infrastructure applicative tandis qu’elle s’adapte aux pratiques exemplaires du DevOps. De trouver des façons d’automatiser votre pipeline CI/CD est au cœur de cette transition et est d’un très grand intérêt pour moi.

Ce que nous avons fait la dernière fois

Le dernier article vous expliquait comment créer une MV pour entièrement automatiser le processus de lancement d’instances dans GCP. Il démontrait comment utiliser Ansible et Terraform par Hashicorp pour installer dans votre instance une version « vanille » de Consul, outil Hashicorp qui découvre et configure des services dans votre infrastructure. Vous vous trouviez devant une toile blanche à configurer comme bon vous semble.

Ce que nous ferons cette fois-ci

Cette fois-ci, nous illustrerons ce procédé dans un cas d’utilisation réelle et le mettrons en production. Le dernier article vous donnait le contexte pour automatiser les instances dans GCP, cet article-ci démontrera comment automatiser le déploiement d’instances multiples. Cela sera effectué par un groupe d’instances géré qui peut mettre à l’échelle et rétablir votre environnement automatiquement. Cela vous permettra ensuite d’exploiter ces déploiements dans le nuage et surtout, de tirer profit des capacités de mise à l’échelle et de rétablissement automatique de GCP, comme fournisseur infonuagique.

Déployer ces instances dans le nuage vous permet de mettre votre application à l’échelle selon la demande et d’avoir un déploiement sur des zones et des régions multiples. Par exemple, vous pourriez déployer vos serveurs dans les régions « northamerica-northeast1 » et « us-central1 » ou encore, dans une seule région, mais sur toutes les zones disponibles. Cela aura pour effet de distribuer votre infrastructure et vous aurez toujours un déploiement à votre disposition si l’un de vos serveurs tombe en panne. Vous devez déployer au moins trois instances et pouvez en utiliser jusqu’à cinq pour la mise à l’échelle automatique. En ayant le déploiement de vos instances automatisé par un groupe d’instances géré, vous tirerez pleinement profit du pouvoir de la plateforme Google Cloud.

Comment nous y prendrons-nous

Cette fois-ci, au lieu de Consul, nous nous concentrerons sur la façon de maximiser Apache Web Server. Nous utiliserons à nouveau Terraform, mais surtout, nous préparerons Apache dans une image Ubuntu prise sur Google. Par « préparer », je veux dire de mettre une image standard à votre main pour créer un modèle. Ce modèle vous fera épargner du temps lorsque vous lancerez une instance de serveur Apache. L’automatisation vous permettra de sauter certaines étapes préparatoires, comme l’installation d’Apache dans toutes les MV ou instances.

Veuillez prendre note : GCP met très fréquemment ses images à jour (encore plus fréquemment que les images Ubuntu Cloud), il est donc très important d’inclure la préparation d’images dans votre pipeline CI/CD si vous désirez constamment avoir une infrastructure à jour. Vos procédés automatisés devraient toujours exploiter des images nouvellement préparées et votre déploiement doit être sur un système d’exploitation à jour.

Préparation

Étape 1 – Saisissez l’information de votre « service account » en suivant les étapes présentées dans mon premier blogue (Étapes 2 et 3)

Assurez-vous d’avoir les rôles suivants : (Compute Admin, Service Account User, Storage Admin).

Étape 2 – Saisissez le code de mon GitHub repo

Étape 3 – Prenez l’information de votre compte GCP pour mettre à jour les fichiers apache.json et variables.tf

Étape 4 – Installez Packer et Terraform dans le dossier gcp-mig-lb.

Flux de travail

Étape 1 – Utilisez Packer pour préparer un Ubuntu 16.04 LTS personnalisé avec une image Apache Web Server.

packer validate apache.json
packer build apache.json

Étape 2 – Lancer le script Terraform qui créera un modèle avec cette image dans GCP.

terraform init
terraform plan
terraform apply

Étape 3 – De ce modèle, nous pouvons créer un groupe d’instances géré qui déploiera 3 instances identiques basées sur notre image préparée. Aussi, cela injectera des métadonnées qui créeront une page Web statique contenant le nom du serveur et ses adresses IP internes et externes.

Étape 4 – Créer une règle pare-feu afin de permettre au trafic HTTP d’arriver vers ce groupe. C’est très utile pour atteindre tous nos serveurs.

Étape 5 – Créer un service frontal et dorsal piloté par un équilibreur de charge et des règles de redirection.


Étape 6
– Reculez et appréciez ce que vous avez accompli.

Attendez quelques minutes puis ouvrez un navigateur avec l'adresse IP de votre équilibreur de charge GCP.
L'adresse IP de l'équilibreur de charge GCP peut être trouvée dans : Network Services / Load balancing
Cliquez sur HTTP-lb-url-map et regardez dans la section frontale, protocol HTTP. C'est là que vous verrez votre adresse IP publique.

Ouvrez votre navigateur http://frontend_public_ip. Actualisez la page et vous verrez que vous vous rendez vers vos serveurs Apache aléatoirement.

Et voilà ! Vous avez réussi à créer un groupe d’instances géré avec mise à l’échelle et rétablissement automatique piloté par un équilibreur de charge Google Cloud. Bien que tout le déploiement présenté ci-dessus peut être fait de façon manuelle, nous l’avons automatisé avec Terraform. Cela vous permet de le déployer à l’échelle, dans le nuage, et dans de multiples zones ou régions, créant ainsi une infrastructure immuable du début à la fin qui constitue une approche DevOps Infrastructure en tant que Code.

Et la suite.. Finalement, dans une approche intégrale, nous pourrions tout refaire cela en utilisant, au lieu de Terraform, le Gestionnaire de déploiement de Google Cloud. Bâti par Google, le Gestionnaire de déploiement est leur version de Terraform spécialement conçue pour leur propre plateforme infonuagique. Elle inclut des fonctionnalités bêta et alpha que les clients veulent utiliser, mais qui ne sont pas habituellement disponibles sur Terraform avant d’être disponibles de façon générale.

Ce sera le sujet de mon prochain article de cette série sur l’automatisation et GCP. Gardez l’œil ouvert !

Maintenant, allez de l’avant et automatisez tous les objets !

CloudOps offre des solutions DevOps et détient un large éventail d’expertises. Jetez un coup d’œil à nos ateliers pratiques sur « l’Infrastructure as Code » et contactez-nous pour en apprendre plus sur notre expertise et ce que nous pouvons faire pour votre organisation.

Automate Things
Créer une infrastructure en tant que code dans GCP avec Consul et Terraform : Les premières étapes vers l’automatisation DevOps

 

 

 

Automate Things
Créer une infrastructure en tant que code dans GCP avec Deployment Manager : les troisième étapes vers l’automatisation DevOps

 
 

À propos de l’auteur – Stacy Véronneau

Stacy Véronneau est un éminent architecte de solutions chez CloudOps, il travaille de près avec la plateforme infonuagique de Google : Google Cloud Platform (GCP). Il collabore actuellement avec Google afin d’aider les clients à migrer vers GCP et tirer pleinement avantage de sa force. De plus, il est ambassadeur officiel OpenStack, il a donné des conférences lors de Sommets OpenStack et a organisé des meetups à travers le Canada.
 

Crédit photo : Emma De Angelis et memegenerator.net

New call-to-action