Observação:

Integrar o Oracle Cloud Infrastructure Resource Manager com o Processo de Automação

Introdução

O serviço Oracle Cloud Infrastructure (OCI) Resource Manager automatiza a implantação e as operações de todos os recursos do OCI. Usando o modelo infrastructure como código (IaC), o serviço se baseia no Terraform, um padrão do setor de código aberto que permite que os engenheiros do DevOps desenvolvam e implantem sua infraestrutura em qualquer lugar.

Uma configuração Terraform codifica sua infraestrutura em arquivos de configuração declarativos. O serviço OCI Resource Manager permite compartilhar e gerenciar a configuração da infraestrutura e os arquivos de estado em várias equipes e plataformas.

Por meio do OCI Resource Manager, é possível executar scripts do Terraform na Console do OCI. Também é possível fazer uma chamada REST ou usar a CLI do OCI (Interface de Linha de Comando) do Oracle Cloud Infrastructure, expandindo assim as possibilidades de integração com ferramentas de automação, como OCI Devops, Jenkins, GitHub etc.

architecture

Neste tutorial, automatizaremos a implantação de uma instância do Oracle Autonomous Database obtendo a senha de administrador do banco de dados com segurança por meio de segredos do OCI Vault sem expô-la nos arquivos, para que o usuário de execução do OCI Resource Manager tenha acesso adequado para criar o banco de dados e a senha armazenada.

Objetivos

Pré-requisitos

Tarefa 1: Criar um Segredo para o Oracle Autonomous Database no OCI Vault

Criaremos uma senha no OCI Vault para ilustrar como configurar um novo recurso no Terraform sem expor dados confidenciais.

Segredos são credenciais como senhas, certificados, chaves SSH ou tokens de autenticação que você usa com os serviços do OCI. O armazenamento de segredos em um OCI Vault oferece maior segurança do que você pode obter armazenando-os em outro local, como em arquivos de código ou de configuração. Você pode recuperar segredos do serviço OCI Vault quando precisar deles para acessar recursos ou outros serviços.

Você pode criar segredos usando a Console, a CLI ou a API do OCI. O conteúdo de um segredo é importado de uma origem externa para o serviço. O serviço OCI Vault armazena segredos em vaults.

Observação: Para essa tarefa, precisamos fazer log-in como um usuário administrador na Console do OCI. Você deve ter permissão para criar uma senha no OCI Vault.

  1. Faça log-in na Console do OCI, clique em Identidade e Segurança e Vault.

    img_10.png

  2. Selecione o compartimento no qual deseja armazenar os segredos e clique em Criar Vault.

    img_29.png

  3. Informe um nome para o seu vault, confirme o compartimento e clique em Criar Vault.

    img_11.png

  4. Confirme se o vault foi criado e crie uma chave. Clique em Principais Chaves de criptografia e Criar chave.

    img_12.png

  5. Confirme o compartimento e digite um nome para sua chave. Por exemplo, digite autonomouskey como Nome e clique em Criar Chave.

    img_13.png

    Confirme se a chave foi criada.

    img_14.png

  6. Clique em Secrets e em Create Secret.

    img_15.png

  7. Criaremos a senha do Autonomous Admin. Especifique as seguintes informações e clique em Criar Segredo.

    • Compartimento: Selecionar compartimento.
    • Nome: Informe o nome do seu primeiro segredo.
    • Selecione Geração de segredo manual para incluir a senha.
    • Secret Type Template: Digite Plain-Text.
    • Conteúdo do Segredo: Informe sua senha.

    img_16.png

  8. Você precisará do OCID do Segredo. Para copiar o OCID, clique em Copiar.

    img_17.png

Tarefa 2: Criar Políticas para o usuário do OCI

Neste tutorial, considere seu nome de usuário TestUser incluído em um grupo chamado TestGroup. Agora, crie uma política com o nome TestPolicy.

Essa tarefa é importante porque controla todos os privilégios necessários para garantir a segurança da automação do Terraform.

Observação: Para essa tarefa, precisamos fazer log-in com um usuário administrador no OCI.

  1. Vá para a Console do OCI, clique em Identity & Security e Policies.

    img_18.png

  2. Clique em Criar Política.

    img_19.png

  3. Na seção Instruções, informe as políticas a seguir.

    • Essas políticas dão permissão para o grupo TestGroup criado anteriormente para gerenciar uma pilha e jobs no OCI Resource Manager.

      - Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
      - Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
      - Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
      
    • Esta política dá o direito de criar uma instância do Oracle Autonomous Database na integração de compartimentos.

      - Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
      
    • O grupo pode ler a senha armazenada no OCI Vault por meio de scripts do Terraform.

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • Esta política dá o direito de salvar os scripts do Terraform em um compartimento específico.

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • Essa política permite que os usuários de TestGroup editem o código no OCI Code Editor.

      - Allow group 'Default'/'TestGroup' to use cloud-shell in tenancy
      

    cloud_shell.png

Tarefa 3: Criar uma Pilha de um Modelo

Crie uma pilha para uma instância do Oracle Autonomous Database. Podemos usar um modelo para isso. A primeira etapa é fazer logon como o usuário criado na Tarefa 2.

  1. Vá para a Console do OCI e clique no menu de hambúrguer.

    img_1.png

  2. Clique em Serviços de Desenvolvimento e Pilhas.

    img_2.png

  3. Selecione seu Compartimento e clique em Criar pilha.

    CleanShot 2024-04-15 em 07.47.32.png

  4. Na página Informações da pilha, selecione Modelo e clique em Selecionar modelo para gerar um script do Terraform para o Oracle Autonomous Database.

    CleanShot 2024-04-15 em 07.48.19.png

  5. Na guia Serviço, selecione Banco de Dados Autonomous Transaction Processing e clique em Selecionar modelo.

    CleanShot 2024-04-15 em 07.49.57.png

  6. Você pode gerar os scripts do Terraform e armazená-los no bucket do OCI Object Storage. Selecione Usar provedores Terraform personalizados, informe o Compartimento e o Nome do bucket e salve sua pilha.

    CleanShot 2024-04-15 em 07.51.23.png

    Sua pilha foi salva.

    CleanShot 2024-04-15 em 07.54.01.png

  7. Este modelo não lê o segredo armazenado no Vault do OCI. Para fazer com que o Terraform leia o segredo, precisamos alterar o código.

    Clique em Editar e selecione Editar configuração do Terraform no editor de código.

    img_3.png

  8. Você pode editar o código. O código padrão gera uma string aleatória para a senha.

    • Arquivo main.tf.

      CleanShot 2024-04-15 em 08.05.40.png

      CleanShot 2024-04-15 em 08.08.32.png

      Você precisa adicionar um novo dados chamado oci_secrets_secretbundle e designá-lo aos seguintes atributos:

      • admin_password nas seções autonomous_data_warehouse e autonomous_database.
      • password na seção autonomous_database_wallet.
    • main.tf - seção autonomous_data_warehouse.

      data "oci_secrets_secretbundle" "bundle" {
          secret_id = var.secret_ocid
      }
      
      admin_password = base64decode(data.oci_secrets_secretbundle.bundle.secret_bundle_content.0.content)
      

      CleanShot 2024-04-15 em 08.28.07.png

    • main.tf - seção autonomous_database.

      img_4.png

    • main.tf - seção autonomous_database_wallet.

      img_5.png

      CleanShot 2024-04-15 em 08.30.15 substituir.png

    Adicione o código a seguir no arquivo variables.tf e substitua o OCID do seu segredo gerado na Tarefa 1.

    variable "secret_ocid" {
        default = "ocid1.vaultsecret.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    
    • Arquivo variables.tf.

      CleanShot 2024-04-15 em 08.30.52.png

    Observação: Salve seus arquivos. Mova o cursor do mouse sobre sua pilha (no lado direito do editor, no título Autonomous Transaction Processing....), clique com o botão direito do mouse e salve seu projeto. Se você sair sem salvar, a execução supõe que você usará a string aleatória no script de código original.

Tarefa 4: Testar as Permissões

Você pode testar as políticas e ver como tem controle das instâncias do OCI Resource Manager, do OCI Vault e do Oracle Autonomous Database em um compartimento específico.

  1. Faça log-in na Console do OCI com suas credenciais de usuário administrador e remova todas as políticas do grupo TestGroup na política TestPolicy. Clique em Excluir e confirme.

    img_7.png

  2. Agora, faça log-in com seu usuário no grupo TestGroup e você não poderá ver a pilha; portanto, não poderá executá-la.

    CleanShot 2024-04-15 em 20.02.33.png

  3. Adicione as instruções a seguir com o Usuário administrador.

    Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
    Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
    Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    

    img_8.png

    As instruções a seguir concedem ao usuário em TestGroup permissões para usar a pilha do OCI Resource Manager.

    CleanShot 2024-04-15 em 20.12.55.png

  4. Removemos a concessão para que seu usuário criasse uma instância do Oracle Autonomous Database e lesse o segredo no OCI Vault. Assim, você pode executar sua pilha, mas sem sucesso. Para testar, clique em aplicar na página de detalhes da pilha.

    CleanShot 2024-04-15 em 20.16.39.png

    CleanShot 2024-04-15 em 20.18.40.png

  5. Adicione as permissões do Oracle Autonomous Database e do OCI Vault em TestPolicy.

    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
    

    img_9.png

  6. Clique em aplicar na página de detalhes da pilha e você poderá ver que tem o controle de todos os recursos sem expor nenhuma senha.

    CleanShot 2024-04-15 em 21.34.57.png

Tarefa 5: Chamar a Automação do OCI Resource Manager com REST

Todos os recursos do OCI têm uma API REST do OCI ou um comando da CLI do OCI para chamar serviços conforme executado na Console do OCI.

Para obter mais informações sobre a API REST do OCI, consulte API REST do OCI. Você pode ver a lista de comandos da CLI do OCI aqui: Referência de Comando da CLI do Oracle Cloud Infrastructure.

Agora, podemos optar por executar a pilha do OCI Resource Manager com uma API REST do OCI ou um comando da CLI do OCI. Para criar um Job, consulte CreateJob ou você pode usar o código de amostra curl-oci.zip a seguir com curl-oci.sh preparado com parâmetros do OCI.

img_20.png

Você precisa criar a assinatura para suas solicitações REST. Para obter mais informações, consulte Passo a passo da chamada REST do OCI (Oracle Cloud Infrastructure) com curl.

  1. Crie um arquivo chamado STACK-RUN.sh. Esta será sua solicitação REST usando um curl-oci.sh (esta ferramenta preparará sua string de autorização com suas informações do OCI).

    img_1.png

  2. Crie um arquivo chamado request.json com o ID da pilha e o ID do compartimento.

    img.png

  3. Abra o arquivo curl-oci.sh e altere os parâmetros a seguir. Esses parâmetros são os mesmos da instalação da CLI do OCI.

    img_2.png

    Agora, execute o script.

    img_3.png

    Você pode ver os resultados de sucesso.

    img_4.png

Confirmação

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.