如何配置Terraform azurerm后端连接Azure存储状态文件
AzureRM Terraform后端配置问题解答
key字段填写规则
这个key字段和身份验证用的access_key完全不是一回事,它指代的是状态文件在指定Blob容器内的存储路径+文件名,你可以自定义取值:
- 单项目单环境场景下,直接填
terraform.tfstate即可,状态文件会直接存到你配置的tfstate容器根目录 - 多项目/多环境需要隔离状态的场景,填带虚拟路径的文件名即可,比如
prod/east-cn/vpc/terraform.tfstate、test/app-cluster/terraform.tfstate,Terraform会自动识别路径,不会和其他状态文件冲突。
配置块放置规则
这段后端配置属于Terraform核心配置,不需要放到特殊位置,遵守两个规则即可:
- 必须放在当前Terraform项目的根目录下,所有后缀为
.tf的文件都会被Terraform自动扫描加载,行业常规做法是把这段配置单独存为backend.tf(也可以放到versions.tf这类全局配置文件里),和业务资源配置、provider配置分开,便于后续维护。 - 不要在配置里硬编码
access_key值,硬编码提交到代码仓库会有严重的密钥泄露风险。你可以在本地提前登录Azure CLI,Terraform初始化时会自动拉取存储账户的访问密钥,完全不需要在配置里写access_key字段;如果是流水线场景,也可以通过terraform init的命令行参数传入密钥,不要落盘到配置文件里。
正确配置示例
terraform { backend "azurerm" { storage_account_name = "tf-sa" container_name = "tfstate" key = "prod/demo-project/terraform.tfstate" } }
配置完成后,在项目根目录执行terraform init,Terraform会自动校验存储账户连通性,在你指定的key路径下生成初始状态文件,不需要提前手动在存储账户里创建文件。
内容的提问来源于stack exchange,提问作者itye1970
相关产品推荐
相关产品推荐

