Terraform添加额外节点组时遇EC2密钥对重复导入报错求助
Terraform添加额外节点组时遇EC2密钥对重复导入报错求助
兄弟我太懂你这种刚玩Terraform就踩坑的头疼了!你现在遇到的这个EC2密钥对重复的报错,本质是Terraform的状态文件没同步上AWS已有的密钥对资源——AWS上已经有这个叫XXXXX的密钥对了,但你的Terraform状态里压根没记录它的存在,所以执行apply的时候,Terraform还想重新创建一个同名的,自然就触发AWS的重复报错了。
先给你说最稳妥的解决办法,把已有的密钥对导入到Terraform状态里:
- 你之前用
terraform import的时候走偏了,是因为没写对资源的完整路径!你的报错里显示这个密钥对资源是module.networks.aws_key_pair.user,所以正确的导入命令应该是:
这里的XXXXX就是你AWS控制台里那个密钥对的名称,不用管Region、AZ这些,Terraform会自动读取你配置文件里的参数。执行完这个命令后,Terraform就会把这个已存在的密钥对加到它的状态文件里,之后再跑terraform import module.networks.aws_key_pair.user XXXXXterraform apply就不会再试图创建重复的密钥对了。
另外给你补充几个小检查点,帮你彻底排查:
- 确认你Terraform用的AWS账号和你登录控制台的账号是同一个,别不小心切错账号了,这个小细节很容易忽略!
- 导入成功后,你可以用
terraform state show module.networks.aws_key_pair.user命令查看状态文件里有没有这个资源,确认同步成功。
你之前的尝试里,检查控制台没重复密钥对是对的,问题根源不在AWS那边,就是Terraform状态没跟上。至于你说的import时弹出一堆Region、AZ的问题,就是因为没指定完整的资源模块路径,用我上面给的命令就不会有这个问题了。
如果实在不想让Terraform管这个密钥对,也可以临时在aws_key_pair.user资源块里加count = 0,或者注释掉这个资源再apply,但这个方法不推荐,万一后续有其他资源依赖这个密钥对,会引发新的问题,还是用import同步状态最靠谱。
试试上面的方法,应该就能顺利添加你的额外节点组啦!
备注:内容来源于stack exchange,提问作者adam thompson
相关产品推荐
相关产品推荐

