上篇文章开始,咱们简单介绍了如下经过基础设施管理工具----- Terraform,经过它来统一管理复杂的云基础设施资源。做为入门演示,使用Terraform 部署Azure 资源组的方式直观的感觉到iac 工具带来的强大便利。接下来,今天介绍 Terraform 语法详解,从代码的角度来理解Azure 各个资源模块更好的理解若是部署资源。html
-------------------- Azure Terraform 系列 --------------------数据库
Terraform 做为同一个能够可扩展的工具,是经过 Provider 来支持新的基础架构。Provider 是上游API的逻辑抽象。他们负责理解API交互并暴露资源。咱们能够将 Provider 能够理解为各个云厂商提供的与云资源交互的后端驱动,不一样的基础设施提供商都须要提供一个Provider来实现对自家基础设施的统一管理,例如咱们熟知的 Azure,AWS,GCP,Kubernetes,Aliyun等等。根据官方罗列的 官方 Providers 和验证过的 Providers,超过了600多个。后端
你们能够点击此链接查看具体的 Terraform Providers :https://registry.terraform.io/browse/providersbash
那么咱们想指定 Terraform Azure Provider 怎么写?架构
provider "azurerm" { version = "~>2.0" features {} }
version ="~>2.0" ,表示咱们要使用 azure provider 的版本为 >2.0app
features:表示自定义某些Azure提供程序资源的行为,咱们目前使用的是 azure provider 的版本 2.x,若是使用的 azure provider 的版本为 1.x,则不须要 featureside
terraform init 来验证以上的解释工具
(1)provider version > 2.0spa
(2)provider version = 1.33code
resource "azurerm_resource_group" "example" { name = "Web_Test_TF_RG" location = "East Asia" }
resource:表示咱们将建立类型为 “azurerm_resource_group” 新的资源组
example:表示咱们为当前新建立的资源组的 terraform module 起的名称
当前新建立的资源组,咱们为其定义了两个参数,分别为 “name” 和 “location”
name:表示为当前即将建立的资源组的名称为 “Web_Test_TF_RG”
location:表示当前资源组所在的位置为 “East Asia”
接下就是执行部署计划的过程了 (plan 生成执行计划过程我就不在演示了)
terraform apply
执行计划部署完成后,会在Terraform 项目文件夹中生成 “terraform.tfstate” 的文件和 “.terraform.tfstate.lock.info”的文件
terraform.tfstate:当前文件中包含了由于它包含有关已部署到Azure的内容的全部状态信息
terraform.tfstate.lock.info:这个文件从名字上就能够看出来,部署过程当中加锁。这时候就有人疑惑了,为何要加锁 ?
缘由很简单,就那操做数据库来讲,对同一数据的修改,或者删除的时候,须要加锁处理。这里的terraform 的状态文件加锁也是一样的道理。
其实咱们都知道,Azure 有好几个版本,咱们通常经常使用的就是 Azure Global,Azure China,若是咱们在 Azure Provider 中不指定哪一个Azure 环境,Terraform 会默认认为咱们是将云资源部署在 Azure Global 上的。若是咱们用的是Azure China(世纪互联版的Azure),那我就必须得在 Provider 中指定Azure 环境
environment 的值可能为:
(1)public(默认)
(2)usgovernment
(3)german
(4)china
注意:若是不想在Provider 中指定云环境,咱们能够设置环境变量
setx ARM_ENVIRONMENT china
完整示例
provider "azurerm" { version = "~>2.0" environment = "china" features {} }
ok,今天的分享就到此结束,今天也没有介绍新的内容,基本上就是对昨天代码的参数介绍,让咱们可以更好的理解 Terraform 。
φ(゜▽゜*)♪是🐱🏍🐱🏍🐱🏍🐱🏍🐱🏍!
参考资料:Terraform 官方,Terraform 注册表
做者:Allen
版权:转载请在文章明显位置注明做者及出处。如发现错误,欢迎批评指正。