Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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
-
Configure o pipeline de infraestrutura gerenciada de automação do Terraform usando práticas de desenvolvimento do Agile.
-
Configure chaves de API para o usuário com base nas quais o agente GitLab estabelecerá conexão com a tenancy do OCI.
-
Configure um repositório GitLab no qual todo o código do Terraform será enviado e o código inicial do Terraform para obter detalhes da tenancy do OCI.
-
Configure um pipeline de CI/CD baseado em YAML que acionará ações do Terraform assim que um novo código for enviado e aprovado no repositório.
Pré-requisitos
-
Acesso obrigatório ao OCI e às políticas permitidas no Oracle Cloud Infrastructure Identity and Access Management (OCI IAM). O usuário deve ter acesso aos recursos correspondentes que deseja criar ou atualizar usando o código do Terraform.
-
Acesso a GitLab para criar um repositório, pipeline subsequente e push de código.
-
Compreensão básica da metodologia ágil de desenvolvimento de software.
Tarefa 1: Configurar as Chaves de API
-
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.
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.
-
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.
-
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.
Tarefa 2: Configurar o Repositório GitLab com o Código Terraform
-
Crie um repositório em GitLab; usaremos esse repositório para enviar o código do Terraform.
-
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
-
Depois que seu código do Terraform for enviado ao repositório GitLab, vamos criar o pipeline e configurá-lo usando um arquivo
yaml
. -
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
eapply
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.
- Todos os comandos
Links Relacionados
Confirmações
- Autor - Lovelesh Saxena (Arquiteto Principal de Engenharia de Software)
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.
Connect Terraform Code from a GitLab Repository to an OCI Tenancy using a CI/CD Pipeline
F94451-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.