Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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
-
Configura la pipeline dell'infrastruttura gestita per l'automazione Terraform utilizzando le procedure di sviluppo Agile.
-
Impostare le chiavi API per l'utente in base alle quali l'agente GitLab si connetterà alla tenancy OCI.
-
Impostare un repository GitLab in cui verrà eseguito il PUSH di tutto il codice Terraform e il codice Terraform iniziale per ottenere i dettagli della tenancy OCI.
-
Impostare una pipeline CI/CD basata su YAML che attiverà le azioni Terraform non appena viene eseguito il PUSH e l'approvazione del nuovo codice nel repository.
Prerequisiti
-
Accesso richiesto a OCI e ai criteri consentiti in Oracle Cloud Infrastructure Identity and Access Management (OCI IAM). L'utente deve avere accesso alle risorse corrispondenti che desidera creare o aggiornare utilizzando il codice Terraform.
-
Accedere a GitLab per creare un repository, la pipeline successiva e il push del codice.
-
Conoscenza di base della metodologia agile di sviluppo del software.
Task 1: Impostazione delle chiavi API
-
Eseguire il login alla tenancy OCI con l'account di servizio o l'utente amministratore e andare alle 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.
-
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.
-
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.
Task 2: impostare il repository GitLab con il codice Terraform
-
Creare un repository in GitLab. Questo repository verrà utilizzato per eseguire il PUSH del codice Terraform.
-
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
-
Dopo aver eseguito il PUSH del codice Terraform nel repository GitLab, creare la pipeline e configurarla utilizzando un file
yaml
. -
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
eapply
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.
- Tutti i comandi Terraform
Collegamenti correlati
Conferme
- Autore - Lovelesh Saxena (architetto principale di ingegneria del software)
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.
Connect Terraform Code from a GitLab Repository to an OCI Tenancy using a CI/CD Pipeline
F94448-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.