本地正常的Terraform导入aws_eip命令在Azure DevOps流水线报错如何解决
排查解决步骤
确认执行目录下存在完整配置
本地执行命令的目录和Azure DevOps流水线的工作目录可能不一致,先在import命令前添加命令打印当前目录文件:
Windows代理执行:dir
Linux代理执行:ls -la *.tf
确认写有aws_eip.lb资源的.tf文件确实在当前执行目录下,文件后缀必须为.tf(不要存为.tf.txt这类格式,Terraform不会识别)。如果你的命令加了-chdir或-config参数指定了其他配置目录,也要对应检查该目录下的文件。必须先执行
terraform init再执行import
本地环境你可能已经提前完成过初始化,而Azure DevOps流水线是全新的干净环境,必须在import前先执行terraform init,且init执行无报错,Terraform才能正常加载当前目录的配置文件。确认资源导入地址和配置匹配
如果你没有把aws_eip.lb写在根模块,而是放在了自定义子模块中,import的资源地址需要调整为module.<你的子模块名称>.aws_eip.lb,不能直接使用根模块的地址aws_eip.lb。同时检查配置文件中resource块的拼写:确认资源类型为aws_eip,资源名称为lb,没有拼写错误。确认配置已完整提交到代码库
检查你本地编写的所有Terraform配置文件都已经提交到流水线拉取的代码分支中,避免出现本地有配置、但漏提交到代码库的问题。
内容的提问来源于stack exchange,提问作者PrakashS
相关产品推荐
相关产品推荐

