注意:

将 Oracle Cloud Infrastructure Resource Manager 与自动化流程集成

简介

Oracle Cloud Infrastructure (OCI) Resource Manager 服务可自动部署和运行所有 OCI 资源。该服务使用基础设施即代码 (IaC) 模式,基于 Terraform。这是一个允许 DevOps 工程师在任何位置开发和部署基础设施的开源行业标准。

Terraform 配置将您的基础设施编码在声明式配置文件中。OCI 资源管理器服务允许您跨多个团队和平台共享和管理基础设施配置和状态文件。

通过 OCI 资源管理器,可以在 OCI 控制台中执行 Terraform 脚本。还可以进行 REST 调用或使用 Oracle Cloud Infrastructure 命令行界面 (OCI CLI),从而扩展与自动化工具(例如 OCI Devops、Jenkins、GitHub 等)集成的可能性。

architecture

在本教程中,我们将通过 OCI Vault 密钥安全地获取数据库管理员密码,从而自动部署 Oracle Autonomous Database 实例,而不会在文件中公开该密码,以便 OCI Resource Manager 执行用户具有创建数据库和存储密码的适当访问权限。

目标

先决条件

任务 1:在 OCI Vault 中为 Oracle Autonomous Database 创建密钥

我们将在 OCI Vault 中创建一个密码,以说明如何在 Terraform 中配置新资源,而不会泄露敏感数据。

密钥是用于 OCI 服务的密码、证书、SSH 密钥或验证令牌等身份证明。在 OCI Vault 中存储密钥比在其他位置(例如代码或配置文件)存储密钥更安全。当需要 OCI Vault 服务访问资源或其他服务时,您可以从其检索密钥。

您可以使用 OCI 控制台、OCI CLI 或 API 创建密钥。密钥内容将从外部源导入到服务。OCI Vault 服务将密钥存储在 Vault 中。

注:对于此任务,我们需要在 OCI 控制台中以管理员用户身份登录。您必须具有在 OCI Vault 中创建密码的权限。

  1. 登录到 OCI 控制台,单击身份和安全 Vault

    img_10.png

  2. 选择要存储密钥的区间,然后单击创建 Vault

    img_29.png

  3. 输入 Vault 的名称,确认区间并单击创建 Vault

    img_11.png

  4. 确认已创建 Vault 并创建密钥。单击主加密密钥创建密钥

    img_12.png

  5. 确认区间并为密钥输入名称。例如,输入 autonomouskey 作为名称,然后单击创建密钥

    img_13.png

    确认已创建密钥。

    img_14.png

  6. 单击密钥创建密钥

    img_15.png

  7. 我们将创建 Autonomous Admin(自治管理员)密码。输入以下信息并单击创建密钥

    • 区间: 选择区间。
    • 名称:输入第一个密钥的名称。
    • 选择手动生成密钥以包括密码。
    • 秘密类型模板:输入 Plain-Text
    • 秘密内容:输入您的密码。

    img_16.png

  8. 您将需要密钥 OCID 。要复制 OCID,请单击复制

    img_17.png

任务 2:为 OCI 用户创建策略

在本教程中,请考虑在名为 TestGroup 的组中包含您的用户名 TestUser。现在,创建名为 TestPolicy 的策略。

此任务非常重要,因为它可以控制保证 Terraform 自动化安全所需的所有权限。

注:对于此任务,我们需要使用 OCI 中的管理员用户登录。

  1. 转到 OCI 控制台,单击身份和安全策略

    img_18.png

  2. 单击创建策略

    img_19.png

  3. 对帐单部分中,输入以下策略。

    • 这些策略允许对以前创建的用于管理 OCI 资源管理器中的堆栈和作业的 TestGroup 进行分组。

      - 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
      
    • 此策略允许在区间集成中创建 Oracle Autonomous Database 实例。

      - Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
      
    • 该组可通过 Terraform 脚本读取存储在 OCI Vault 中的密码。

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • 此策略允许您保存特定区间上的 Terraform 脚本。

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • 此策略允许 TestGroup 用户在 OCI 代码编辑器中编辑代码。

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

    cloud_shell.png

任务 3:根据模板创建堆栈

为 Oracle Autonomous Database 实例创建堆栈。我们可以为此使用一个模板。第一步是以在任务 2 中创建的用户身份登录。

  1. 转到 OCI 控制台,然后单击汉堡菜单。

    img_1.png

  2. 单击开发人员服务堆栈

    img_2.png

  3. 选择区间,然后单击创建堆栈

    CleanShot 2024-04-15,07.47.32.png

  4. 堆栈信息页中,选择模板并单击选择模板可为 Oracle Autonomous Database 生成 Terraform 脚本。

    CleanShot 2024-04-15,07.48.19.png

  5. 服务选项卡中,选择自治事务处理数据库,然后单击选择模板

    CleanShot 2024-04-15,07.49.57.png

  6. 您可以生成 Terraform 脚本并存储在 OCI 对象存储桶中。选择使用定制 Terraform 提供程序,输入存储桶区间名称,然后保存堆栈

    CleanShot 2024-04-15,07.51.23.png

    您的堆栈已保存。

    CleanShot 2024-04-15,07.54.01.png

  7. 此模板不会读取存储在 OCI Vault 中的密钥。要使 Terraform 读取密钥,我们需要更改代码。

    单击编辑,然后选择在代码编辑器中编辑 Terraform 配置

    img_3.png

  8. 您可以编辑代码。默认代码为密码生成随机字符串。

    • main.tf 文件。

      CleanShot 2024-04-15,08.05.40.png

      CleanShot 2024-04-15,08.08.32.png

      您需要添加名为 oci_secrets_secretbundle 的新数据并将其分配给以下属性:

      • admin_password,位于 autonomous_data_warehouseautonomous_database 部分。
      • password,位于 autonomous_database_wallet 部分。
    • main.tf - 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,08.28.07.png

    • main.tf - autonomous_database 部分。

      img_4.png

    • main.tf - autonomous_database_wallet 部分。

      img_5.png

      CleanShot 2024-04-15,网址:08.30.15 substituir.png

    variables.tf 文件中添加以下代码,并替换在任务 1 中生成的密钥的 OCID。

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

      CleanShot 2024-04-15,08.30.52.png

    注:保存文件。将鼠标光标移到堆栈上(在编辑器的右侧,在自治事务处理 .... 标题中),右键单击并保存项目。如果不保存就离开,则执行将假定您在原始代码脚本中使用随机字符串。

任务 4:测试权限

您可以测试策略并了解如何控制特定区间中的 OCI 资源管理器、OCI Vault 和 Oracle Autonomous Database 实例。

  1. 使用您的管理员用户身份证明登录 OCI 控制台,并在 TestPolicy 策略中删除 TestGroup 组的所有策略。单击删除并确认。

    img_7.png

  2. 现在,使用 TestGroup 组中的 user 登录,您看不到堆栈,因此无法执行堆栈。

    CleanShot 2024-04-15,网址为 20.02.33.png

  3. 使用管理员用户添加以下语句。

    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

    以下语句向 TestGroup 中的用户授予使用 OCI 资源管理器堆栈的权限。

    CleanShot 2024-04-15,网址为 20.12.55.png

  4. 我们已删除您的用户创建 Oracle Autonomous Database 实例的授权,并在 OCI Vault 中读取密钥。因此,您可以执行堆栈,但不会成功。要进行测试,请单击堆栈详细信息页中的应用

    CleanShot 2024-04-15,网址为 20.16.39.png

    CleanShot 2024-04-15,网址为 20.18.40.png

  5. TestPolicy 上添加 Oracle Autonomous Database 和 OCI Vault 权限。

    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. 在堆栈详细信息页面中单击应用,您可以看到您可以控制所有资源,而不会泄露任何密码。

    CleanShot 2024-04-15,网址为 21.34.57.png

任务 5:使用 REST 调用 OCI 资源管理器自动化

OCI 中的所有资源都具有 OCI REST API 或 OCI CLI 命令来调用在 OCI 控制台中执行的服务。

有关 OCI REST API 的更多信息,请参阅 OCI REST API 。您可以在此处查看 OCI CLI 命令的列表:Oracle Cloud Infrastructure CLI Command Reference

现在,我们可以选择使用 OCI REST API 或 OCI CLI 命令执行 OCI 资源管理器堆栈。要创建作业,请参阅 CreateJob ,也可以使用以下示例代码 curl-oci.zip 以及使用 OCI 参数准备的 curl-oci.sh

img_20.png

您需要为 REST 请求创建签名。有关详细信息,请参阅 Oracle Cloud Infrastructure (OCI) REST 调用演练。

  1. 创建名为 STACK-RUN.sh 的文件。这将是您使用 curl-oci.sh 的 REST 请求(此工具将使用您的 OCI 信息准备授权字符串)。

    img_1.png

  2. 使用堆栈 ID区间 ID 创建名为 request.json 的文件。

    img.png

  3. 打开 curl-oci.sh 文件并更改以下参数。这些参数与您的 OCI CLI 安装相同。

    img_2.png

    现在,执行该脚本。

    img_3.png

    你可以看到成功的结果。

    img_4.png

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心