Nota

Connettere il codice Terraform da un repository GitLab a una tenancy OCI utilizzando una pipeline CI/CD

Introduzione

Mentre lavoriamo in Oracle Cloud Infrastructure (OCI) o in qualsiasi altro cloud, abbiamo bisogno di indicazioni chiare sull'automazione in ogni luogo e una delle più importanti esigenze di automazione è il provisioning dell'infrastruttura.

Gli utenti desiderano eseguire il provisioning della propria infrastruttura cloud utilizzando Terraform e, quando è coinvolto il codice, desiderano gestirlo utilizzando le procedure di sviluppo Agile su un repository di codici e gestirlo in modo completo DevOps. Una volta impostato il repository con il codice iniziale, qualsiasi sviluppatore può inviare un nuovo codice e distribuire la nuova infrastruttura attivata da una pipeline di integrazione e distribuzione continua (CI/CD).

In questa esercitazione verranno descritti tutti i passi necessari per configurare la pipeline dell'infrastruttura gestita dall'automazione Terraform in modo agile di sviluppo e utilizzare GitLab come provider del repository. Lo stesso processo si applica ad altri provider come GitHub e Azure DevOps.

Obiettivi

Prerequisiti

Task 1: Impostazione delle chiavi API

  1. Eseguire il login alla tenancy OCI con l'account di servizio o l'utente amministratore e andare alle impostazioni utente.

    Apri impostazioni utente

    Oppure

    Puoi anche passare all'utente dalla console IAM OCI. Assicurati solo che questo utente disponga di tutti gli accessi necessari per creare o aggiornare l'infrastruttura su OCI.

  2. Passare alla sezione Risorse per l'utente, fare clic su Chiavi API e su Aggiungi chiave API. Qui puoi scegliere se scaricare le nuove chiavi pubbliche e private, caricare la tua chiave pubblica o incollare la tua chiave pubblica.

    Aggiungi chiave API

  3. Dopo aver selezionato una delle opzioni, salvare i tasti in una posizione comoda e salvare il file di configurazione come mostrato nell'immagine seguente. Durante la connessione alla tenancy mediante Terraform, saranno necessari questo file di configurazione e questa chiave privata.

    Salva file di configurazione

Task 2: impostare il repository GitLab con il codice Terraform

  1. Creare un repository in GitLab. Questo repository verrà utilizzato per eseguire il PUSH del codice Terraform.

    GitLab Pronti contro termine

  2. Sviluppa il codice Terraform necessario per connettersi alla tenancy. In questa esercitazione verrà utilizzato il codice Terraform per connettersi alla tenancy e ottenere i dettagli dei domini di 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
      }
      

    Nota: utilizzare i valori del file di configurazione salvato per immettere i valori dei parametri nel file variables.tf.

Task 3: impostare una pipeline CI/CD basata su YAML e un trigger basato sull'unione di codici

  1. Dopo aver eseguito il PUSH del codice Terraform nel repository GitLab, creare la pipeline e configurarla utilizzando un file yaml.

    GitLab CICD pronti contro termine

  2. Creare un file .gitlab-ci.yml nel repository e aggiungere il codice seguente.

    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
    

    Nota:

    • Tutti i comandi Terraform init, plan e apply vengono eseguiti nella fase di build, ma è possibile utilizzarli di conseguenza nella fase necessaria.
    • Questo file demo yml si basa sugli agenti GitLab che eseguono Oracle Linux 7. Verifica la disponibilità dei moduli Terraform in base al sistema operativo dell'agente e alla disponibilità della rete.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.