0

我是 Terraform 和 OCI 的新手。因此,我现在尝试通过云外壳在我的 OCI 中的 linux 主机上进行 ssh,但该主机位于私有子网中。所以我正在尝试以下命令,但出现超时错误。

你能告诉我我哪里弄错了吗

resource "null_resource" "remote-exec" {


    provisioner "remote-exec" {
        connection {
            agent =false
            timeout = "5m"
            host ="xx.xx.xx.x"   --- This is in a private subnet(private ip address to connect to linux env)
            user = var.host_user_name
           private_key =file("${path.module}/sshkey.pem")
        }
        inline = [
            "sleep 10",
            "sudo su - oracle",
            "source EBSapps.env run",
            "cd /u01/",
            "touch ytest.txt",
        ]
    }
}
4

1 回答 1

0

@Deepak .. 我猜您无法使用私有 IP 连接到私有子网中的实例。在这种情况下,您将需要堡垒主机。在从 terraform 尝试之前,您是否从 OCI 控制台尝试过?我相信您将无法仅通过私有 IP 连接到实例。如果您想在 terraform 中完成设置,则需要为 bastion-host 创建资源,然后您可以通过 bastion 主机连接到私有子网实例。在这种情况下,您的远程执行块将具有堡垒主机 IP。类似于下面的东西

 provisioner "remote-exec" {
        connection {
            agent =false
            timeout = "5m"
            host ="xx.xx.xx.x"   --- This should be bastion host IP
            user = var.host_user_name
           private_key =file("${path.module}/sshkey.pem")
        }

参考:

https://medium.com/@harjulthakkar/connect-to-private-compute-instance-using-oci-bastion-service-ca96a3ceea49

https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/bastion_bastion

于 2022-02-27T10:23:52.040 回答