博客
关于我
Azure Terraform(二)语法详解
阅读量:397 次
发布时间:2019-03-05

本文共 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。

三,结尾

参考资料:[链接] 作者: 版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
你可能感兴趣的文章
python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
查看>>
python与excel
查看>>
Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
查看>>
python与flask_Python编程中flask的简介与简单使用
查看>>
python与图灵机器人交互(WXPY版本)
查看>>
python与运算符_python运算符
查看>>
python两个列表获取交集,并集,差集
查看>>
python两个字典合并,两个list合并
查看>>
Python两个版本共存时,命令行升级pip
查看>>
Python两个版本共存时,怎么验证是否安装成功 scrapy
查看>>
Python两个版本共存时,通过pip安装Scrapy
查看>>
python两组变量的相关关系散点图_变量是什么?变量间的两种关系——函数关系和相关关系(小学版)...
查看>>
Python中 pass语句的作用
查看>>
python中 urllib, urllib2, httplib, httplib2 几个库的区别
查看>>
python中 yaml库 & json库 & xmltodict库使用
查看>>
python中 将你的名字转化成为二进制并输出
查看>>
Python中*args 和**kwargs的用法
查看>>
Python中*args 和**kwargs的用法
查看>>
Python中*args和**kwargs的使用
查看>>
python中0、1、True、False、if条件
查看>>