Я использую двухуровневый пример AWS, и у меня есть прямое копирование - наклеил все это дело. terraform apply
работает вплоть до того места, где пытается подключиться по SSH к созданному экземпляру EC2. Он повторяет несколько раз, выдавая этот результат, прежде чем окончательно терпит неудачу.
aws_instance.web (remote-exec): Connecting to remote host via SSH...
aws_instance.web (remote-exec): Host: 54.174.8.144
aws_instance.web (remote-exec): User: ubuntu
aws_instance.web (remote-exec): Password: false
aws_instance.web (remote-exec): Private key: false
aws_instance.web (remote-exec): SSH Agent: true
В конечном итоге это не удается с:
Error applying plan:
1 error(s) occurred:
* ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.
Я искал и видел некоторые старые сообщения / проблемы, в которых говорилось, что перевернуть agent=false
, и я пробовал это также без изменений или успеха. Я скептически отношусь к тому, что этот пример неисправен из коробки, но я не делал никаких доработок или модификаций, которые могли бы его сломать. Я использую terraform 0.6.11, установленный через homebrew на OS X 10.10.5.
Дополнительная деталь:
resource "aws_instance" "web" {
# The connection block tells our provisioner how to
# communicate with the resource (instance)
connection {
# The default username for our AMI
user = "ubuntu"
# The connection will use the local SSH agent for authentication.
agent = false
}
instance_type = "t1.micro"
# Lookup the correct AMI based on the region
# we specified
ami = "${lookup(var.aws_amis, var.aws_region)}"
# The name of our SSH keypair we created above.
key_name = "${aws_key_pair.auth.id}"
# Our Security group to allow HTTP and SSH access
vpc_security_group_ids = ["${aws_security_group.default.id}"]
# We're going to launch into the same subnet as our ELB. In a production
# environment it's more common to have a separate private subnet for
# backend instances.
subnet_id = "${aws_subnet.default.id}"
# We run a remote provisioner on the instance after creating it.
# In this case, we just install nginx and start it. By default,
# this should be on port 80
provisioner "remote-exec" {
inline = [
"sudo apt-get -y update",
"sudo apt-get -y install nginx",
"sudo service nginx start"
]
}
}
И из файла переменных tf:
variable "key_name" {
description = "Desired name of AWS key pair"
default = "test-keypair"
}
variable "key_path" {
description = "key location"
default = "/Users/n8/dev/play/.ssh/terraform.pub"
}
но я могу использовать ssh с помощью этой команды:
ssh -i ../.ssh/terraform [email protected]
ssh
из командной строки и как пройти аутентификацию. - person Jakuje   schedule 13.02.2016