Terraform执行apply时出现Reference to undeclared resource错误如何解决?
问题原因与解决方案
1. 资源本地名拼写不匹配
你声明aws_key_pair资源时的本地名存在拼写错误:
- 资源声明的本地名是
microservcies-demo-key(单词services拼写错误,漏了字母e) - 模块中引用时写的是
microservices-demo-key,和声明的名称不一致,因此Terraform判定对应资源未声明。
解决方法:统一两边的资源本地名,比如修改资源声明的配置为:
resource "aws_key_pair" "microservices-demo-key" { key_name = "microservices-demo-key" public_key = file("./microservices_demo.pem") }
2. 密钥对配置文件存放位置错误
如果确认拼写无问题,就是你存放aws_key_pair资源的tf文件放在了./node-server子模块目录下,而非根模块目录下。
Terraform执行命令时默认仅加载当前工作目录(根模块目录)下的所有.tf文件,子目录下的配置文件不会被根模块直接识别,仅在子目录作为模块被引用时才会加载对应配置。
解决方法:将存放aws_key_pair资源的tf文件移动到和test-server.tf同级的根模块目录下即可。
内容的提问来源于stack exchange,提问作者Noor Ul Ain Butt
相关产品推荐
相关产品推荐

