无法ssh到通过terraform创建的ibmcloud实例
我可以通过Terraform在IBMCloud中成功创建一个实例。问题是,成功部署后,我无法使用ssh将其部署到实例中 地形提供商ibm的版本是:1.11.2 地形本身的版本是:v0.12.20 我使用的地形代码如下所示:无法ssh到通过terraform创建的ibmcloud实例,cloud,terraform,ibm-cloud,terraform-provider-ibm,Cloud,Terraform,Ibm Cloud,Terraform Provider Ibm,我可以通过Terraform在IBMCloud中成功创建一个实例。问题是,成功部署后,我无法使用ssh将其部署到实例中 地形提供商ibm的版本是:1.11.2 地形本身的版本是:v0.12.20 我使用的地形代码如下所示: provider "ibm" { ibmcloud_api_key = "" region="eu-gb" generation = 2 } variable "ssh_public_ke
provider "ibm" {
ibmcloud_api_key = ""
region="eu-gb"
generation = 2
}
variable "ssh_public_key" {
default = "~/.ssh/id_rsa.pub"
}
resource "ibm_is_vpc" "testacc_vpc" {
name = "testvpc"
}
resource "ibm_is_subnet" "testacc_subnet" {
name = "testsubnet"
vpc = ibm_is_vpc.testacc_vpc.id
zone = "eu-gb-1"
ipv4_cidr_block = "10.242.0.0/24"
}
resource "ibm_is_ssh_key" "testacc_sshkey" {
name = "testssh"
public_key = "file(var.ssh_public_key)"
}
resource "ibm_is_security_group" "testacc_security_group" {
name = "test"
vpc = ibm_is_vpc.testacc_vpc.id
}
resource "ibm_is_security_group_rule" "testacc_security_group_rule_all" {
group = ibm_is_security_group.testacc_security_group.id
direction = "inbound"
remote = "127.0.0.1"
depends_on = [ibm_is_security_group.testacc_security_group]
}
resource "ibm_is_security_group_rule" "testacc_security_group_rule_ssh" {
group = ibm_is_security_group.testacc_security_group.id
direction = "inbound"
remote = "127.0.0.1"
icmp {
code = 22
type = 22
}
depends_on = [ibm_is_security_group_rule.testacc_security_group_rule_all]
}
resource "ibm_is_instance" "testacc_instance" {
name = "testinstance"
image = "99edcc54-c513-4d46-9f5b-36243a1e50e2"
profile = "cx2-2x4"
primary_network_interface {
subnet = ibm_is_subnet.testacc_subnet.id
}
network_interfaces {
name = "eth1"
subnet = ibm_is_subnet.testacc_subnet.id
}
vpc = ibm_is_vpc.testacc_vpc.id
zone = "eu-gb-1"
keys = [ibm_is_ssh_key.testacc_sshkey.id]
depends_on = [ibm_is_security_group_rule.testacc_security_group_rule_ssh]
//User can configure timeouts
timeouts {
create = "90m"
delete = "30m"
}
}
resource "ibm_is_floating_ip" "fip1" {
name = "fip1"
target = ibm_is_instance.testacc_instance.primary_network_interface[0].id
}
output "sshcommand" {
value = "ssh root@${ibm_is_floating_ip.fip1.address}"
}
有人认为安全规则有问题吗?我是否缺少一些额外的配置
提前谢谢大家 在terraform文件中需要做一些更改
网络接口。如果需要,请记住使用security\u groups
0.0.0/0
,而不是127.0.0.1
cat~/.SSH/id\u rsa.pub
,或者从UI创建SSH-key,然后传递密钥名哇,它确实起作用了!感谢您提供的所有见解!
data "ibm_is_ssh_key" "ds_key" {
name = "test"
}
provider "ibm" {
ibmcloud_api_key = ""
region="eu-gb"
generation = 2
}
resource "ibm_is_vpc" "testacc_vpc" {
name = "testvpc"
}
resource "ibm_is_subnet" "testacc_subnet" {
name = "testsubnet"
vpc = ibm_is_vpc.testacc_vpc.id
zone = "eu-gb-1"
ipv4_cidr_block = "10.242.0.0/24"
}
resource "ibm_is_ssh_key" "testacc_sshkey" {
name = "testssh"
public_key = "ssh-rsa xxxxxxx"
}
resource "ibm_is_security_group" "testacc_security_group" {
name = "test"
vpc = ibm_is_vpc.testacc_vpc.id
}
resource "ibm_is_security_group_rule" "testacc_security_group_rule_all" {
group = ibm_is_security_group.testacc_security_group.id
direction = "inbound"
remote = "0.0.0.0/0"
depends_on = [ibm_is_security_group.testacc_security_group]
}
resource "ibm_is_security_group_rule" "testacc_security_group_rule_ssh" {
group = ibm_is_security_group.testacc_security_group.id
direction = "inbound"
remote = "0.0.0.0/0"
icmp {
code = 22
type = 22
}
depends_on = [ibm_is_security_group_rule.testacc_security_group_rule_all]
}
resource "ibm_is_instance" "testacc_instance" {
name = "testinstance"
image = "99edcc54-c513-4d46-9f5b-36243a1e50e2"
profile = "cx2-2x4"
primary_network_interface {
subnet = ibm_is_subnet.testacc_subnet.id
security_groups = [ibm_is_security_group.testacc_security_group.id]
}
vpc = ibm_is_vpc.testacc_vpc.id
zone = "eu-gb-1"
keys = [ibm_is_ssh_key.testacc_sshkey.id]
depends_on = [ibm_is_security_group_rule.testacc_security_group_rule_ssh]
//User can configure timeouts
timeouts {
create = "90m"
delete = "30m"
}
}
resource "ibm_is_floating_ip" "fip1" {
name = "fip1"
target = ibm_is_instance.testacc_instance.primary_network_interface[0].id
}
output "sshcommand" {
value = "ssh root@${ibm_is_floating_ip.fip1.address}"
}