关于在类似 UNIX 的系统上配置 Terraform
要使用 Terraform 创建 Oracle Cloud Infrastructure 组件,必须下载和安装 Terraform。您还将下载 Terraform 模块,这些模块创建将使用的配置文件以创建所需的基础结构组件。
安装 Terraform 和存储 Teraform 模块的系统可以位于内部部署或云中。为了方便起见,我们将作为本地系统或本地主机参考它。
在运行 Terraform 之前:
-
生成用于允许您访问计算实例的 SSH 密钥对
-
生成用于验证由 Terraform 发出的 API 调用的 API 签名密钥
-
设置 Terraform 用于验证访问和执行其计划的环境变量
完成这些步骤后,即可应用 Terraform 配置文件以在 Oracle Cloud Infrastructure 上创建基础结构组件。
生成 SSH 密钥对以访问基础主机
SSH 密钥对用于安全地访问在公共子网中创建的实例。您可以在本地主机上生成 SSH 密钥对。通过 Terraform 模块,将 SSH 公共密钥添加到基础主机。当您需要通过公共 Internet 连接到基础主机时,可提供 SSH 私有密钥以验证访问权限。
可以使用 ssh-keygen
实用程序生成 SSH 密钥对。请不要为 SSH 密钥设置密码短语。
生成 SSH 密钥对以访问其他实例
场所主机用于允许通过公共 IP 地址将 SSH 转发到不具有公共 IP 地址的其他实例,不允许通过公共 Internet 进行访问。要安全地从基础主机访问其他实例,可以使用 SSH 密钥对,其中专用子网的实例上存储的公共密钥与本地计算机上存储的私有密钥相匹配。作为安全最佳实践,此 SSH 密钥对不应与用于访问基础主机的 SSH 密钥对相同。
在本地主机上使用 ssh-keygen
来生成另一个 SSH 密钥对。记下保存此 SSH 密钥对的位置。
生成 API 签名密钥
必须以隐私增强的邮件(PEM)格式提供 RSA 密钥对以使用 Oracle Cloud Infrastructure 验证 Terraform 脚本。请注意,此 API 签名密钥与用于访问实例的 SSH 密钥对不同。可以使用 OpenSSL
生成此密钥对。
- 在主目录区域中创建隐藏目录以存储 PEM 密钥。输入:
mkdir ~/.oci
- 使用 OpenSSL 可以生成私有密钥。记住,在生成私有密钥时指定 2048 位或更高版本。输入:
openssl genrsa -out ~/.oci/key_name.pem 2048
- 更改私有密钥的权限以确保只有您可以读取该私有密钥。输入:
chmod go-rwx ~/.oci/key_name.pem
- 接下来,使用 OpenSSL 为给定私有密钥生成公共密钥。输入:
openssl rsa -pubout -in ~/.oci/key_name.pem -out ~/.oci/key_name_public.pem
使用控制台上载 API 签名密钥
在生成 API 签名密钥之后,您必须在 Oracle Cloud Infrastructure 中上载关联用户的公共密钥。首次上载 API 签名密钥时,必须使用控制台。之后,还可以使用 API 上载 API 密钥。
设置环境变量
使用此处提供的 Terraform 模块,可以通过在文本文件中指定所需的值来设置环境变量。然后,您只需对该文件进行源确保正确设置了所有必需的环境变量。
开始之前,请登录 Oracle Cloud Infrastructure 控制台。您将使用控制台找到以下信息。
-
租户 Oracle Cloud Infrastructure ID (OCID)
-
用户 OCID
-
要使用的 API 签名密钥的指纹
-
区域
-
区间 OCID
另请确保您知道 API 签名密钥和 SSH 密钥对存储在本地系统中的位置。
- 在本地系统上,导航到 Terraform 模块所在的目录。
- 在文本编辑器中打开
env-vars
文件。 env-vars
文件包含四个部分。从“验证详细信息”部分开始。- 输入租户 OCID。您可以在 Oracle Cloud Infrastructure 控制台底部找到租户 OCID。它是一个类似于
ocid1.tenancy.oc1..aaaaa...
的字符串。将此值粘贴到env-vars
文件中。 - 输入用户 OCID。要查找用户 OCID,请在 Oracle Cloud Infrastructure Console 中依次单击身份和用户。将显示用户列表以及用户 OCID。单击用户名下的复制以复制所需的用户 OCID。将此值粘贴到
env-vars
文件中。 - 输入 API 签名密钥指纹。在 Oracle Cloud Infrastructure 控制台的“用户 ”页上,单击用户可查看用户详细信息页。从 API 密钥部分中列出的密钥复制 API 密钥指纹。将此值粘贴到
env-vars
文件中。 - 输入本地系统上 API 私有密钥的完整路径和文件名。
- 输入租户 OCID。您可以在 Oracle Cloud Infrastructure 控制台底部找到租户 OCID。它是一个类似于
- 在
env-vars
文件的区域部分中,输入要在其中创建基础结构组件的区域。当前正在查看的区域显示在 Oracle Cloud Infrastructure 控制台的顶部。还可以使用控制台查找您有权访问的其他区域。 - 在
env-vars
文件的区间部分中,输入要在其中创建基础结构组件的区间的区间 OCID。确保您先前指定的用户属于对此处指定的区间具有所需权限的组。要查找划分 OCID,请转到 Oracle Cloud Infrastructure 控制台。依次单击身份和划分。此时将显示划分列表以及划分 OCID。单击区间名称下方的复制以复制所需的区间 OCID。将此值粘贴到env-vars
文件中。 - 在
env-vars
文件的公共/私有密钥部分中,对于主机和其他实例,输入本地系统上相应 SSH 公共密钥和私有密钥的完整路径和文件名。私有密钥的格式应为openssh
。 - 检查您是否正确输入了所有值。如果您忽略了任何值,则在运行 Terraform 时将提示您输入。如果您提供的值不正确,Terraform 将出错。当您满意所有值都正确时,保存并关闭
env-vars
文件。 - 要设置在
env-vars
文件中指定的环境变量,请打开一个终端,然后导航到 Terraform 模块所在的目录。输入:source ./env-vars