我们都知道在执行部署计划之后,当前目录中就产生了名叫 “” 的 Terraform 的状态文件,该文件中记录了已部署资源的状态。默认情况下,在执行部署计划后,Terraform 的状态文件会存储在本地,但是这样往往就造成一些弊端:
(1)不适用团队之间协助,就好比在数据库中对同一条数据进行操作时,就会引起异常
(2)状态文件中包含一些机密信息,会造成一定的机密泄露
(3)如果不慎将本地的状态文件删除掉的话,已执行部署计划的资源的管理将很难在通过 Terraform 进行管理
所以,Terraform 是支持在远端存储状态文件,也就是在 Azure Storage Account 中存储远端状态文件,Terraform 状态的存储是由一个称之为Backend的组件决定的,local state使用的是local backend。并且其他所有的Backend在使用之前都需要在模板中显式定义并通过 terraform init 来实现加载和配置。
二,正文 1,创建状态文件存储账户转到Azure Portal 上,点击 “+ Create a resource”,输入 “Storage account“ 进行搜索,并且点击 ”create“
输入以下参数:
Resource group 选择:”Web_Test_TF_RG“
Storage account name:”cnbateterraformstorage“
Location:”(Asia Pacific) East Asia“
Performance:”Standard“
Account kind (账户类型)选择:”BlobStorage“
Replication (复制)选择:”Locally-redundant storage(LRS)“ (本地冗余存储(LRS))
点击 ”Review + create“ 进行创建预校验
校验完成后,点击 ”Create“ 进行创建操作
稍等片刻,等待创建完成后,点击 ”go to resource“ 跳转到资源可以查看创建的资源。
选择 “Blog service =》Containers”,点击页面上的 “+ Container” 添加存储状态文件的 Container
Name:"terraform-state"
Public access level:“Private(no anonymous access)”
点击 “Create” 进行创建。
可以看到刚刚创建容器
复制存储账户的访问密钥,稍后会有用
2,创建 Azure Key Vault(密钥保管库)回到 Azure Portal 首页,点击 ”+ create a resource“,输入”Key Vault“ 进行搜索,点击 ”Create“ 创建
输入相关参数:
Resource group 选择:”Web_Test_TF_RG“
Key vault name:”cnbate-terraform-kv“
Region:”East Asia“
Pricing tier:”Standard“
点击 ”Review + create“ ,创建预校验。
预校验完成后,点击 ”Create“ 进行创建操作
创建完成后,可以点击 ”Go to resource“ 查看创建好的资源