Remarques :

Connexion du code Terraform à partir d'un référentiel GitLab à une location OCI à l'aide d'un pipeline d'intégration continue et de déploiement continu

Introduction

Tout en travaillant dans Oracle Cloud Infrastructure (OCI) ou tout autre cloud, nous avons besoin d'instructions claires sur l'automatisation en tout lieu. L'une des automatisations les plus importantes requises est le provisionnement de l'infrastructure.

Les utilisateurs veulent provisionner leur infrastructure cloud à l'aide de Terraform. Lorsqu'un code est impliqué, ils veulent le gérer à l'aide des pratiques de développement Agile sur un référentiel de code et le gérer de manière DevOps complète. Une fois le référentiel configuré avec le code initial, tout développeur peut soumettre un nouveau code et déployer la nouvelle infrastructure déclenchée à partir d'un pipeline d'intégration continue et de déploiement continu.

Dans ce tutoriel, nous allons comprendre toutes les étapes nécessaires pour configurer le pipeline d'infrastructure gérée par automatisation Terraform d'une manière agile de développement et utiliser GitLab en tant que fournisseur de référentiel. Le même processus s'applique à d'autres fournisseurs tels que GitHub et Azure DevOps.

Objectifs

Prérequis

Tâche 1 : configurer les clés d'API

  1. Connectez-vous à votre location OCI avec le compte de service ou l'administrateur et accédez à Paramètres d'utilisateur.

    Ouvrir les paramètres utilisateur

    Ou

    Vous pouvez également accéder à l'utilisateur à partir de la console OCI IAM. Assurez-vous simplement que cet utilisateur dispose de tout l'accès requis pour créer ou mettre à jour une infrastructure sur OCI.

  2. Accédez à la section Ressources de l'utilisateur, cliquez sur Clés d'API et sur Ajouter une clé d'API. Ici, vous pouvez choisir de télécharger les nouvelles clés publiques et privées, de télécharger votre clé publique ou de coller votre clé publique.

    Ajouter une clé d'API

  3. Une fois que vous avez sélectionné l'une des options, enregistrez les clés à un emplacement approprié et enregistrez le fichier de configuration comme indiqué dans l'image suivante. Vous aurez besoin de ce fichier de configuration et de cette clé privée lors de la connexion à votre location à l'aide de Terraform.

    Enregistrer le fichier de configuration

Tâche 2 : configurer le référentiel GitLab avec du code Terraform

  1. Créez un référentiel sur GitLab. Nous utiliserons ce référentiel pour propager le code Terraform.

    GitLab Pension sur titres

  2. Développez le code Terraform requis pour la connexion à la location. Dans ce tutoriel, nous utiliserons le code Terraform pour nous connecter à la location et obtenir les détails des domaines de disponibilité.

    • provider.tf.

      provider "oci" {
                tenancy_ocid     = var.tenancy_ocid
                user_ocid        = var.user_ocid
                fingerprint      = var.fingerprint
                private_key_path = var.private_key_path
                region           = var.region
      }
      
      terraform {
        required_providers {
          oci = {
            version = ">= 3.0.0"
          }
        }
      }
      
    • variables.tf.

      variable "tenancy_ocid" {
              type = string
              default = "ocid1.tenancy.oc1..aaaaaaaacko"
      }
      variable "user_ocid" {
              type = string
              default = "ocid1.user.oc1..aaaaaaaafelq"
      }
      variable "fingerprint" {
              type = string
              default = "72:d4:6c:f8:89"
      }
      variable "private_key_path" {
              type = string
              default =  "oracleidentitycloudservice_user_key.pem"
      }
      variable "region" {
              type = string
              default = "us-ashburn-1"
      }
      
    • oracleidentitycloudservice_user_key.pem.

      content of your private key
      
    • availability-domains.tf.

      data "oci_identity_availability_domains" "ads" {
          #Required
          compartment_id = var.tenancy_ocid
      }
      
    • outputs.tf.

      # The "name" of the availability domain to be used for the compute instance.
      output "name-of-first-availability-domains" {
        value = data.oci_identity_availability_domains.ads.availability_domains[0].name
      }
      

    Remarque : utilisez les valeurs du fichier de configuration enregistré pour entrer les valeurs de paramètre dans le fichier variables.tf.

Tâche 3 : configurer un pipeline CI/CD basé sur YAML et un déclencheur basé sur la fusion de codes

  1. Une fois le code Terraform propagé vers le référentiel GitLab, créons le pipeline et le configurons à l'aide d'un fichier yaml.

    GitLab Pension sur titres CICD

  2. Créez un fichier .gitlab-ci.yml dans le référentiel et ajoutez le code suivant.

    build-job:
      stage: build
      script:
        - echo "Hello Gitlab"
        - uname -r
        - yum install -y yum-utils
        - yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
        - sed -i 's/$releasever/7/g' /etc/yum.repos.d/hashicorp.repo
        - yum -y install terraform
        - pwd
        - ls -ltra
        - terraform init
        - terraform plan
        - terraform apply -auto-approve
    
    
    test-job1:
      stage: test
      script:
        - echo "This job tests something"
    
    test-job2:
      stage: test
      script:
        - echo "This job tests something, but takes more time than test-job1."
        - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
        - echo "which simulates a test that runs 20 seconds longer than test-job1"
        - sleep 5
    
    deploy-prod:
      stage: deploy
      script:
        - echo "This job deploys something from the main branch."
      environment: dev
    

    Remarque :

    • Toutes les commandes Terraform init, plan et apply sont exécutées à l'étape de build, mais vous pouvez les utiliser en conséquence à l'étape dont vous avez besoin.
    • Ce fichier de démonstration yml est basé sur les agents GitLab exécutant Oracle Linux 7. Vérifiez la disponibilité des modules Terraform en fonction du système d'exploitation de l'agent et de la disponibilité du réseau.

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.