我是Terraform的新手,所以我可能会遗漏一些东西,但我确实安静了一项研究,但我没有找到解决方案。我们的公司AWS账户已经在区域eu-west-1上运行了somw实例。我决定测试Terraform,以便我们可以开始使用它。我创建了具有适当权限的IAM用户并创建了这个tf文件:
resource "aws_instance" "test" {
ami = "ami-21abf052"
instance_type = "t2.small"
}
terraform apply
因以下错误而失败:
* aws_instance.test: Error launching source instance: timeout while waiting for state to become 'success' (timeout: 15s)
起初我认为这是凭据问题,所以我尝试从awscli运行相同的内容:
aws ec2 run-instances --image-id ami-21abf052 --count 1 --instance-type t2.small
它就像一个魅力。 之后我尝试了很多东西,包括:使用不同的IAM用户,更改权限(给出"允许"到ec2:*),使用不同的AMI,设置不同的VPC,设置名称,标签,不同的实例类型,硬编码.tf文件中的access_key和secret_key,在文件中明确设置区域(对于awscli,默认值为eu-west-1)。我正在做awscli的任何事情都在工作,而terraform也失败了。
在失去一天后,我尝试了区域eu-central-1,它刚刚起作用。
我错过了什么?我应该以某种方式单独为区域添加权限吗?如果我不在.tf文件中定义它,是不是使用相同的〜/ .aws /凭证文件?
啊哈,我目前在AWS的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"iam:GetUser",
"sts:GetCallerIdentity",
"iam:ListRoles"
],
"Resource": "*"
}
]
}
编辑:
我测试了更多地区:
我的AMI:
variable "amis" {
default = {
eu-west-1 = "ami-21abf052"
eu-central-1 = "ami-b0db1ddf"
us-east-1 = "ami-e6d5d2f1"
us-west-1 = "ami-bcb9eedc"
sa-east-1 = "ami-ec811880"
}
}
版本Terraform v0.7.13 aws-cli/1.11.28 Python/2.7.12+ Linux/4.8.0-30-generic botocore/1.4.85
答案 0 :(得分:1)
您是否尝试过t2.small以外的实例类型?有时区域/ AZ会耗尽特定的实例类型。根据我的经验,实例无法启动,因为AWS只是超出了容量。最值得注意的是:
所以你看到的问题可能与Terraform无关。尝试使用其他实例类型(例如m3.medium
或m4.large
)来排除Terraform。
另见:Error: InsufficientInstanceCapacity。 CLI能够启动的事实可能是当时可用的一个实例。