Observação:

Conectar o Código do Terraform de um Repositório GitLab a uma Tenancy do OCI usando um Pipeline de CI/CD

Introdução

Enquanto trabalhamos na Oracle Cloud Infrastructure (OCI) ou em qualquer outra nuvem, precisamos de orientações claras sobre automação em todos os lugares, e uma das automatizações mais importantes necessárias é o provisionamento da infraestrutura.

Os usuários desejam provisionar sua infraestrutura de nuvem usando o Terraform e, quando houver algum código envolvido, desejam gerenciá-lo usando práticas de desenvolvimento do Agile em um repositório de código e gerenciá-lo de uma maneira DevOps completa. Depois que o repositório é configurado com o código inicial, qualquer desenvolvedor pode enviar um novo código e implantar a nova infraestrutura acionada a partir de um pipeline de integração contínua e entrega/implantação contínua (CI/CD).

Neste tutorial, entenderemos todas as etapas necessárias para configurar o pipeline de infraestrutura gerenciada de automação do Terraform de uma maneira ágil de desenvolvimento e usar o GitLab como nosso provedor de repositórios. O mesmo processo se aplica a outros provedores, como GitHub e DevOps do Azure.

Objetivos

Pré-requisitos

Tarefa 1: Configurar as Chaves de API

  1. Faça log-in na tenancy do OCI com a conta de serviço ou o usuário administrador e vá para Definições do usuário.

    Abrir Definições do Usuário

    Ou

    Você também pode ir para o usuário na console do OCI IAM. Apenas certifique-se de que esse usuário tenha todo o acesso necessário para criar ou atualizar a infraestrutura no OCI.

  2. Vá para a seção Recursos do usuário, clique em Chaves de API e Adicionar Chave de API. Aqui, você pode optar por fazer download das novas chaves pública e privada, fazer upload da sua chave pública ou colar sua chave pública.

    Adicionar Chave de API

  3. Depois de selecionar qualquer uma das opções, salve as chaves em um local conveniente e salve o arquivo de configuração conforme mostrado na imagem a seguir. Você precisará desse arquivo de configuração e dessa chave privada ao estabelecer conexão com sua tenancy usando o Terraform.

    Salvar Arquivo de Configuração

Tarefa 2: Configurar o Repositório GitLab com o Código Terraform

  1. Crie um repositório em GitLab; usaremos esse repositório para enviar o código do Terraform.

    GitLab Repositório

  2. Desenvolva o código do Terraform necessário para estabelecer conexão com a tenancy. Neste tutorial, usaremos o código do Terraform para estabelecer conexão com a tenancy e obter os detalhes dos domínios de disponibilidade.

    • 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
      }
      

    Observação: Use os valores do arquivo de configuração salvo para informar os valores de parâmetro no arquivo variables.tf.

Tarefa 3: Configurar um Pipeline de CI/CD Baseado em YAML e Acionar com Base na Intercalação de Códigos

  1. Depois que seu código do Terraform for enviado ao repositório GitLab, vamos criar o pipeline e configurá-lo usando um arquivo yaml.

    GitLab CICD do Repositório

  2. Crie um arquivo .gitlab-ci.yml no repositório e adicione o código a seguir.

    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
    

    Observação:

    • Todos os comandos init, plan e apply do Terraform são executados no estágio de build, mas você pode usá-los adequadamente no estágio necessário.
    • Este arquivo de demonstração yml é baseado em agentes GitLab que executam o Oracle Linux 7. Verifique a disponibilidade dos módulos Terraform com base no sistema operacional do agente e na disponibilidade da rede.

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.