准备预配基础结构资源

安装 Terraform 并生成在 Oracle Cloud 中创建基础结构资源所需的关键字。

使用须知

开始在 Oracle Cloud Infrastructure 中创建资源之前,请确保满足以下条件:

  • Oracle Cloud 租户的身份证明。

  • 有权创建和管理其中的资源的区间。
  • 具有以下软件和 Internet 访问权限的计算机:

    • 用于生成 API 签名密钥的实用程序。

      大多数类似 Unix 的系统都有 openssl。在 Windows 上,可以使用 Git Bash。

    • 用于生成 SSH 密钥对的实用程序。

      大多数类似 Unix 的系统都有 ssh-keygen。在 Windows 上,您可以使用 PuTTY。

    • Web 浏览器。

  • 具备 Terraform 基本知识。

    请至少阅读 https://www.terraform.io/intro/的简介。

安装地形

Terragrunt 是用于有效应用和管理 Terraform 模块的第三方工具。通过使用单个 Terragrunt 操作,您可以部署在所有模块中定义的资源,而不是使用 Terraform 单独应用模块。

要下载和安装 Terragrunt,请按照 https://github.com/gruntwork-io/terragrunt#install-terragrunt 上的说明进行操作。

注 :

如果使用 brew 安装了 Linux 或 macOS 上的 Terragrunt,则 Terraform 将自动作为某个依赖项安装。您不需要安装 Terraform。

安装 Terraform

在包括 Oracle Linux 在内的 UNIX 类似 Linux 系统中,您可以通过下载和提取操作系统的 Terraform 程序包来安装 Terraform。

  1. 转到 https://www.terraform.io/downloads.html
  2. 根据操作系统下载相应的程序包。
  3. 将软件包提取到路径 /usr/local/bin/
    您可以将 Terraform 提取到本地主机上的任何其他目录。请确保 PATH 变量中包含该目录。
    Terraform 已安装并已准备就绪 , 可供使用。
  4. 验证安装。
    terraform -v

    显示 Terraform 版本,如下例所示:

    Terraform v0.12.18

生成 API 签名密钥

要使 Terraform 能够使用 Oracle Cloud Infrastructure 进行验证,必须以 privacy-enhanced mail (PEM)格式提供 RSA 密钥。此密钥与您用于访问计算实例的 SSH 密钥不同。

使用 OpenSSL 生成 API 签名密钥。
  1. 在主目录中创建隐藏的子目录以存储 PEM 密钥。
    mkdir ~/.oci
  2. 生成私有密钥(大小:2048 位或更高)。
    openssl genrsa -out ~/.oci/oci_api_key.pem 2048
  3. 更改私有密钥文件的权限以确保只有您能够读取密钥。
    chmod go-rwx ~/.oci/oci_api_key.pem
  4. 为私有密钥生成公共密钥。
    openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem

上载 API 签名密钥

生成 API 签名密钥后,将适当用户的公共密钥上载到 Oracle Cloud Infrastructure 中。

  1. 登录 Oracle Cloud Infrastructure Web 控制台。
  2. 从服务菜单中,选择身份,然后选择用户
  3. 在“户”页上,单击计划在 Terraform 配置中指定的用户。
  4. 在用户详细信息页上,单击添加公共密钥
  5. ~/.oci/oci_api_key_public.pem 文件中复制公共密钥值,并将其粘贴在 PUBLIC KEY 字段中。
  6. 单击添加
    将上载密钥并显示其指纹。
  7. 复制指纹。您稍后需要。

为基本主机生成 SSH 密钥对

使用 SSH 密钥对可以安全地访问实例。在本地主机上生成密钥对。然后,Terraform 模块将公共密钥添加到 bastion 主机。连接到 bastion 主机时,需要提供私有密钥以便对访问权限进行验证。

  • 使用 ssh-keygen 实用程序并生成 SSH 密钥对。请勿为密钥对设置密码短语。
    ssh-keygen -t rsa -N "" -b 2048 -C "key_name" -f path/root_name
    • -t rsa:指定应使用 RSA 算法生成密钥对

    • -N "":指定要与此密钥对关联的密码短语。不要在引号之间输入任何内容。创建不带密码短语的密钥对。

    • -b 2048:指定您希望生成 204 个 8 位的密钥。此值为默认值(以及建议的最小值)。

    • -C "key_name":指定密钥对的名称。

    • -f path/root_name:指定保存密钥对的目录以及公共密钥和私有密钥的根名称。公共密钥在根名称后附加了 .pub

将生成 SSH 密钥对并将其保存在您指定的目录中。记下关键文件的完整路径和名称。

为私有实例生成 SSH 密钥对

通过基础主机,可以通过 SSH 转发到没有公共 IP 地址的实例。要通过基本主机安全地访问此类专用实例,请使用 SSH 密钥对。作为安全最佳实践,此密钥对应该与用于基础主机的密钥对不同。

  • 使用 ssh-keygen 实用程序并生成 SSH 密钥对。请勿为密钥对设置密码短语。
    ssh-keygen -t rsa -N "" -b 2048 -C "key_name" -f path/root_name
    • -t rsa:指定应使用 RSA 算法生成密钥对

    • -N "":指定要与此密钥对关联的密码短语。不要在引号之间输入任何内容。创建不带密码短语的密钥对。

    • -b 2048:指定您希望生成 204 个 8 位的密钥。此值为默认值(以及建议的最小值)。

    • -C "key_name":指定密钥对的名称。

    • -f path/root_name:指定保存密钥对的目录以及公共密钥和私有密钥的根名称。公共密钥在根名称后附加了 .pub

将生成 SSH 密钥对并将其保存在您指定的目录中。记下关键文件的完整路径和名称。