如何使用 Terraform 连接到 OCI?

How do I connect to OCI using Terraform?

我正在使用来自 https://github.com/terraform-providers/terraform-provider-oci

的 Terraform OCI 提供程序连接到 OCI,享受乐趣和游戏

我失败的连接地形是:

provider "oci" {
  tenancy_ocid         = var.tenancy_ocid
  user_ocid            = var.user_ocid
  fingerprint          = var.fingerprint
  private_key_path     = var.private_key_path
  private_key_password = var.private_key_password
  region               = var.region
}

在我的 var.tf 中引用了相应的 pem 文件:

variable "private_key_path" {
  type    = string
  default = "~/.oci/oci_api_key.pem"
}

我得到的错误是:

Error: can not create client, bad configuration: did not find a proper configuration for private key

我正在按照此设置正确的凭据:https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm

我该如何解决这个问题?

感谢 John Hanley,我将 var.tf 修改为以下内容,它成功了!请注意从 ~/.oci 到完整路径 /Users/jnevill/.oci 的更改。这是在 Macos 上使用 brew 安装的 terraform。

variable "private_key_path" {
  type    = string
  default = "/Users/jnevill/.oci/oci_api_key.pem"
}

谢天谢地,这是一个简单的解决方案 - 感谢 John Hanley 为我指明了正确的方向。简而言之,~ 在 private_key_path 变量中不起作用。

解决方案

将 pem 引用从 ~ 更改为 /Users/YourUserName/

这使 terraform 能够正确引用 pem 文件。

失败变量

variable "private_key_path" {
  type    = string
  default = "~/.oci/oci_api_key.pem"
}

工作变量

variable "private_key_path" {
  type    = string
  default = "/Users/jnevill/.oci/oci_api_key.pem"
}