如何将Git资源导入Terraform模块?执行导入命令遇匹配错误
Terraform导入GitHub成员资源报错解决
问题
执行导入命令:
terraform import module.users.user_jons.git.github_membership[membership_jons] org:jonsh
直接报错:
no matches found: module.users.user_jons.git.github_membership[membership_jons]
你的配置与目录结构
根目录provider.tf:
provider "github" { token = "***" owner = "org" } module "users" { source = "./users/" }
users/users.modules.tf:
module "user_jons" { source = "./jons/" }
users/jons/jons.modules.tf:
module "git" { source = "./git/" }
users/jons/git/git.member.tf:
resource "github_membership" "membership_jons" { }
问题根源和修复方法
1. 资源地址语法错误
Terraform引用嵌套模块的资源,是用.逐层连接,不需要加[]包裹资源名称。你写的github_membership[membership_jons]是错误格式,正确的资源地址应该是module.users.user_jons.git.github_membership.membership_jons。
2. Shell通配符干扰
bash/zsh这类shell会把[]当作文件通配符去匹配本地文件,找不到就直接抛出no matches found错误,根本没把命令传给Terraform。所以即使地址改对了,也要用单引号把资源地址包起来,避免shell解析。
最终可用的导入命令
terraform import 'module.users.user_jons.git.github_membership.membership_jons' org:jonsh
额外检查项
- 确认所有模块路径正确,
./users/、./jons/、./git/目录确实存在对应配置文件 - 先跑
terraform plan验证配置合法性,确保Terraform能识别到这个github_membership资源 - 注意
github_membership资源需要username必填参数,虽然导入时可能暂时不报错,但后续apply会出问题,建议先补全配置
内容的提问来源于stack exchange,提问作者annn
相关产品推荐
相关产品推荐

