本文共 1879 字,大约阅读时间需要 6 分钟。
一,引言
上篇文章我们简单介绍了通过基础设施管理工具Terraform来统一管理复杂的云基础设施资源。作为入门演示,我们使用Terraform部署Azure资源组的方式感受到了iac工具带来的强大便利。接下来,我们将详细介绍Terraform语法,从代码的角度更好地理解Azure各个资源模块的使用方法,以便更高效地部署资源。
--------------------Azure Terraform 系列--------------------
二,正文
1,Azure Providers
Terraform作为一个可扩展的工具,通过Provider支持新的基础架构。Provider可以理解为上游API的逻辑抽象,他们负责理解API交互并暴露资源。不同云厂商都需要提供一个Provider来实现对自家基础设施的统一管理,例如Azure、AWS、GCP、Kubernetes、阿里云等。官方罗列的Providers数量超过600个。
如果你想了解具体的Terraform Providers,可以点击此链接查看:[链接]。
那么,如何指定Terraform Azure Provider?
provider "azurerm" { version = "~>2.0" features {} } - version ="~>2.0":表示我们要使用Azure Provider的版本为>2.0。
- features:表示自定义某些Azure提供程序资源的行为。对于Azure Provider的版本2.x,features字段是必要的。如果使用的是1.x版本,则不需要features。
你可以通过terraform init来验证以上解释。
2,基本的Terraform 配置文件
我们知道,Terraform通过定义资源模块来创建和管理云资源。以下是一个基本的Terraform配置文件示例:
resource "azurerm_resource_group" "example" { name = "Web_Test_TF_RG" location = "East Asia" } - resource:表示我们将创建一个类型为“azurerm_resource_group”的资源组。
- example:表示我们为当前新创建的资源组命名为“Web_Test_TF_RG”。
- name:定义资源组的名称为“Web_Test_TF_RG”。
- location:定义资源组的位置为“East Asia”。
执行部署计划后,Terraform会在项目文件夹中生成terraform.tfstate和.terraform.tfstate.lock.info文件。
3,Terraform 状态管理
执行`terraform apply`命令后,Terraform会在项目文件夹中生成以下文件:
- terraform.tfstate:包含已部署到Azure的所有状态信息。
- .terraform.tfstate.lock.info:表示部署过程中加锁的文件。
有人可能会问:为什么要加锁?
原因很简单,类似于对数据库的操作,对同一数据的修改或删除需要加锁处理。Terraform的状态文件加锁也是出于同样的道理。
4,Terraform扩展知识点
你知道Azure有多个版本,常用的有Azure Global和Azure China。如果我们在Terraform的Provider中不指定Azure环境,Terraform会默认将资源部署到Azure Global。如果使用Azure China(世纪互联版的Azure),则必须在Provider中指定Azure环境。
environment的可能取值包括:
- public(默认)
- usgovernment
- german
- china
如果不想在Provider中指定云环境,可以通过设置环境变量来实现:
setx ARM_ENVIRONMENT china
完整示例:
provider "azurerm" { version = "~>2.0" environment = "china" features {} } 今天的分享到此结束。虽然没有介绍新的内容,但通过对代码参数的介绍,让我们能够更好地理解Terraform。
三,结尾
参考资料:[链接] 作者: 版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。