Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Conexión del código de Terraform de un repositorio GitLab a un arrendamiento de OCI mediante un pipeline de integración y despliegue continuos
Introducción
Al trabajar en Oracle Cloud Infrastructure (OCI) o en cualquier otra nube, necesitamos indicaciones claras sobre la automatización en todos los lugares, y una de las automatizaciones más importantes necesarias es el aprovisionamiento de infraestructura.
Los usuarios desean aprovisionar su infraestructura en la nube con Terraform y, cuando se trata de código, desean gestionarla mediante prácticas de desarrollo de Agile en un repositorio de código y gestionarla de una forma DevOps completa. Una vez configurado el repositorio con el código inicial, cualquier desarrollador puede enviar un nuevo código y desplegar la nueva infraestructura disparada desde un pipeline de integración y despliegue continuos (CI/CD).
En este tutorial, comprenderemos todos los pasos necesarios para configurar el pipeline de infraestructura gestionada por automatización de Terraform de una forma ágil de desarrollo y utilizar GitLab como nuestro proveedor de repositorios. El mismo proceso se aplica a otros proveedores como GitHub y Azure DevOps.
Objetivos
-
Configure el pipeline de infraestructura gestionada por automatización de Terraform mediante prácticas de desarrollo de Agile.
-
Configure claves de API para el usuario en función del cual el agente GitLab se conectará al arrendamiento de OCI.
-
Configure un repositorio GitLab donde se transferirá todo el código de Terraform y el código de Terraform inicial para obtener los detalles del arrendamiento de OCI.
-
Configure un pipeline de integración y despliegue continuos basado en YAML que dispare acciones de Terraform tan pronto como se transfiera y apruebe nuevo código en el repositorio.
Requisitos
-
Acceso necesario a OCI y políticas permitidas en Oracle Cloud Infrastructure Identity and Access Management (OCI IAM). El usuario debe tener acceso a los recursos correspondientes que desea crear o actualizar mediante el código de Terraform.
-
Acceda a GitLab para crear un repositorio, el pipeline posterior y la transferencia de código.
-
Comprensión básica de la metodología ágil del desarrollo de software.
Tarea 1: Configuración de las claves de API
-
Conéctese a su arrendamiento de OCI con la cuenta de servicio o el usuario administrador y vaya a Configuración de usuario.
O bien:
También puede ir al usuario desde la consola de OCI IAM. Solo asegúrate de que este usuario tenga todo el acceso necesario para crear o actualizar la infraestructura en OCI.
-
Vaya a la sección Recursos del usuario, haga clic en Claves de API y Agregar clave de API. Aquí, puede optar por descargar las nuevas claves públicas y privadas, cargar su clave pública o pegar su clave pública.
-
Una vez que haya seleccionado cualquiera de las opciones, guarde las claves en una ubicación conveniente y guarde el archivo de configuración como se muestra en la siguiente imagen. Necesitará este archivo de configuración y esta clave privada al conectarse a su arrendamiento con Terraform.
Tarea 2: Configuración del repositorio GitLab con código de Terraform
-
Cree un repositorio en GitLab. Utilizaremos este repositorio para transferir el código de Terraform.
-
Desarrolle el código de Terraform necesario para conectarse al arrendamiento. En este tutorial, utilizaremos el código de Terraform para conectarnos al arrendamiento y obtener los detalles de los dominios de disponibilidad.
-
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: Utilice los valores del archivo de configuración guardado para introducir los valores de parámetro en el archivo
variables.tf
. -
Tarea 3: Configuración de un pipeline de integración y despliegue continuos basado en YAML y un activador basado en la combinación de códigos
-
Una vez que el código de Terraform se haya transferido al repositorio GitLab, vamos a crear el pipeline y configurarlo mediante un archivo
yaml
. -
Cree un archivo
.gitlab-ci.yml
en el repositorio y agregue el siguiente código.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:
- Todos los comandos de Terraform
init
,plan
yapply
se ejecutan en la etapa de creación, pero puede utilizarlos según corresponda en la etapa que necesite. - Este archivo de demostración
yml
se basa en agentes GitLab que ejecutan Oracle Linux 7. Compruebe la disponibilidad de los módulos de Terraform en función del sistema operativo del agente y la disponibilidad de la red.
- Todos los comandos de Terraform
Enlaces relacionados
Agradecimientos
- Autor: Lovelesh Saxena (Arquitecto principal de ingeniería de software)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Connect Terraform Code from a GitLab Repository to an OCI Tenancy using a CI/CD Pipeline
F94446-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.