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

28-02-2018 / Stacy Véronneau

L’infrastructure en tant que code (IaC) a attiré beaucoup d’attention ces derniers temps. Elle prend le code pour gérer la configuration et l’automatisation de l’infrastructure de votre application afin de libérer des ressources et ainsi réduire les risques, les dettes techniques et les erreurs. L’IaC prend de plus en plus d’importance dans la réussite des pratiques DevOps. Terraform, par Hashicorp est un outil d’infrastructure multi-plate-forme qui vous permet d’automatiser votre infrastructure en utilisant les mêmes outils sur plusieurs plateformes. L’outil Ansible peut être utilisé pour bâtir et gérer les configurations d’applications à distances et les installations de MV conçues sur votre déploiement d’infrastructure Terraform.

Étant moi-même accro à Terraform, je suis vraiment emballé par le fait qu’il puisse faire progresser les pratiques DevOps et IaC. Je publie cet article dans le but d’expliquer comment utiliser Terraform pour déployer une instance dans GCP tout en utilisant Ansible pour provisionner Consul de HashiCorp. L’idée m’est venue au meetup des utilisateurs Hashicorp (HashiCorp User Group : HUG) qui fut organisé par CloudOps, partenaire de HashiCorp, à Montréal le 16 janvier dernier. Après avoir discuté avec une personne qui désirait faire une démonstration de faisabilité dans GCP, j’ai réalisé à quel point il serait approprié d’utiliser Terraform ou Packer avec Ansible sur GCP.

Terraform a la qualité d’être idempotent, cela signifie que l’on obtient toujours les mêmes résultats, chaque fois que l’on exécute le script, permettant ainsi de bâtir une infrastructure complètement immuable pour soutenir les configurations. Les étapes suivantes démontrent comment obtenir un processus complètement automatisé pour lancer des instances dans GCP. Ce processus implique le lancement d’une instance sur GCP, via Terraform, déclenchant alors un playbook Ansible qui installe pour vous, dans l’instance, la version 1.0.6 de Consul. Lorsque vous entrez à nouveau dans votre instance, le processus s’y trouve déjà et vous vous trouvez devant une page blanche à configurer comme bon vous semble.

Étape 1 – Assurez-vous d’avoir un projet GCP et une clé SSH à l’échelle de tout le projet, car vous en aurez besoin pour accéder à votre instance. Les instructions à cet effet se trouvent ici, vous devriez être dirigés vers une page qui ressemble à ceci:

Comment déployer Consul dans GCP en utilisant Terraform

Étape 2 – Allez à IAM & admin sur la console GCP pour commencer à créer un Compte de service dans votre projet GCP.

Comment déployer Consul dans GCP en utilisant Terraform

Étape 3 – Créez un compte de service. Assurez-vous que les rôles Compute Instance Admin (v1) et Service Account User sont sélectionnés. La case « Furnish a new private key » doit être cochée et assurez-vous de sélectionner JSON comme type de clé (« Key type »). Puis cliquez sur Create.
Votre compte de service sera alors créé et un fichier JSON sera téléchargé localement sur votre machine. Vous devez garder ce fichier.

Comment déployer Consul dans GCP en utilisant Terraform

Comment déployer Consul dans GCP en utilisant Terraform

Étape 4 – Téléchargez et installez Terraform et Ansible.

Étape 5 – Clonez mon GitHub repo ou téléchargez-le comme fichier Zip.

Étape 6 – Adaptez le code de mon dépôt (ci-dessus) selon votre environnement en changeant les valeurs suivantes qui proviennent du fichier gcp/consul/consul.tf :

Dans provider « Google », changez les identifiants pour “${file(“/path_to/gcp_service_account.json“)}” et le projet pour “your_gcp_project“.

Dans resource ‘google_compute_instance’ ‘ansible’, changez le projet pour ‘your_gcp_project’ et exécuter la commande ‘sleep 90; ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -u your_ssh_key_username (de l’étape 1) –private-key /path_to/my_private_key -i ‘${google_compute_instance.ansible.network_interface.0.access_config.0.assigned_nat_ip}’, master.yml’.

Étape 7 – De la ligne de commande, activez le fournisseur GCP en exécutant ‘terraform init gcp/consul’.

Étape 8 – Exécutez le script !!

terraform plan gcp/consul et terraform apply gcp/consul

Soyez patient, cela peut prendre jusqu’à deux minutes. Une fois que tout est installé, retournez aux instances Compute Engine/VM où vous trouverez votre instance Consul. À partir de là, cliquez sur le bouton ‘Connect SSH’ pour ouvrir une session de votre instance.

Comment déployer Consul dans GCP en utilisant Terraform

Voici ce que vous verrez lorsque vous serez dans votre instance. Cela démontre que le processus fonctionne et que Consul est exploité en arrière-plan.

Comment déployer Consul dans GCP en utilisant Terraform

Félicitations !!! Vous avez déployé Consul en utilisant Terraform et Ansible sur GCP.

N’oubliez pas de nettoyer le déploiement en exécutant : terraform destroy gcp/consul avant d’ouvrir Terraform à nouveau. J’ai vu de nombreuses personnes provoquer la colère des dieux pour avoir oublié de le faire.

Le script que vous trouvez ici est un exemple simple d’un déploiement de Consul dans GCP. Vous pouvez aussi utiliser ce processus pour automatiser le déploiement de n’importe quel autre outil, tel que Apache Web Server, ou encore Jenkins, si vous désirez rester dans le pipeline CI/CD. Terraform est vraiment un outil formidable pour automatiser votre infrastructure. Sa nature multi-plate-forme et son intégration aisée avec Ansible signifient que l’automatisation dans le but d’intégrer L’IaC dans une entreprise DevOps ne peut que devenir plus facile.

Passez au niveau supérieur – Essayez d’utiliser Packer de HashiCorp pour figer Consul dans des images GCP, ainsi, vous n’aurez pas à le faire chaque fois. Vous pouvez ensuite, avec Terraform et sans Ansible, créer une instance basée sur l’image figée. Comme étape finale vers un déploiement de production, à partir de votre image figée, vous pouvez créer un modèle d’instance et un groupe d’instances gérées pour surveiller votre nouvelle grappe Consul et l’attacher à un équilibreur de charge GCP.

Visitez ces sites Web et ces dépôts pour vous partir du bon pied :

http://docs.ansible.com/ansible/latest/guide_gce.html

https://github.com/sveronneau/gcp

https://www.terraform.io/docs/providers/google/

https://github.com/GoogleCloudPlatform?utf8=✓&q=terraform

Si vous désirez vous impliquer dans la communauté HashiCorp, jetez un coup d’œil aux meetups HUG organisés à Montréal, Toronto, et à Québec.

Maintenant, allez de l’avant et automatisez toutes choses !

En tant que partenaire de Google et de HashiCorp, CloudOps offre des solutions DevOps. Contactez-nous pour en apprendre plus sur notre expertise et sur ce que nous pouvons apporter à votre organisation.

Automate Things
Créer une infrastructure en tant que code dans GCP avec Packer et Terraform : les deuxième é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

 
 

Stacy VéronneauÀ 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.

New call-to-action