关于在 Windows 系统上配置 Terraform

要使用 Terraform 创建 Oracle Cloud Infrastructure 组件,必须下载并安装 Terraform。您还将下载 Terraform 模块,以创建要使用的配置文件,从而创建所需的基础结构组件。

安装 Terraform 并存储 Teraform 模块的系统可以在内部部署环境或云中。为方便起见,我们将此称为本地系统或本地主机。

在运行 Terraform 之前:

  • 生成允许您访问计算实例的 SSH 密钥对

  • 生成用于验证 Terraform 所执行的 API 调用的 API 签名密钥

  • 设置 Terraform 用于验证访问和执行计划的环境变量

完成这些步骤后,您可以应用 Terraform 配置文件在 Oracle Cloud Infrastructure 上创建基础结构组件。

安装 Terraform

要在 Windows 系统上安装 Terraform,请从 Terraform Web 站点下载相应的软件包。

  1. 转至 https://www.terraform.io/downloads.html
  2. 将适用的软件包下载到本地系统。
  3. 将程序包解压缩到文件夹 C:\Program Files (x86) 中。
    此路径用作示例。但是,您也可以将 Terraform 可执行文件应用于本地系统中的任何其他位置。
  4. 更新路径环境变量以包括 Terraform 可执行文件所在的文件夹。
    1. 转至 Control Panel
    2. 单击系统
    3. 在 Windows 10 系统上,单击高级系统设置。此选项在不同版本的 Windows 中可能有所不同。
      此时将显示 System Properties(系统属性)窗口的 Advanced(高级)选项卡。
    4. 单击窗口底部的 Environment Variables(环境变量)
      此时将显示环境变量窗口。
    5. 系统变量窗格中,单击路径,然后单击编辑
    6. 单击“新建”。将路径添加到 Terraform 可执行文件所在的文件夹。
    7. 单击确定以保存更改,然后单击确定以退出环境变量窗口。然后再次单击确定以退出系统属性窗口。
  5. 要验证您的安装并检查版本,请启动 Windows PowerShell 并输入:terraform -version
    您将看到输出中显示的 Terraform 版本。例如:Terraform v0.11.8

生成访问堡垒主机的 SSH 密钥对

使用 SSH 密钥对可以安全地访问在公共子网中创建的实例。可以在本地主机上生成 SSH 密钥对。然后,Terraform 模块将 SSH 公共密钥添加到堡垒主机。如果需要通过公共互联网连接到堡垒主机,请提供 SSH 私钥以验证访问。

可以使用 PuTTYgen 生成 SSH 密钥对。请勿为 SSH 密钥设置密码短语。

  1. 启动 PuTTYgen。
  2. 接受缺省密钥类型 SSH-2 RSA,并将所生成密钥中的位数设置为 2048(如果尚未设置)。
  3. 单击生成,然后将鼠标移到空白区域周围以生成随机性。
    将生成密钥,其值将显示在 Public key for pasting into OpenSSH authorized_keys file。 下。
  4. 单击保存专用密钥。系统将提示您确认要保存密钥而不使用密码短语。单击。您可以将此密钥存储在任何位置,但为了简单起见,请将它存储在 Terraform 模块所在的文件夹中。
  5. 接下来,要保存公钥,请选择Public key for pasting into OpenSSH authorized_keys file(用于粘贴到 OpenSSH authorized_keys 文件的公共密钥)字段中显示的所有生成的密钥,复制该密钥并将其粘贴到文本文件中。将此文件保存在私钥所在的位置。不要使用保存公共密钥按钮,因为它不会以 OpenSSH 格式保存密钥。
您现在已在本地系统中生成并存储 SSH 密钥对。确保记录存储此密钥对的位置。

生成访问其他实例的 SSH 密钥对

堡垒主机用于启用 SSH 转发到其他没有公共 IP 地址且不允许通过公共互联网访问的实例。要从堡垒主机安全访问其他实例,请使用 SSH 密钥对,其中存储在专用子网中的实例上的公钥与本地计算机上存储的私有密钥匹配。

用于启用从堡垒主机到其他实例的访问的 SSH 密钥对必须使用 OpenSSL 或 ssh-keygen. 等实用程序生成。您无法使用 PuTTY 在 Windows 上生成的 SSH 密钥对,因为 Oracle Linux 或其他类似 UNIX 的操作系统不支持 PuTTY 使用的 .ppk 格式。请记住,堡垒主机(将 SSH 通信转发到其他实例)使用 Oracle Linux 映像。

  1. 启动 Git Bash。
  2. 输入:ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name>
    在此命令中:
    • -t rsa 指定应使用 RSA 算法生成密钥

    • -N "" 指定要与此密钥关联的密码短语。不要在报价之间输入任何内容。创建密钥时没有密码短语。

    • -b 2048 指定您要生成 2048 位密钥。这是默认值,也是建议的最小值。

    • -C "<key_name>" 指定此密钥对的名称。

    • -f <path/root_name> 指定保存密钥的位置以及公共密钥和私有密钥的根名称。公共密钥将 .pub 附加到根名称。

将生成 SSH 密钥对并将其保存在您指定的位置。指出此位置。

生成 API 登录密钥

必须以隐私增强型邮件 (Privacy Enhanced Mail, PEM) 格式提供 RSA 密钥对,才能使用 Oracle Cloud Infrastructure 验证 Terraform 脚本。请注意,此 API 签名密钥与用于访问实例的 SSH 密钥对不同。您可以在 Git Bash 中使用 OpenSSL 生成此密钥对。您应该已在本地系统上安装 Git Bash。

  1. 启动 Git Bash。
  2. 创建用于存储 PEM 密钥的隐藏文件夹。您可以将 PEM 密钥存储在任何位置,但为了简单起见,请在 Terraform 模块所在的文件夹下创建此文件夹。确保记录存储密钥对的位置。导航到该位置,然后输入:mkdir ./.oci
  3. 要创建 API 签名密钥,请输入:openssl genrsa -out ./.oci/key_name.pem 2048
  4. 更改私有密钥的权限以确保只有您可以读取私有密钥。输入:chmod go-rwx ./.oci/key_name.pem
  5. 接下来,要生成给定私有密钥的公共密钥,请输入:openssl rsa -pubout -in ./.oci/key_name.pem -out ./.oci/key_name_public.pem
公共和专用 API 签名密钥存储在指定的文件夹中。

使用控制台上载 API 签名密钥

生成 API 签名密钥后,必须在 Oracle Cloud Infrastructure 中为关联用户上载公钥。第一次上载 API 签名密钥时,必须使用控制台。随后,您还可以使用该 API 上载 API 密钥。

  1. 登录 Oracle Cloud Infrastructure 控制台。
  2. 单击身份,然后单击用户
  3. 单击要为其添加 API 签名密钥的用户。
  4. 在用户详细信息页面上,单击添加公共密钥
  5. 在本地系统上,启动 Git Bash。导航到存储 API 签名密钥对的文件夹。
  6. 要复制公共密钥,请输入:cat ./key_name_public.pem.显示公共密钥值。复制此值,包括行 -----BEGIN PUBLIC KEY----------END PUBLIC KEY-----.
  7. 在控制台中,粘贴公共密钥值,然后单击添加